Seite 1 von 1
Problem beim Anlegen einer DSN
Verfasst: 16.03.2016 10:45
von Pelagio
Ich habe Probleme eine SQL Datenbank zu öffnen, genauer gesagt eine DSN zu erstellen.
Es kommt immer die Fehlermeldung:
'1 ODBC: SQL Success = k'.
Allerdings hatte ich mit diesem Source schon eine Exe unter PB 5.30 erstellt und diese Exe funktioniert.
Ich wollte jetzt kleinere Änderungen vornehmen und bekomme unter PB 5.42 die oben genannte Fehlermeldung.
Ich dachte erst das Problem liege am Computer, da ich einen neuen gestellt bekommen habe (Umrüstung von XP auf Win7)
und in diesem Zusammenghang auch meine lokalen Adminrechte verloren habe.
Aber sollte das Problem wirklich daran liegen, so dürfte die Exe-Datei auch nicht funktionieren.
Ich gehe deshalb davon aus das PB5.42 das Problem verursacht.
Im Augenblick bin ich

und brauche Eure Hilfe

Re: Problem beim Anlegen einer DSN
Verfasst: 16.03.2016 10:48
von ts-soft
Nutzt Du vielleicht 64-Bit? Die meisten ODBC-Treiber liegen nur in einer 32-Bit Version vor und lassen sich demnach nur
mit der 32-Bit Version von PureBasic öffnen!
Re: Problem beim Anlegen einer DSN
Verfasst: 16.03.2016 11:04
von Pelagio
Hallo ts-soft,
hätte ich vorab schon sagen sollen, habe ich nicht daran gedacht, Tschuldigung.
Ich benutze weiterhin 32-Bit.
Re: Problem beim Anlegen einer DSN
Verfasst: 16.03.2016 14:03
von Pelagio
Ich habe hier und da etwas ausprobiert und dabei herausgefunden das die Fehlermeldung doch Umpfangreicher ist.
Sie Besagt:
'ODBC: SQL Success = Komponente wurde in der Registrierung nicht gefunden.'
Ich habe auch versucht ein weiteres Programm zu aktivieren das mit
ODBC eine Exceltabelle ausliest.
Bei der alten Exe klappt es wenn ich aber eine neue Exe erstelle geht es nich mehr und es kommt der genannte Fehler.
Als Beispiel:
Code: Alles auswählen
#Treiber = "Microsoft Excel Driver (*.xls, *.xlsx, *.xlsm, *.xlsb)"
Enumeration
#Database
#ADD_DSN ; Add Data source
#CONFIG_DSN ; Configure (edit) Data source
#REMOVE_DSN ; Remove Data source
#ADD_SYS_DSN ; Add a system DSN
#CONFIG_SYS_DSN ; Configure a system DSN
#REMOVE_SYS_DSN ; Remove a system DSN
#REMOVE_DEFAULT_DSN ; Remove the default DSN
EndEnumeration
Define.c mNKS = 2
Define.s mCON, mDSN = "PBExcel_DSN"
Procedure.a DSN_Create(vFiles.s)
Shared mDSN, mCON
Protected pResult.a
mDSN = ReplaceString(GetFilePart(vFiles),".","_")
mDSN = Left(ReplaceString(mDSN," ","-"), 25)
mCON = "Server=SomeServer; Description=Description For Purebasic Excel-ODBC;DSN=" + mDSN + ";DBQ=" + vFiles + ";UID=;PWD=;"
If SQLConfigDataSource_(#Database, #ADD_DSN, #Treiber, mCON)
pResult = #True
EndIf
ProcedureReturn pResult
EndProcedure
Ansonsten bin ich noch keinen Schritt weiter

.
Re: Problem beim Anlegen einer DSN
Verfasst: 16.03.2016 14:26
von Kiffi
ich benutze das hier (von srod?) ohne Probleme:
Code: Alles auswählen
#ODBC_ADD_DSN = 1
#ODBC_CONFIG_DSN = 2
#ODBC_REMOVE_DSN = 3
Procedure.i AddConnection(driver$, connectString$)
Protected result, base, *mem.CHARACTER, *ptr.CHARACTER, len, i
If driver$ And connectString$
len = Len(connectString$)
base = AllocateMemory((len + 2)<<(SizeOf(CHARACTER)-1))
If base
*mem = base
*ptr = @connectString$
;Switch all ; for nulls.
For i = 1 To len
If *ptr\c <> ';'
*mem\c = *ptr\c
EndIf
*mem + SizeOf(CHARACTER)
*ptr + SizeOf(CHARACTER)
Next
result = SQLConfigDataSource_(0, #ODBC_ADD_DSN, driver$, base)
FreeMemory(base)
If result
ProcedureReturn 1
EndIf
EndIf
EndIf
EndProcedure
Procedure.i RemoveConnection(Driver.s,DSN.s)
Protected Result
Result=SQLConfigDataSource_(0,#ODBC_REMOVE_DSN,Driver,"DSN="+DSN)
If Result
ProcedureReturn 1
EndIf
EndProcedure
Grüße ... Peter