DatabaseQuery schlägt fehl

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
batzilla
Beiträge: 37
Registriert: 17.12.2005 21:44

DatabaseQuery schlägt fehl

Beitrag von batzilla »

Ich steh hier im Moment auf dem Schlauch...

in meinem Programm führe ich folgendes durch:

Code: Alles auswählen

; Datenbankumgebung initialisieren
If InitDatabase() = 0
	MessageRequester("Fehler", "Datenbankumgebumg (ODBC v3 oder höher benötigt) konnte nicht initialisiert werden!")
 	End
EndIf

; Datenbank öffnen
If OpenDatabase(#Datenbank, #DBName, #DBUser, #DBPass) = 0
	MessageRequester("Fehler", "Kann die folgende Abfrage nicht ausführen: " + DatabaseError())
EndIf
Zusätzlich gibt es eine Prozedur in der ich eine Tabelle meiner Datenbank abfragen möchte. Diese Abfrage schlägt fehl:

Code: Alles auswählen

Procedure getUserRole(UserName.s)
  table.s = "Benutzer"
  sqlCommand.s = "SELECT * FROM " + table.s + " WHERE BENUTZERKENNUNG = '" + UCase(UserName.s) + "'"
  If DatabaseQuery(#Datenbank, sqlCommand.s) <-- hier tritt der Fehler auf!
    NextDatabaseRow(#Datenbank)
    Debug GetDatabaseString(#Datenbank, 0)
  EndIf
EndProcedure
In der markierten Zeile tritt dann folgender Fehler auf:
ERROR: InitDatabase() must be called before use the Database commands.

Ich rufe aber doch schon InitDatabase() in meinem Programm auf, und andere Prozeduren in meinem Programm funktionieren ähnlich wie die oben gezeigte. Also nur einmal InitDatabase() in meinem Programm und alle Prozeduren laufen klaglos, bis auf die oben gezeigte Prozedur.

Kann mich mal jemand vom Schlauch holen?

Danke.
PB 4.02
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

Check Deinen Code

Irgendwie wird wohl Initdatabase() nicht vor dem Aufruf der Prozedur
getUserRole(UserName.s) aufgerufen

Die Fehlermeldung sollte hier eigentlich nicht irreführen und korrekt sein.

ömm .. eventuell hast Du die Prozeduren in Threads laufen, dann
muss die Zeilennummer der Fehlermeldung nicht unbedingt korrekt sein.

Der Code an sich scheint mir ok zu sein.
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Benutzeravatar
batzilla
Beiträge: 37
Registriert: 17.12.2005 21:44

Beitrag von batzilla »

hmm...

Mein Programm sah bisher so aus:

Code: Alles auswählen

variablen
declarationen

procedure1
procedure2
procedure3
procedure4
procedure5
etc

initDatabase() etc...
hab das jetzt wie folgt aufgebaut:

Code: Alles auswählen

variablen
declarationen

initDatabase() etc...

procedure1
procedure2
procedure3
procedure4
procedure5
etc
Nun kein Fehler beim DatabaseQuery mehr. Komisch. Ich dachte, es reicht die Prozeduren am Anfang zu deklarieren, dann wäre die Reihenfolge egal. Irre ich mich?
PB 4.02
Benutzeravatar
Sicro
Beiträge: 963
Registriert: 11.08.2005 19:08
Kontaktdaten:

Beitrag von Sicro »

Hallo batzilla,

ohne vorherigem Aufruf des Befehls "InitDatabase" sind die zugehörigen Befehle nicht bekannt. Du möchtest diese aber in deinen Prozeduren schon verwenden. Deshalb kommt es zu einem Fehler.

Mfg DerProgger
Benutzeravatar
batzilla
Beiträge: 37
Registriert: 17.12.2005 21:44

Beitrag von batzilla »

Aber ich hatte doch auch schon vorher Prozeduren, die vor dem eigentlichen InitDatabase() im Quelltext standen.

Code: Alles auswählen

variablen
declarationen

prozedur1 mit z.B. DatabaseQuery(...)

InitDatabase()
OpenDatebase(...)
Das hat auch schon immer funktioniert. Nur bei der neuen Prozedur wie im ersten Beitrag bereits gepostet gabs plötzlich die Fehlermeldung obwohl ich auch schon vorher in anderen Prozeduren Datenbankfunktionen aufgerufen habe. Versteh ich nicht.
PB 4.02
Benutzeravatar
Sicro
Beiträge: 963
Registriert: 11.08.2005 19:08
Kontaktdaten:

Beitrag von Sicro »

Du hast Recht. Ich habe gerade probeweise ein Code geschrieben, der grundsätzlich deiner Vorgehensweise entspricht und er hat funktioniert. Der Fehler muss also irgendwo anders liegen.

Könntest du noch einen kleinen, kompilierbaren Code posten, der den selben Fehler aufweist? Wäre sehr hilfreich für die Fehlerfindung. Vielleicht kommst du dadurch auch schon selber auf die Spur. :wink:

Mfg DerProgger
Benutzeravatar
Konne
Beiträge: 764
Registriert: 30.03.2005 02:20
Kontaktdaten:

Beitrag von Konne »

Tut es denn ohne debugger?
Benutzeravatar
batzilla
Beiträge: 37
Registriert: 17.12.2005 21:44

Beitrag von batzilla »

Wollte grad testen ob der Fehler auch ohne Debugger auftritt...

Hab dazu den Code wieder in die ursprüngliche Reihenfolge gebracht und nun funktioniert er!? Hexenwerk...

:shock:
PB 4.02
Antworten