Erstellung DSN Access 2007 (*.accdb)
Verfasst: 26.06.2014 20:53
Hallo Leute,
ich habe mich erfolgreich mit der Programmierung von Access-Dateien (*.mdb) verstanden.
Erstellen, Füllen, Lesen und dies wollte ich eigentlich auch weiterhin nicht missen. Inzwischen hat, ab Access 2007, Microsoft eine neues Format eingeführt '*.ACCDB' .
In meinem jugendlichen Leichtsinn
bin ich davon ausgegangen das ich nur den Treiber ändern muss, von 'Microsoft Access Driver (*.mdb)' auf 'Microsoft Access Driver (*.mdb,*.accdb)', und alles andere bleibt wie gehabt. Pustekuchen! Leider scheint dies nicht der Fall zu sein und so wollt ich Euch fragen welche Änderungen wurden mit dem neuen Format noch eingeführt?
Jedenfalls bekomme ich immer die Fehlermeldung 'Komponente wurde in der Registrierung nicht gefunden'. Was immer das auch heißen soll. Dies ist mein Code zur Erstellung DSN.
Ich kann zwar auch weiterhin mit ' *mdb' Dateien arbeiten aber da es dies neue Format gibt, wollte ich auch damit versuchen zu arbeiten.
ich habe mich erfolgreich mit der Programmierung von Access-Dateien (*.mdb) verstanden.
Erstellen, Füllen, Lesen und dies wollte ich eigentlich auch weiterhin nicht missen. Inzwischen hat, ab Access 2007, Microsoft eine neues Format eingeführt '*.ACCDB' .
In meinem jugendlichen Leichtsinn
Jedenfalls bekomme ich immer die Fehlermeldung 'Komponente wurde in der Registrierung nicht gefunden'. Was immer das auch heißen soll.
Code: Alles auswählen
; Access DSN Erstellen
; OK = DSN_Create(Files.s)
Procedure.a DSN_Create(vFiles.s)
Shared mDSN, mCON
Protected n.i, pResult.i, *pMemory
Protected pTreiber.s = "Microsoft Access Driver (*.mdb,*.accdb)"
If OpenLibrary(1, "ODBCCP32.DLL")
mDSN = ReplaceString(GetFilePart(vFiles),".","_")
mCON = "Server=SomeServer; Description=Description For Purebasic MDB-ODBC;DSN=" + mDSN + ";DBQ=" + vFiles + ";UID=;PWD=;"
*pMemory = AllocateMemory(Len(mCON))
CopyMemory(@mCon, *pMemory, Len(mCon))
For n=1 To Len(mCON)
If PeekB(*pMemory+n-1)=Asc(";"): PokeB(*pMemory+n-1, #False): EndIf
Next n
pResult = CallFunction(1, "SQLConfigDataSource", 0, #ADD_DSN, @pTreiber, *pMemory)
SQLConfigDataSource_(0, #ADD_DSN, #Treiber, *pMemory)
FreeMemory(*pMemory): CloseLibrary(1)
If pResult: pResult = #True: EndIf
EndIf
ProcedureReturn pResult
EndProcedure Ich kann zwar auch weiterhin mit ' *mdb' Dateien arbeiten aber da es dies neue Format gibt, wollte ich auch damit versuchen zu arbeiten.