Veröffentlicht 26. Mai 200322 j Hi, CRecordset hat ja vier verschiedene GetVieldValue() Methoden mit unterschiedlichen Parametern. Die erste sieht so aus: void GetFieldValue( LPCTSTR lpszName, CDBVariant& varValue, short nFieldType = DEFAULT_FIELD_TYPE ); und die 4. so: void GetFieldValue( short nIndex, CString& strValue ); Wenn ich GetVieldValue jetzt aber folgendermaßen aufrufe, bekomme ich immer einen Error, dass nicht die Paramter der 1.Methode übergeben wurden:confused: CString strValue; Record.GetFieldValue(3,&strValue); [/PHP] Gruß Guybrush
26. Mai 200322 j Du übergibst einen Zeiger, die Funktion erwartet aber eine Referenz. Mach das & weg.
26. Mai 200322 j void GetFieldValue( short nIndex, CString& strValue ); Offenbar will GetFieldValue eine CString-Referenz haben. Du übergibst aber einen Zeiger; oder?
26. Mai 200322 j Autor Äh.. das kapiere ich jetzt aber, mal wieder, nicht:rolleyes: Müsste ohne das & nicht eine Kopie des Objekts angelegt werden?
26. Mai 200322 j Eine Referenz ist doch ein konstanter Zeiger (kann nicht verbogen werden), der bei Benutzung automatisch dereferenziert wird. Eine Kopie vom referenzierten Objekt wird dabei nicht gemacht.
26. Mai 200322 j In der MSDN steht, dass GetFieldValue zwei Arten von Ausnahmen werfen kann: CDBException* und CMemoryException*. Ich tippe auf ersteres. Fang die Ausnahme auf, dann kannst du weitere Informationen rausholen: try { // Dein Aufruf } catch( CDBException* pEx ) { CString strMsg; strMsg.Format( "%d\n%s\n%s", pEx->m_nRetCode, pEx->m_strError, pEx->m_strStateNativeOrigin ); MessageBox( strMsg ); }[/CODE]
26. Mai 200322 j Autor Hab ich auch schon versucht. Egal welche von beiden Exceptions ich abfange, er kommt gar nicht bis in den catch Block. Die Meldung kommt sobald GetVieldValue() ausgeführt wird.
26. Mai 200322 j Wie ist denn der genaue Wortlaut der Exception? Gibt es vielleicht im Trace-Fenster genauere Informationen, wenn du das Programm im Debugger ausführst?
26. Mai 200322 j Autor Oh ja, da steht noch mehr:rolleyes: Error: GetFieldValue operation failed on field 4. Ungültiger Cursorzustand State:24000,Native:0,Origin:[Microsoft][ODBC Driver Manager] Nicht abgefangene Ausnahme in Downloadserver.exe: 0xE06D7363: Microsoft C++ Exception.
26. Mai 200322 j Autor Ich glaub ich hab den Fehler gefunden. Anscheinend befinden sich gar keine Records im Recordset:floet: Jetzt muß ich nur noch rausbekommen warum nicht, ist bestimmt ein Fehler im SQL String. Danke für die Hilfe! Gruß Guybrush
27. Mai 200322 j Autor Ich hät da noch ne Frage: Warum kann ich nicht zweimal den selben Wert mit GetFieldValue aus dem Rowset auslesen?
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.