Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

  • Autor

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

  • Autor

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

  • Autor
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:

  • Autor
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:

  • Autor
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 Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.