Datenbank

Für allgemeine Fragen zur Programmierung mit PureBasic.
lapo
Beiträge: 32
Registriert: 12.10.2004 13:36

Datenbank

Beitrag von lapo »

Hallo Zusammen!

Ich hab' da ein kleines Problem mit dem Zugriff auf eine Datenbank mittels ODBC.

Ich habe eine führende Tabelle die ich komplett auslesen muß. Hieraus resultierend erhalte ich eine Key mit dem weitere 5 Tabellen zugegriffen werden soll.
Den Zugriff auf die Datenbank habe ich mit OpenDatabase erfolgreich hinter mir. Anschließend lese ich mittels DatabaseQuery und NextDatabaseRow die entsprechenden Zeilen der führenden Datenbank aus. Wenn ich nun in der Schleife (bei NextDatabaseRow) ein neues DatabaseQuery absetzte funktioniert das ganze nicht mehr....

Wie kann ich mein Problem lösen?? - Kann mir jemand weiter helfen??

Danke Ralf
Benutzeravatar
Kiffi
Beiträge: 10719
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Datenbank

Beitrag von Kiffi »

> Wie kann ich mein Problem lösen??

meine Kristallkugel ist gerade in Reparatur.
Hast Du mal 'n Stückchen Code für uns?

Grüße ... Kiffi
lapo
Beiträge: 32
Registriert: 12.10.2004 13:36

Beitrag von lapo »

Hallo Kiffi!
meine Kristallkugel ist gerade in Reparatur.
Schade das Deine Kristallkugel nicht griffbereit ist.... ;-)

Ich habe einen kleinen Codeausschnitt für Dich/Euch:

Code: Alles auswählen

RetVal = DatabaseQuery("Select AKZ, HGKZ, HSTR, HSTN, HHNZ from SvKo.FzSqHaltt WHERE AKZ LIKE 'KO%'")

While NextDatabaseRow()

   HalttAkz.s  = Trim(GetDatabaseString(0))
   HalttHgkz.s = Trim(GetDatabaseString(1))
   HalttHStr.s = Trim(GetDatabaseString(2))
   HalttHStn.s = Trim(GetDatabaseString(3))
   HalttHhNz.s = Trim(GetDatabaseString(4))
   PrintN("HALTT --> " + HalttAkz + HalttHgkz + HalttHstr + HalttHStn + HalttHhNz)
   
    
   
   PrintN("Select AKZ, SGKZ, SSTR, SHNR from SvKo.FzSqSortt WHERE AKZ = '"+ HalttAkz+"'")
   RetVal = DatabaseQuery("Select AKZ, SGKZ, SSTR, SHNR from SvKo.FzSqSortt WHERE AKZ = '"+ HalttAkz+"'")
   If RetVal = 0
      dbFehler = DatabaseError()
      MessageRequester("  Fehler  ", "Fehler bei: Select AKZ, SGKZ, SSTR, SHNR, SHHNZ from SvKo.FzSqSortt WHERE AKZ = '"+ HalttAkz + "' -->  " + dbFehler + " Programm wird beendet....", 0)
      PgmEnde()
   EndIf
   SorttAkz.s  = Trim(GetDatabaseString(0))
   SorttSgKz.s = Trim(GetDatabaseString(1))
   SorttSStr.s = Trim(GetDatabaseString(2))
   SorttSHnr.s = Trim(GetDatabaseString(3))
   PrintN("SORTT --> " + SorttAkz + SorttSgKz + SorttSStr + SorttSHnr)

   
Wend

Grüße

Ralf
Benutzeravatar
Kiffi
Beiträge: 10719
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

Code: Alles auswählen

RetVal = DatabaseQuery("Select AKZ, HGKZ, HSTR, HSTN, HHNZ from SvKo.FzSqHaltt WHERE AKZ LIKE 'KO%'")

While NextDatabaseRow()
   [...]
   RetVal = DatabaseQuery("Select AKZ, SGKZ, SSTR, SHNR from SvKo.FzSqSortt WHERE AKZ = '"+ HalttAkz+"'")
   [...]
Wend
lt. PB-Hilfe bezieht sich NextDatabaseRow() immer auf den zuvor
abgesetzen DatabaseQuery(). Aus diesem Grund beinflusst das innere
DatabaseQuery die darüberliegende NextDatabaseRow-Anweisung.

HTH

Grüße ... Kiffi
lapo
Beiträge: 32
Registriert: 12.10.2004 13:36

Beitrag von lapo »

Hallo Kiffi!

Ja das ist klar.
Gibt es aber eine Möglichkeit das von mir gewünschte Ergebnis zu erzielen (eine Tabelle führend und die restlichen Lesen aufgrund des ermittelten Keys aus der führenden Tabelle)?

Ralf
Benutzeravatar
Kiffi
Beiträge: 10719
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

> Gibt es aber eine Möglichkeit das von mir gewünschte Ergebnis zu erzielen
> (eine Tabelle führend und die restlichen Lesen aufgrund des ermittelten
> Keys aus der führenden Tabelle)?

mmh, da sehe ich nur die Möglichkeit, die Keys der führenden Tabelle in
einem Rutsch in eine LinkedList einzulesen und diese dann für weitere
DB-Operationen zu verwenden.

Die DB-Gurus hier (sofern vorhanden) mögen mich berichtigen, wenn ich da
falsch liege.

Grüße ... Kiffi
lapo
Beiträge: 32
Registriert: 12.10.2004 13:36

Beitrag von lapo »

Funktioniert es evtl. wenn ich die Datenbank 2x öffne und dann in der Schleife mittels UseDatabase wechsel???


Bis hierhin erst mal danke...

Ralf
Benutzeravatar
Kiffi
Beiträge: 10719
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag von Kiffi »

> Funktioniert es evtl. wenn ich die Datenbank 2x öffne und dann in der
> Schleife mittels UseDatabase wechsel???

müsste eigentlich funktionieren. Im Zweifelsfall: Ausprobieren ;)

Grüße ... Kiffi
lapo
Beiträge: 32
Registriert: 12.10.2004 13:36

Beitrag von lapo »

Ich hab's mal mit UseDatabase probiert - und es funktioniert...

Fragt sich nur was es unter umständen für folgen hat (Geschwindigkeit und so)

Danke

Ralf
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Beitrag von bobobo »

die Bremse ist ODBC und nicht die Anwendung und ODBC ist eh schon in Verwendung.

ein Geschwindigkeitsvorteil wäre marginal
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Antworten