Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Access und ODBC

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
28.09.2004, 15:03 Uhr
BAR



Hallo allerseits,

Nach 3 stündigem durchforsten der MSDN und einiger Foren habe ich zwar viel gefunden aber irgendwie kann ich das Alles trotzdem nicht zusammenfügen und gescheit benutzen. Es geht um folgendes:

In einer *.mdb Datenbank (bekannterweise Access) sind tausende von Routeninformationen gespeichert. Ich müsste nun eine Datei auslesen (kein Problem, schon mehrmals gemacht und funktioniert wunderbar) und aus dieser Datei die Routeninformation holen, diese mit der Spalte "RouteNr" in der Tabelle "T_Route" vergleichen und dann zwei Spalten in der Datenbank "weitergehen" (wäre Spalte "TD1") wo dann meine gewünschte Information steht und welche ich dann zum weiterverarbeiten brauche. Mein Problem beschränkt sicht nur auf die Datenbank. Das fängt schonmal beim öffnen an. Ich habe unter anderem folgendes gefunden:


C++:
SQLConfigDataSource(NULL, ODBC_ADD_DSN, "Microsoft Access Driver (*.mdb)",  
                   "DSN=Name\0"  
                   "Description=Meine Datenquelle\0"  
                   "FileType=MS Access\0"  
                   "DBQ=m_strEditDatabaseLocation\0"  
                   "MaxScanRows=20\0");

Die Member-Variable 'm_strEditDatabaseLocation' enthält den Pfad zu der Datenbank, der Rest sollte eigentlich auch stimmen (ich bin mir nur nicht ganz sicher wofür Description benutzt wird, ist das der Datenbankname oder wie?). 'odbcinst.h' habe ich bereits includet. Beim kompilieren gibt er folgende 2 Fehler aus:

Zitat:
error LNK2001: unresolved external symbol _SQLConfigDataSource@16


Zitat:
fatal error LNK1120: 1 unresolved externals

Warum? Was habe ich falsch gemacht? SQLConfigDataSource sollte er ja kennen? Da ich nichtmal das Öffnen der Datenbank hinkriege kann ich noch nicht sagen ob es dann mit dem auslesen etc. problemlos funktionieren wird, ich befürchte jedoch nichts gutes

Danke im Voraus
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
28.09.2004, 16:18 Uhr
Bruder Leif
dances with systems
(Operator)


Moin!

Wenn der Fehler im Linker auftritt, ohne daß der Compiler vorher gemeckert hat, würde ich mal ganz vorsichtig auf eine vergessene LIB tippen. Sicher, daß Du alles eingebunden hast?
--
Mit 40 Fieber sitzt man nicht mehr vor dem PC.
Man liegt im Bett.
Mit dem Notebook.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
28.09.2004, 16:54 Uhr
BAR




Zitat:
Bevor Sie ::SQLConfigDataSource verwenden können, müssen Sie die Header-Datei ODBCINST.H einlesen und die Importbibliothek ODBCINST.LIB binden
Tut mir Leid wenn ich sowas frage aber wie binde ich denn eine Lib ein? Per #import "odbcinst.lib" und #importlib "odbcinst.lib" gehts nicht.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
28.09.2004, 19:12 Uhr
Guybrush Threepwood
Gefürchteter Pirat
(Operator)


Ich weiß jetzt nicht genau was SQLConfigDataSource macht, aber ich würde es anders machen

Lege dir unter Windows eine ODBC Datenquelle zu der Datenbank an. Danach kannst du ganz einfach mit den CDatabase und CRecordSet Klassen die Datenbank bearbeiten und abfragen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
05.10.2004, 09:09 Uhr
BAR



Danke für die Antworten, hab es aber mittlerweile hingekriegt.

Guybrush: Dass ich manuell eine Datenquelle hätte anlegen können war mir bewusst, doch in der Applikation musste das so geregelt werden, dass alle Prozesse und Aufgaben im Programm selber gemacht werden. Der Benutzer soll keine neuen Datenquellen anlegen müssen etc. Falls noch jemand das selbe Problem haben sollte und hier danach sucht, die Lösung:


C++:
void CNameDeinerFunktion::CreateNewDataSource()
{
    UpdateData(TRUE);

    CString params;
    CString DBQ;
    
    DBQ = m_strEditDatabaseLocation;

    params.Format("DSN=%s|Description=%s|FileType=%s|DBQ=%s|", "RouteSort", "RouteSort Datasource", "MS Access", DBQ);
    
    char *paramsChar = new char[params.GetLength() + 1];
    strcpy(paramsChar, params);
    
    if(NULL != strtok(paramsChar, "|"))
        while (NULL != strtok(NULL, "|")){ }
    
    SQLConfigDataSource(NULL, ODBC_ADD_DSN, "Microsoft Access Driver (*.mdb)", paramsChar);
    delete paramsChar;

    UpdateData(FALSE);
}
So kann man ihm die gewünschten Parameter die neu angelegt werden sollen bei der Datenquelle angeben.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: