![](https://www.fachinformatiker.de/uploads/set_resources_14/84c1e40ea0e759e3f1505eb1788ddf3c_pattern.png)
bigpoint
-
Gesamte Inhalte
1.243 -
Benutzer seit
-
Letzter Besuch
Inhaltstyp
Profile
Forum
Downloads
Kalender
Blogs
Shop
Beiträge von bigpoint
-
-
Original geschrieben von SwordMaster
Den ODBC treiber richte ich einfach ein, indem das Installationsprogramm die nötigen Werte und Schlüssel in dei Regestry scheibt.
e... was hat ODBC Treiber mit Registy zu tun, habe noch nie gehört ?!?!?
Aber wie krieg ich es hin, dass die einträge in die Regestry, von der eingabe in das eingefügte Dialogfeld abhängen?
End wieder ist es zu früh, oder ich verstehe dich überhaupt nicht ;((
-
Original geschrieben von Troll
So ich hoffe ich konnte euch weiterhelfen.
Troll
Vielen Dank für deine Hilfe
-
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 ????
-
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:
-
Original geschrieben von Klaus74
hallo,
habe eine größere abfrage im sql server 7.0 gebastelt.
kriege aber leider ein timeout.
kann man dieses irgendwie zurücksetzen?
dann bräuchte ich das ding nicht amzustriken.
danke im voraus.
mfg
klaus
nicht dass ich wuste , wie lange läuft den der Server bis er in timeout kommt ??
-
Original geschrieben von Klotzkopp
propset.AddProperty(DBPROP_UPDATABILITY, (DWORD)0);
Error C2668: 'AddProperty' : Mehrdeutiger Aufruf einer ueberladenen Funktion
-
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:
-
Original geschrieben von Klotzkopp
Ich würde die ganze Zeile auskommentieren.
das hab ich auch versucht, leider ohne Erfolg
-
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 );
-
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
-
Noch einen Problem mit OLE DB
Ich muß mit dem Progi auf SQL Server 2000 sowohl mit auch ohne Partitionierten Sichten.
Wenn ich die DB ohne Partitionierten Sichten auswähle als verbindungs- DB dann funk wunder bar sobald ich aber auf die Partitionierte Sichten gehen knack hier
hr = CCommand<CAccessor<CTabell> >::Open(session, "SELECT * FROM dbo.Tabell", &propset);
, in hr steht
-2147217887
-
eigentlich logisch :eek:
Vielen Dank
-
Wie kann ich DBTIMESTAMP in CString Format(TTMMJJJJ)
umwandeln ???
-
Original geschrieben von Saesh
SQL-Datenbanken im Vergleich
MS SQL
* Clientsoftware auf allen Arbeitsplätzen nötig
* Zugriff auf Datenbank über ODBC, dadurch eventuell Probleme durch Verwendung von verschiedenen ODBC-Treibern
MS ACCESS
* Zugriff auf Datenbank über ODBC, dadurch eventuell Probleme durch Verwendung von verschiedenen ODBC-Treibern
Damit bin ich nicht einverstanden
Meinst Du nur durch ODBC
-
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?
ja es ist der Fall, aber trozd verstehe ich es nicht und ist es überhaupt sauber ?
-
Hallo,
also jetzt funktioniert obwohl ich es nicht verstehe warum ;(
so hat nicht funktioniert:
das habe ich in Heder
CCommand<CAccessor<CTabell> > cmd;
[/PHP]Das in cpp
[PHP]
hr = cmd.Open(session, "SELECT * FROM dbo.Tabell ", &propset);
if (FAILED(hr))
return hr;
return hr;
// return MoveNext(); wenn so dann kriege ich Fehlerso funkt nur cpp:
hr = CCommand<CAccessor<CTabell> >::Open(session, "SELECT * FROM dbo. Tabell", &propset);
if (FAILED(hr))
return hr;
return MoveNext();
[/PHP]Irgend wie ist es komisch, oder ?
-
das kommische daran ist das sie schleife soviel mal durch läft wieviel Datensetze da drin sind
-
Original geschrieben von Klotzkopp
Ja, das sieht gut aus. Sind in der Tabelle mehrere Felder?
Falls ja, schreib bitte mal die tatsächlichen Feldnamen statt des * in das Select-Statement. Kann sein, dass die Reihenfolge in der COLUMN_MAP nicht auf die Reihenfolge der Felder passt, wie das Select sie liefert.
Es sind mehre Spalte und die stehen in COLUMN_MAP habe auch richtige Reihenfolge
Ich habe auch die tatsächlichen Feldnamen statt des * in das Select-Statement angegeben !?
Egal welchen Feldname ich aufrufe steht nur 0 ?!?!?
Irgend wie verstehe ich es nicht ;(
-
Original geschrieben von Klotzkopp
Hast du MoveNext aufgerufen?
ich rufe MoveNext doch richtig auf, oder
-
Original geschrieben von computercrustie
Hast du nicht ? :
Hmm... ok, als erste ich habe es nicht geschrieben !!!!!!!!!!
Und als zweite wir lassen es OK !!!!!!
-
Original geschrieben von computercrustie
in Anbetracht der Tatsache, dass er die Aufgabe nicht lösen konnte, wohl etwas zu kryptisch.
:uli
So was habe ich nie behauptet
-
Original geschrieben von Klotzkopp
Hast du MoveNext aufgerufen?
So mache ich es:
OpenDB opendb;
opendb.SetDBParams(....);
opendb.OpenDataSource();
while(S_OK == opendb.cmd.MoveNext())
{
int k = opendb.m_ver;
}
[/PHP]Es ist sehr mehrwürdig denn wenn ich so mache
[PHP]
hr = cmd.Open(session, "SELECT TOP 10 * FROM dbo.Tabell", &propset);
OpenDB opendb;
opendb.SetDBParams(....);
opendb.OpenDataSource();
int zeahler = 0;
while(S_OK == opendb.cmd.MoveNext())
{
zeahler++;
int k = opendb.m_ver;
}
[/PHP]Kriege ich auch in zeahler 10 zurück
-
Original geschrieben von Klotzkopp
Es geht auch ohne if
#include <iostream> int main() { for(int i=0; i<37; ++i) { std::cout << (i/9%2 ? 19-i%18 : i%18+1) << "\n"; } }
Respekt :mod:
-
Original geschrieben von computercrustie
Was hast du ?
Das ist doch der Fall.
ich sehe 4 if anweisungen , aber egal ich glaube mit einem if ist es nicht lösber
DLL erstellen
in C++: Compiler, IDEs, APIs
Geschrieben
Was für einen Compeiler benutzt Du ???