Seite 1 von 1

2 Fragen zu OpenDatabaseRequester

Verfasst: 16.06.2009 16:13
von dag
Hallo erstmal,

Nachdem ich mich im engl und deutschen Forum schon halbtot gesucht hab, wollte ich mal schauen ob mir jemand direkt weiterhelfen kann.

Ich programmiere zur Zeit an einem Universellen Datenbankteil herum, was kurz gesagt mehrere SQL-DBs direkt und über ODBC unterstützt. Dabei können Masken in Realtime angepasst und mit den verschiedenen DBs/Tabellen/Feldern verknüpft werden. SQL muss man nicht mehr tiefschürfend können, das Engine baut sich das alles selber zusammen 8) immo bin ich beim Client bei ca 12.000 Programmzeilen. Wenns fertig ist, werd ichs hier zur freien Verfügung stellen, hab aus den Boards viel Wissen erlesen :D

Aber ich komm immer wieder zu einem eher Anfängerlike Problem zurück, was mich Ratlos macht:

OpendatabaseRequester()

1) Was bedeutet der 2. Parameter [Plugin] ?, in der Hilfe off/online steht nix
und
2) Wie komme ich über Purebasic an den Namen der im Requester ausgewählten Datenbank ?
DatabaseDriverName() nutzt mir in dem Zusammenhang garnix. Gibts da ne möglichkeit ?

Ich hab WinXP Sp3 mit PB 4.31

Vielen Dank !
thomas

Verfasst: 16.06.2009 17:15
von bobobo
Die Angabe "Plugin" ist dort eher ein Fehler denn was Gültiges weil mit
dem Databaserequester immer nur eine ODBC-Datenbank referenziert
werden kann (s.u.). Wenn Du die Nummer (#PB_Any ..siehe Hilfe)
der Datenbank hast, brauchst Du den Namen für die Datenbankfunktionen
eigentlich nicht mehr.

Um über die Nummer an den Namen zu gelangen müsstest Du
vermutlicherweise interne Strukturen von Pb durchhecheln.

Mach Dir doch nen eigenen Requester indem du ne Liste der
angemeldeten Datenbanken erstellst und Dir dort den Namen merkst.
Eine Liste ist ja schnell erstellt

Code: Alles auswählen

UseODBCDatabase()
If ExamineDatabaseDrivers()
  While NextDatabaseDriver()
    Debug DatabaseDriverName()+" "+DatabaseDriverDescription()
  Wend
EndIf
End
das Ergebnis in ein ListView oder ComboboxGadget macht daraus recht
flott auch n Requester der dann auch den Namen "weiß". Öffnen der
entsprechenden Datenbank(en) dann mit opendatabase()


-------
der Parameter Plugin hat bei opendatabase() eine Wirkung,weil dort auch Sqlite unterstützt wird. Sieht dazu bei opendatabase in der Hilfe nach.

Verfasst: 17.06.2009 09:07
von dag
Hi
Dank dir für die Antwort.
Ich hatte schon befürchtet, das ich den langen Weg gehen muss. Es ist richtig das ich für die Arbeit mit der ausgewählten DB den Namen nicht brauche, aber für die weitere Bearbeitung mit dem User der die ausgewählte DB noch ein-/zuordnen muss. Da wären kryptische Nummern nicht so der Hit.

Das [Plugin] des OpenDatabaseRequester gleich mit dem Plugin bei OpenDatabase sein soll kann ich mir nicht vorstellen, denn beim Requester steht extra dabei:
Dies ist ein spezifischer Befehl für ODBC Datenbanken.
thomas

Verfasst: 17.06.2009 09:15
von PureBasic09
doch doch, die Plugins von OpenDatabase() sindgleich denen, von OpenDatabaseRequester().

das selbe poblem hatte ich auch mal, aber durch versuchen un basteln klappt dat :mrgreen:

Verfasst: 17.06.2009 14:41
von bobobo
Ich glaube kaum, dass man mit dem Opendatabaserequester direkt
SQLite-DBs auswählen kann, wie auch, da dort ja nur ODBC-DBs ausgewählt werden können.
Ich hab zwar nicht alles ausprobiert, aber
meistens erscheint der Requester erst gar nicht, wenn ich das Ding
mit einem optionalen Parameter aufrufe.
i.Ü widerspricht das ja auch der Aussage der Hilfe, dass der Requester für ODBC-Dbs sein soll.

Entweder bewirkt der was anderes momentan unkomentiertes oder
es ist eine Art Bug.

Verfasst: 18.06.2009 13:10
von dag
Ich danke euch.
Um die ganze Thematik zu umgehen hab ich mir, wie vorgeschlagen, jetzt einen eigenen Requester mit ListIconGadget() gebastelt.

bis bald
thomas