Klotzkopp Geschrieben 2. Februar 2004 Teilen Geschrieben 2. Februar 2004 Das ist DB_E_ERRORSOCCURRED. Ruf mal AtlTraceErrorRecords mit dem HRESULT auf, während das Programm im Debugger läuft. Das sollte eine Beschreibung des Fehlers ins Output-Fenster schreiben. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bigpoint Geschrieben 2. Februar 2004 Autor Teilen Geschrieben 2. Februar 2004 Fehler: ATL: OLE DB Error Record dump for hr = 0x80040e21 ATL: Row #: 0 Source: "Microsoft OLE DB Provider for SQL Server" Description: "Fehler bei einem aus mehreren Schritten bestehenden OLE DB-Vorgang. Prüfen Sie die einzelnen OLE DB-Statuswerte, falls vorhanden. Daten wurden nicht verarbeitet ." Help File: "(null)" Help Context: 0 GUID: {0C733A63-2A1C-11CE-ADE5-00AA0044773D} ATL: OLE DB Error Record dump end Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bigpoint Geschrieben 2. Februar 2004 Autor Teilen Geschrieben 2. Februar 2004 ich glaube es liegt in der Spalte denn hier sage ich den SQL Server das ich die daten verändern will, was muss ich hier schreiben wenn ich nur ein select ausführen will propset.AddProperty(DBPROP_UPDATABILITY, DBPROPVAL_UP_CHANGE | DBPROPVAL_UP_INSERT | DBPROPVAL_UP_DELETE ); Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 2. Februar 2004 Teilen Geschrieben 2. Februar 2004 Ich würde die ganze Zeile auskommentieren. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bigpoint Geschrieben 2. Februar 2004 Autor Teilen Geschrieben 2. Februar 2004 Original geschrieben von Klotzkopp Ich würde die ganze Zeile auskommentieren. das hab ich auch versucht, leider ohne Erfolg Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 2. Februar 2004 Teilen Geschrieben 2. Februar 2004 Und was ist damit: propset.AddProperty(DBPROP_UPDATABILITY, 0); [/Code] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bigpoint Geschrieben 2. Februar 2004 Autor Teilen Geschrieben 2. Februar 2004 Original geschrieben von Klotzkopp Und was ist damit: propset.AddProperty(DBPROP_UPDATABILITY, 0); error C2668: 'AddProperty' : Mehrdeutiger Aufruf einer ueberladenen Funktion ich glaube ich werde verückt :confused: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 2. Februar 2004 Teilen Geschrieben 2. Februar 2004 propset.AddProperty(DBPROP_UPDATABILITY, (DWORD)0); [/Code] Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bigpoint Geschrieben 2. Februar 2004 Autor Teilen Geschrieben 2. Februar 2004 Original geschrieben von Klotzkopp propset.AddProperty(DBPROP_UPDATABILITY, (DWORD)0); Error C2668: 'AddProperty' : Mehrdeutiger Aufruf einer ueberladenen Funktion Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Guybrush Threepwood Geschrieben 2. Februar 2004 Teilen Geschrieben 2. Februar 2004 Probier mal den 2ten Parameter in ein long oder bool anstatt in ein DWORD zu casten. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bigpoint Geschrieben 5. Februar 2004 Autor Teilen Geschrieben 5. Februar 2004 Original geschrieben von Guybrush Threepwood Probier mal den 2ten Parameter in ein long oder bool anstatt in ein DWORD zu casten. Der Compeiler schluckt es, aber in hr steht -2147217887:confused: Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
bigpoint Geschrieben 5. Februar 2004 Autor Teilen Geschrieben 5. Februar 2004 Original geschrieben von Klotzkopp Ich kann mir das nur so erklären, dass dieser Code in einer Memberfunktion einer Klasse steht, die von CCommand abgeleitet ist. Ist das der Fall? Ok jetzt ganz langsam, ich habe eine *.h und *.cpp in *.h steht : class CTabell { public: CTabell() { memset( (void*)this, 0, sizeof(*this) ); }; // Die variablen von CTabell BEGIN_COLUMN_MAP(CTabell) //Die Spalten von CTabell END_COLUMN_MAP() }; class testSet : public CCommand<CAccessor<CTabell> > { public: // Setzen der Parameter für den Zugriff auf die richtige DB. void SetDBParams(const CString& server, const CString& catalog, const CString& user, const CString& passwd); // DataSource und Session öffnen HRESULT OpenDataSource(); private: CString mServer; CString mCatalog; CString mUser; CString mPasswd; }; [/PHP] in *.cpp steht die SetDBParams und OpenDataSource : [PHP] HRESULT OpenDB::OpenDataSource() { CDataSource db; HRESULT hr = S_OK; CDBPropSet dbinit(DBPROPSET_DBINIT); // Windows Authenzifirung oder SQL Server if(!mUser.IsEmpty()) { dbinit.AddProperty(DBPROP_AUTH_USERID, mUser); dbinit.AddProperty(DBPROP_AUTH_PASSWORD, mPasswd); } else { // Windows-User dbinit.AddProperty(DBPROP_AUTH_INTEGRATED, OLESTR("SSPI")); } dbinit.AddProperty(DBPROP_AUTH_PERSIST_SENSITIVE_AUTHINFO, false); dbinit.AddProperty(DBPROP_INIT_CATALOG, mCatalog); dbinit.AddProperty(DBPROP_INIT_DATASOURCE, mServer); dbinit.AddProperty(DBPROP_INIT_LCID, (long)1031); dbinit.AddProperty(DBPROP_INIT_PROMPT, (short)4); hr = db.OpenWithServiceComponents(_T("SQLOLEDB.1"), &dbinit); if (FAILED(hr)) return hr; CSession session; session.Open(db); if (FAILED(hr)) return hr; CDBPropSet propset(DBPROPSET_ROWSET); propset.AddProperty(DBPROP_MULTIPLECONNECTIONS, true); propset.AddProperty(DBPROP_IRowsetScroll, true); propset.AddProperty(DBPROP_IRowsetChange, true); propset.AddProperty(DBPROP_UPDATABILITY, (long)0 ); if(FAILED(hr = CCommand<CAccessor<CTabell> >::Open(session, "SELECT * FROM dbo.Tabell ", &propset))) { AtlTraceErrorRecords(hr); return hr; } return MoveNext(); } so rufe ich es: OpenDB opendb; opendb.SetDBParams(....); opendb.OpenDataSource(); while(S_OK == opendb.cmd.MoveNext()) { int k = opendb.m_ver; } [/PHP] gibt es eine andere Möglichkeit, ist es überhaupt korrekt was ich mache ???? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.