CRecordSet -> return ("ODBC"); - abfangen von ABBRUCH
-
Guten Morgen,
steh schon wieder mal vor einem neuen Problem (aber ohne diese würd das ja alles kein Spaß machen) und finde den Weg nicht.
In meinem Programm habe ich die Möglichgeit gegeben über einen Button eine ODBC Verbindung über dieses Windowsfenster zu wählen (da wo alle drin stehen, weiß nicht wie das heißt)
Dieses Fenster öffnet sich automatisch wenn ich in GetDefaultConnect ("ODBC") als Returnwert übergebe.
Wählt man eine Verbindung aus ist auch alles kein Problem.Entscheidet man sich für Abbrechen, dann stürzt das Prog ab, weil der Pointer auf die DB keinen gültigen Wert hat.
Leider hab ich aber keine Möglichkeit Gefunden, irgendeinen Rückgabewert auszuwerten.
Hat mir jemand ne Idee?
Vielen Dank.
Gruß
MAIK
-
try und catch drumbauen?
-
daran hab ich gerade schon "getüfftelt"
try
{
m_pSet->GetRecordCount();
}
catch (CFileException* e)
{
throw;
}und wenn das so stimmt funktionierts leider nicht.....
oder hab ich da nen fehler drin?
-
Machst du direkt nach Open() ein GetRecordCount() ?
[edit]
Öhm, nee, falsch gedacht,... vergiss meine Frage...
[/edit]
-
jup habs direkt an der Stelle eingefügt, an dem der externe Dialog für ODBC Auswahl beendet wird, damit ich rausfinden kann, auf was ich abfragen muss.
nach CRecordView::OnInitialUpdate();
Das mit dem GetRecordCout hat an dieser Stelle keine Funktion, mir ging es lediglich um den Zugriff. Hatte gehofft, dass z.B. der Pointer nen bestimmten Wert hat, wenn beim ODBC-Dialog ABBRUCH gedrückt wird.
Leider werder dies, noch hab ich irgendwas gefunden was ich für ne Abfrage verwenden kann
In der MSDN gibts auch noch ein Bsp. Prog --> catalog
aber auch das stürzt beim gleichen Problem ab
-
So, hier kommt eine Vermutung! Habe kaum Erfahrungen auf dem Gebiet, aber eine Idee:
Du müßtest deine Exception in eine CDBException casten bzw. so eine gleich fangen können.
... catch (CDBException* e) ...Und die hat dann zwei interessante Member:
m_nRetCode
und
m_strErrorDas einfachste wird sein, wenn du dir mal m_strError ausgeben läßt.
Vielleicht ist aber auch AFX_SQL_ERROR_CONNECT_FAIL der richtige Vergleichswert für dich. Musst mal ein bisserl suchen.

-
danke erst mal,
dann werd ich in diese Richtung weitermachen
-
hmpf