Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

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.

Geschrieben

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

Geschrieben

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 );

Geschrieben
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:

Geschrieben
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:

Geschrieben
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 ????

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...