Verwendung von SQLGetInfo
Klar kann man die Datenbank aus so öffnen. Per OpenDatabaseRequester() kann man ja eine auswählen. Ich möchte den Datenbanknamen dann in einer config speichern, um beim nächsten Programmstart die entsprechene Datenbank automatisch zu öffnen. Wäre alles kein Problem, wenn es nur um DBs ginge, die schon auf dem Rechner sind. Die liste ich z.Z. einfach in einer ComboBox auf. Ich hätte aber auch gern die Möglichkeit, eine Datenbankvernüpfung zu erstellen (z.B. zu einer DB auf nem anderen Rechner) und diese Datenbank dann auch beim nächsten Aufruf zu nutzen. Nur liefert mir OpenDatabaseRequester ja nicht den Namen, sondern nur die Nummer zurück.
Gruß,
bommel
Gruß,
bommel
PB 4
Du brauchst also ne Möglichkeit Dir die Vorhandenen ODBC-
Verknüpfungen anzuschauen
Im Windoof-Verzeichnis steht ne ODBC.ini die enthält spätestens
die seit dem letzten Systemstart schon vorhandenen ODBC-Verbindungen
Ansonsten kannst du die Registry an der relevanten Stelle auslesen.
Für User DSNs
"HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources"
Für System DSNs
"HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources"
zum Auslesen registry kannst das PBOSL-RegistryDings vom TS-Soft nehmen
http://www.purebasic.fr/german/viewtopi ... t=registry
Verknüpfungen anzuschauen
Im Windoof-Verzeichnis steht ne ODBC.ini die enthält spätestens
die seit dem letzten Systemstart schon vorhandenen ODBC-Verbindungen
Ansonsten kannst du die Registry an der relevanten Stelle auslesen.
Für User DSNs
"HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources"
Für System DSNs
"HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources"
zum Auslesen registry kannst das PBOSL-RegistryDings vom TS-Soft nehmen
http://www.purebasic.fr/german/viewtopi ... t=registry
pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
oder damit .. finzte im Original im Codearchiv auf purearea.net
Code: Alles auswählen
; German forum: http://robsite.de/php/pureboard/viewtopic.php?t=1378&highlight=
; Author: Manne
; Date: 16. June 2003 (updated on 26. July 2003)
;----------------------------------------------------------------------------------------------------
Procedure.s ListSubValue(topKey.l, sKeyName.s, Index.l, ComputerName.s)
GetHandle.l
hKey.l
dwIndex.l
lpName.s
lpcbName.l
lpftLastWriteTime.FILETIME
i.l
lhRemoteRegistry.l
lReturnCode.l
ListSubValue.s
If Left(sKeyName, 1) = "\"
sKeyName = Right(sKeyName, Len(sKeyName) - 1)
EndIf
If ComputerName = ""
GetHandle = RegOpenKeyEx_(topKey, sKeyName, 0, #KEY_ALL_ACCESS, @hKey)
Else
lReturnCode = RegConnectRegistry_(ComputerName, topKey, @lhRemoteRegistry)
GetHandle = RegOpenKeyEx_(lhRemoteRegistry, sKeyName, 0, #KEY_ALL_ACCESS, @hKey)
EndIf
If GetHandle = #ERROR_SUCCESS
lpcbName = 255
lpName = Space(255)
GetHandle = RegEnumValue_(hKey, Index, @lpName, @lpcbName, 0, 0, 0, 0)
If GetHandle = #ERROR_SUCCESS
ListSubValue = Left(lpName, lpcbName)
Else
ListSubValue = ""
EndIf
RegCloseKey_(hKey)
EndIf
ProcedureReturn ListSubValue
EndProcedure
;ergebnis.s = ListSubValue(sTopKey, sKeyName, 1, "")
;----------------------------------------------------------------------------------------------------
sTopKey.l = #HKEY_LOCAL_MACHINE
sKeyName.s = "\SOFTWARE\ODBC\ODBC.INI\ODBC Data Sources"
OpenConsole()
tmp.s=ListSubValue(sTopKey, sKeyName.s, 1,"")
While tmp
i+1
tmp.s=ListSubValue(sTopKey, sKeyName.s, i,"")
If tmp<>""
PrintN(tmp)
EndIf
Wend
Input()
CloseConsole()
; ExecutableFormat=Windows
; FirstLine=1
; EOF
pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Da Du die aktuell benutzte Datenbank ja irgendwann mal ausgesucht
und damit angeklickt haben musst um die ansprechend zu können
könntest Du Dir mal nen eigenen Requester coden der die vorhandenen
ODBC-Connects auswählbar anzeigt.
und damit angeklickt haben musst um die ansprechend zu können
könntest Du Dir mal nen eigenen Requester coden der die vorhandenen
ODBC-Connects auswählbar anzeigt.
pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
wenn du eine neue hinzufügen willst machst Du Dir
ne Reg-Datei und importierst die in die registry per
regedit dateiname mit parameter /s (silent)
die Position hast Du (im obigen Code steht die Position
der ODBC-Daten in der Registry)
Wichtig ist der Eintrag für die Connection selber und ein Eintrag in den ODC-Datasources
Leg Dir mal ne ODBC-Verknüpfung zu Fuss im ODBC-Manager an
und guck Dir das Ergebnis in der Registry an. studienhalber
ne Reg-Datei und importierst die in die registry per
regedit dateiname mit parameter /s (silent)
die Position hast Du (im obigen Code steht die Position
der ODBC-Daten in der Registry)
Wichtig ist der Eintrag für die Connection selber und ein Eintrag in den ODC-Datasources
Leg Dir mal ne ODBC-Verknüpfung zu Fuss im ODBC-Manager an
und guck Dir das Ergebnis in der Registry an. studienhalber
pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Gut und schön. Nur bin ich eigentlich nicht gewillt, einen kompletten eigenen Requester zu schreiben. Es gibt ja noch dazu Unmengen an ODBC-Treibern. Es soll ja auch nicht auf ACCESS-, MySQL-, MSSQL- oder sonst eine Datenbank beschränkt sein, sondern eben universell. Da ist der bestehende Requester schon recht gut. Zumal ich damit wohl etwas von meinem eigentlichen Projekt abkommen würde.
Gruß,
bommel
Gruß,
bommel
PB 4
Etwas Arbeit um ne neue ODBC-Connection anzulegen wirst Du Dir schon
machen müssen.
Da die ODBC-connections weder in der Einrichtung noch in der
Konfiguration standardisiert sind, würde ich zur Einbindung entweder
den ODBC-Manager aus Windoof nehmen oder , insofern ich den
Konfigurationsaufbau kenne, ne reg-Datei erzeugen und einlesen (wie
oben schon angemerkt)
machen müssen.
Da die ODBC-connections weder in der Einrichtung noch in der
Konfiguration standardisiert sind, würde ich zur Einbindung entweder
den ODBC-Manager aus Windoof nehmen oder , insofern ich den
Konfigurationsaufbau kenne, ne reg-Datei erzeugen und einlesen (wie
oben schon angemerkt)
pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Ich will ja den ODBC-Manager von Windows nutzen. Aber der gibt, wie ich ja schon von Anfang an sage, nicht den Namen zurück. Jedenfalls nicht an die Purebasuc-Funktion. Genau davon rede ich doch die ganze Zeit.
Wie ich eine Datenbank anlege und einrichte weiß ich ja. Muß mir wohl ne DLL in C schreiben und die von PB aus aufrufen.
Wie ich eine Datenbank anlege und einrichte weiß ich ja. Muß mir wohl ne DLL in C schreiben und die von PB aus aufrufen.
PB 4