PBOSL_ExDatabase lib

Anwendungen, Tools, Userlibs und anderes nützliches.
Benutzeravatar
Bisonte
Beiträge: 2465
Registriert: 01.04.2007 20:18

Beitrag von Bisonte »

Irgendwie scheinen die Funktionen AddDSN und RemoveDSN nicht richtig zu laufen.

Wenn ich die aus der Lib benutze, klappt nichts... wenn ich aber deinen Code
direkt verwende funktionierts (natürlich bei ausgeschalteter Lib)

Dazu fällt auf, das das RemoveDSN nicht immer die DSN auch wirklich entfernt.
Zumindest wenn ich nach Programmstart per Verwaltung auf ODBC Datenquellen
nachschaue ist die DSN immer noch vorhanden.

Mach ich da jetzt 'nen Denkfehler oder ist da irgendwo der Wurm drin ?

Edit: ich meine natürlich mk-soft's code....
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
mk-soft
Beiträge: 3845
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

@Bisonte,

kannst DU bitte die Verwendete PB-Version in deine Signatur aufnehmen?

Die aktuelle Verison ist vom 03.09.2009 20:15 und in der Readme.txt steht die aktuelle Syntax.
Bei mir läuft diese auch unter PB4.10 Beta 4.

Wie sieht den Dein Code aus? Wenn das Programm RemoveDSN(...) nicht erreicht, bleibt die DSN auch hängen.

FF :wink:
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
Bisonte
Beiträge: 2465
Registriert: 01.04.2007 20:18

Beitrag von Bisonte »

gesagt getan.

also codetechnisch wird die RemoveDSN erreicht.
Ist in dem Block wo das Programmende abgearbeitet wird.
(Extra ein Debug vor und nach der Anweisung !!!)

Aber manchmal ist die DSN auch weg... wie gesagt, es kommt nicht immer
vor. Irgendwie ein nicht wiederholbarer Effekt.
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
mk-soft
Beiträge: 3845
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Versuch mal

Code: Alles auswählen

result = RemoveDSN(dbName); DSN wieder entfernen
If Result = 0
  MessageRequester("SQLError", GetSQLInstallerError())
EndIf
Steht noch nicht in der Funktionliste von der LIB

P.S. Bei odbcad32 habe ich öftners den efekt das die Liste erst nach ein Neustart des Programm aktuallisiert wird. Zeigt also auch manchmal Eintragungen an die garnicht mehr existieren.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
Bisonte
Beiträge: 2465
Registriert: 01.04.2007 20:18

Beitrag von Bisonte »

Sooo....

ein paar probleme tauchen auf:

1. wie gebe ich jetzt bescheid, dass es sich um eine OnlineDB handelt ?
nirgends gebe ich den "Horst" an....

2. als Fehlermeldung bekomme ich nun (mal wieder die Lib angemacht vom
03.09.2009 20:15) folgendes:

"1. Ungültiger Name für den Treiber oder das Konvertierungsprogramm"

Diese Meldung erscheint mit und ohne dem driver.s Parameter.

Also der Code einzelnd als Procedure funktioniert (zumindest 100% das Adden der DSN)...
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
mk-soft
Beiträge: 3845
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Etwas Code könnte helfen.
Sieht aber so aus das der falsche dbName für RemoveDSN verwendet wird.
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
Bisonte
Beiträge: 2465
Registriert: 01.04.2007 20:18

Beitrag von Bisonte »

Code: Alles auswählen

DSN.s=AddDSN("DB9805","***","***")

Delay(2000)

result = RemoveDSN("DB9805"); DSN wieder entfernen
If Result = 0
  MessageRequester("SQLError", GetSQLInstallerError())
EndIf 
aber wie gesagt... auch mit angehängtem "MYSQL" selbe Meldung.
Und: wie gebe ich den Host für eine InternetDB an ?
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
mk-soft
Beiträge: 3845
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

ReadMe:
Funktionsbeschreibung:

Result.l = ExamineTables(DSN.s [, USER.s, PASS.s])
Result.l = NextTable()
Result.s = GetTableName()
Result.s = GetTableType()

Result.s = AddDSN(databasename.s [, user.s, pass.s][, driver.s]) - Result <- User DSN Name
Result.l = RemoveDSN(databasename.s [, driver.s])

Result.s = AddSystemDSN(databasename.s [, user.s, pass.s][, driver.s]) - Result <- System DSN Name
Result.l = RemoveSystemDSN(databasename.s [, driver.s])

Result.l = RepairMDB(databasename.s [, user.s, pass.s])
Result.l = CompactMDB(databasename.s [, user.s, pass.s])
Result.l = CreateEmptyMDB(databasename.s [, user.s, pass.s])


Unterstützte Datenbanken und verwendete Standardtreiber:

*.MDB -> "Microsoft Access Driver (*.mdb)"
*.XLS -> "Microsoft Excel Driver (*.xls)"
*.DBF -> "Microsoft dBase Driver (*.dbf)"
*.CSV -> "Microsoft Text Driver (*.txt; *.csv)"
*.TXT -> "Microsoft Text Driver (*.txt; *.csv)"

*.MySQL -> "MySQL ODBC 3.51 Driver"
*.MsSQL -> "SQL Server"


Format für MySQL:

databasename = "[Host oder IP\]Schema.MySQL"
Bei fehlenden Host oder IP wird automatisch "localhost" gesetzt.


Format für SQL Server:

databasename = "SQLServer\Tabelle.MsSQL", z.B. "(local)\SQLEXPRESS\Master.MsSQL"

Code: Alles auswählen

dbName.s = "InternetHost\DB9805.MySQL"
DSN.s=AddDSN(dbName,"","")

Delay(2000)

result = RemoveDSN(dbName); DSN wieder entfernen
If Result = 0
  MessageRequester("SQLError", GetSQLInstallerError())
EndIf 
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Benutzeravatar
Bisonte
Beiträge: 2465
Registriert: 01.04.2007 20:18

Beitrag von Bisonte »

databasename = "[Host oder IP\]Schema.MySQL"
Bild

ok... lesen bildet ;)

Danke.

P.S.: Beantrage den Smilie in die hiesige Smilieauswahl zu integrieren ;) mit : wand : oder so....
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom​​
Benutzeravatar
mk-soft
Beiträge: 3845
Registriert: 24.11.2004 13:12
Wohnort: Germany

Beitrag von mk-soft »

Geht also :allright:

Wenn ich Online bin ist für ein paar Tage folgende MySQL Datenbank zum testen offen.

Code: Alles auswählen

Define.s dbName = "mk-soft.selfip.net\test.mysql" ; MySQL Schema
Define.s dsn =  AddSystemDSN(dbName) ; DSN hinzufügen
Debug "DSN: " + dsn

If ExamineTables(dsn, "user", "user")
  Debug "Tabellen in Database:"
  Debug ""
  While NextTable()
    Debug GetTableName() + "  <--  " + GetTableType()
  Wend
  Debug "" : Debug ""
EndIf
  
RemoveSystemDSN(dbName)
Alles ist möglich, fragt sich nur wie...
Projekte ThreadToGUI / EventDesigner V3 / OOP-BaseClass-Modul
Downloads auf MyWebspace / OneDrive
Antworten