Suche das Gegenstück zu DatabaseError()

Anfängerfragen zum Programmieren mit PureBasic.
TheSaint
Beiträge: 143
Registriert: 21.12.2008 18:59

Suche das Gegenstück zu DatabaseError()

Beitrag von TheSaint »

Hallo Zusammen,

ich nutze folgenden Befehl um mir Fehler anzeigen zu lassen,
die passieren können, wenn ein SQL - Befehl fehlerhaft ausgeführt wurde.

Code: Alles auswählen

MessageRequester("Fehler", "Kann die folgende Abfrage nicht ausführen: "+DatabaseError())
Gibt es eigentlich auch einen Befehl, der mir anzeigt, das der SQL - Befehl erfolgreich ausgeführt wurde und wieviele Datensätze bearbeitet wurden?

Schon mal vielen Dank für Eure Hilfe.
Gruß, TheSaint
___________________________
[ XP Prof SP 3 | Vista | PB 4.30 ]
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Suche das Gegenstück zu DatabaseError()

Beitrag von Kiffi »

Erfolg oder Misserfolg einer Funktion kannst Du ja mit dem Rückgabewert auslesen.

Code: Alles auswählen

If DatabaseQuery(...
  ; Ausgabe "DatabaseQuery erfolgreich"
Else
  ; Ausgabe DatabaseError()
EndIf

Code: Alles auswählen

If DatabaseUpdate(...
  ; Ausgabe "DatabaseUpdate erfolgreich"
Else
  ; Ausgabe DatabaseError()
EndIf
einen Rückgabewert wie RecordsAffected unter ADO gibt es hier AFAIK
leider nicht.

Grüße ... Kiffi
a²+b²=mc²
TheSaint
Beiträge: 143
Registriert: 21.12.2008 18:59

Re: Suche das Gegenstück zu DatabaseError()

Beitrag von TheSaint »

Hallo Kiffi,
Kiffi hat geschrieben: einen Rückgabewert wie RecordsAffected unter ADO gibt es hier AFAIK
leider nicht.
Tja, schade, genau das habe ich gesucht.

Aber, vielen Dank für Deine Hilfe / Antwort.
Gruß, TheSaint
___________________________
[ XP Prof SP 3 | Vista | PB 4.30 ]
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Suche das Gegenstück zu DatabaseError()

Beitrag von Kiffi »

TheSaint hat geschrieben:Tja, schade, genau das habe ich gesucht.
wenn es ein Feature ist, auf das Du nicht verzichten kannst, dann könntest
Du Dich mit COMate vertraut machen. Hiermit kann man ADO (und all die
anderen schönen COM-Komponenten) in PB nutzen.

Mit ADOmate (die auf ADO spezialisierte COMate-Version) bräuchtest Du
auch gar nicht so viel in Deinem jetzigen Code ändern. In ADOmate müsste
man auch derzeit nur eine Zeile ändern, damit RecordsAffected
zurückgegeben wird (ich muss mit srod noch palavern, ob er es 'ab Werk'
mit einbaut).

Falls Interesse besteht, kann ich Dir gerne weitere Infos geben.

Grüße ... Kiffi
a²+b²=mc²
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Beitrag von Kaeru Gaman »

[ot]
ADO, die Datenbank mit der Goldkante...
[/ot]
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

Kaeru Gaman hat geschrieben:[ot]
ADO, die Datenbank mit der Goldkante...
[/ot]
[ot]
Achten Sie auf die Goldkante - es lohnt sich!
[/ot]
a²+b²=mc²
TheSaint
Beiträge: 143
Registriert: 21.12.2008 18:59

Re: Suche das Gegenstück zu DatabaseError()

Beitrag von TheSaint »

Hallo Kiffi,
Kiffi hat geschrieben: Falls Interesse besteht, kann ich Dir gerne weitere Infos geben.
Ja ich hätte interesse daran. Ist es ein kostenpflichtiges Tool?
Gruß, TheSaint
___________________________
[ XP Prof SP 3 | Vista | PB 4.30 ]
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Suche das Gegenstück zu DatabaseError()

Beitrag von Kiffi »

TheSaint hat geschrieben:Ist es ein kostenpflichtiges Tool?
nein. Es handelt sich sowohl bei COMate als auch bei ADOmate und Include-
Dateien von srod aus dem englischen Forum, welche hier heruntergeladen
werden können:

http://www.nxsoftware.com/

Das für Dich primär interessante ADOmate ist eine auf Datenbank-
operationen spezialisierte Version und benötigt COMate als Grundlage.
Lade Dir am besten also beide Archive herunter (auf die PB-Version
achten!)

Mit ADOmate bist Du in der Lage, im PB-Style auf Datenbanken via
ADO (also ohne ODBC) zuzugreifen.

In beiden Archiven findest Du viele Beispiele, anhand deren Du schnell
erfassen kannst, wie die Befehle zu benutzen sind. Ich meine in
Erinnerung zu haben, dass Du aus der VB-Ecke kommst. Wenn ja, dann
wirst Du Dich sehr schnell an den neuen Befehlssatz gewöhnen (vor
allem an den, der Dir durch COMate zur Verfügung steht) .

Grüße ... Kiffi
a²+b²=mc²
TheSaint
Beiträge: 143
Registriert: 21.12.2008 18:59

Re: Suche das Gegenstück zu DatabaseError()

Beitrag von TheSaint »

Hallo Kiffi,

erstmal vielen Dank für Deine schnelle und umfangreiche Antwort.
Kiffi hat geschrieben: Mit ADOmate bist Du in der Lage, im PB-Style auf Datenbanken via
ADO (also ohne ODBC) zuzugreifen.
Hm, hier muss ich erstmal sehen, ob ich auf eine Firebird Datenbank zugreifen kann.
Auf eine Access Datenbank wird es wohl kaum Probleme geben.
Kiffi hat geschrieben: In beiden Archiven findest Du viele Beispiele, anhand deren Du schnell
erfassen kannst, wie die Befehle zu benutzen sind. Ich meine in
Erinnerung zu haben, dass Du aus der VB-Ecke kommst. Wenn ja, dann
wirst Du Dich sehr schnell an den neuen Befehlssatz gewöhnen (vor
allem an den, der Dir durch COMate zur Verfügung steht) .
Ja, :) Du ein gutes Gedächtnis.
Jedoch habe ich Access benutzt um auf eine Firebird Datenbank zugriff zu nehmen.
Mein bestreben ist es ja von Access weg zu kommen und die Funktionen in PB umzusetzen (Ja, ich weis, wird schwierig, was Reports Module,... angeht).

So, dann schau ich mir das erstmal alles an und versuche es mal umzusetzen, bevor ich den bereits vorhandenen Code, mittlerweile so 1500 Zeilen ändere. :)

Nochmals vielen Dank für Deine Hilfe.
Gruß, TheSaint
___________________________
[ XP Prof SP 3 | Vista | PB 4.30 ]
Benutzeravatar
Kiffi
Beiträge: 10714
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Suche das Gegenstück zu DatabaseError()

Beitrag von Kiffi »

TheSaint hat geschrieben:So, dann schau ich mir das erstmal alles an und versuche es mal umzusetzen, bevor ich den bereits vorhandenen Code, mittlerweile so 1500 Zeilen ändere. :)
ja, das ist sowieso empfehlenswert. ;-)

Wobei sich die Änderungen in Grenzen halten, wenn Du ADOmate
verwendest. Du musst lediglich die Datenbank-Aufrufe ein wenig
abändern:
Meinereiner hat geschrieben:PB: OpenDatabase()
ADOmate: ADOmate_OpenDatabase()

PB: DatabaseQuery()
ADOmate: ADOmate_DatabaseQuery()

PB: DatabaseUpdate()
ADOmate: ADOmate_DatabaseUpdate()

etc.


Für Firebird gibt es IMHO einen ADO-Treiber.

Grüße ... Kiffi
a²+b²=mc²
Antworten