Autor Thema: Zwei Tabellen in einem auslesen  (Gelesen 2737 mal)

Offline Sandra

  • Junior Mitglied
  • **
  • Beiträge: 50
  • Geschlecht: Weiblich
Zwei Tabellen in einem auslesen
« am: 22.10.04 - 12:10:57 »
Hallo Zusammen,

ich habe folgendes Problem. Ich möchte Daten aus zwei Tabellen einer SQL-Datenbank auslesen und in ein neues Dokument schreiben.

Es sollen zu einem Auftrag alle Positionen ausgelesen werden.

Abhängig von der Artikelnummer in der jeweiligen Position werden Daten aus einer zweiten Tabelle benötigt.

Das Problem ist nun, dass das auslesen der zweiten DB immer nur bei der letzten eingelesenen Position funktioniert. Wenn ich mir das im Debugger ansehe, funktioniert anscheinend der execute-Befehl immer nur beim letzten Durchgang der Loop. Ich sehe einfach nicht wo das Problem ist. Hier der Skript, vielleich kann einer von euch was erkennen.

Sub Click(Source As Button)
   Dim con As New ODBCConnection
   Dim qry As New ODBCQuery
   Dim qry2 As New ODBCQuery
   Dim ws As New NotesUIWorkspace
   Dim uidoc As NotesUIDocument
   Dim res As New ODBCResultSet
   Dim res2 As New ODBCResultSet
   Dim db As NotesDatabase   
   Dim session As New NotesSession   
   Dim doc As  NotesDocument
   
   
   Dim pos As Long
   Dim art As String
   Dim an As Long
   Dim z
   z=0
   Set db = session.CurrentDatabase
   Set uidoc = ws.CurrentDocument
   Set doc = uidoc.Document
   Call doc.Save(True, True)
   an = uidoc.FieldGetText("fdAuftragsNr")
   
   con.ConnectTo("BPW_Datamarts")    
   Set qry.Connection = con
   Set qry2.Connection = con
   
   qry.SQL = "select * from [SH Verkauf FP mit Attributen] where [Auftrags-Nr.] = '" & an & "'"
   Set res.Query = qry
   res.Execute
   r% = res.FirstRow
   
   Do While r% = True
      Dim adoc As  New NotesDocument(db)
      
      Call adoc.MakeResponse( doc )      
      adoc.form = "frmReklaDetail"
      Call adoc.Save(True, True)
      
      adoc.fdAuftragsNr = an      
      adoc.fdpos = res.GetValue("POS")   
      art = res.GetValue("Artikel-Nr.")
      adoc.fdartikelnr = art
            
      qry2.SQL = "select * from DIM_SH_ARTIKEL  where [Artikel-Nr.] = '" + art + "'"
      Set res2.Query = qry2
      res2.Execute
      res2.FirstRow

      adoc.fdartikelbez = res2.GetValue("Bezeichnung")
      adoc.fdags = res2.GetValue("Artikelgruppe") & " " & res2.GetValue("Artikelgruppenbezeichnung")
      
      adoc.fdobf = res.GetValue("OBF")
      adoc.fdfarbe = res.GetValue("Farbe")
      adoc.fdleimung = res.GetValue("Leimung")
      adoc.fdflg = res.GetValue("gr/m²")
      adoc.fdlaenge = res.GetValue("Länge")
      adoc.fdbreite = res.GetValue("Breite")
      adoc.fdMEHME = res.GetValue("ME")
      adoc.fdBestMengeHME = res.GetValue("Menge in ME")
      z = z+1      
      
      Call adoc.Save(True, True)
      r% = res.NextRow
   Loop
   con.Disconnect
   Messagebox("Es wurden " + z + " Positionen erstellt.")
   
End Sub
Notes 6.5.3 FP1 auf iSeries und Windows 2003

y20frank

  • Gast
Re: Zwei Tabellen in einem auslesen
« Antwort #1 am: 22.10.04 - 20:24:05 »
>> Ich möchte Daten aus zwei Tabellen einer SQL-Datenbank auslesen und in ein neues Dokument schreiben
Hmm versteh ich zwar gerad nicht so ganz... nun, formuliere doch gleich die erste SQL-Abfrage doch so, dass sie aus zwei Tabellen die Daten wie gewünscht ausliest und in ein neues Dokument schreibt...

Offline Sandra

  • Junior Mitglied
  • **
  • Beiträge: 50
  • Geschlecht: Weiblich
Re: Zwei Tabellen in einem auslesen
« Antwort #2 am: 25.10.04 - 08:27:36 »
>> Ich möchte Daten aus zwei Tabellen einer SQL-Datenbank auslesen und in ein neues Dokument schreiben

Hmm versteh ich zwar gerad nicht so ganz... nun, formuliere doch gleich die erste SQL-Abfrage doch so, dass sie aus zwei Tabellen die Daten wie gewünscht ausliest und in ein neues Dokument schreibt...

In der SQL-Datenbank A sind mehrere Tabellen 1, 2, 3 usw. In Tabelle 1 sind Aufträge mit Positionsdaten darunter die Artikelnr. In Tabelle 2 finde ich die Beschreibung zur Artikelnr.
ein Auftrag kann mehrere Positionen haben, weshalb ich Tabelle 1 Auslese und mit Hilfe einer Schleife jede Position als neues Dokument anlege. In diesem neuen Dokument soll auch die Beschreibung des Artikels mit gespeichert werden. Da aber auch jede Position einen anderen Artikel haben kann, kann ich die Tabelle 2 erst bei der jeweiligen Position auslesen wobei ich ein Feldwert von Tabelle 1 zur Abfrage brauche.
Notes 6.5.3 FP1 auf iSeries und Windows 2003

Offline Thomas Schulte

  • @Notes Preisträger
  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 4.388
  • Geschlecht: Männlich
  • Ich glaub mich tritt ein Pferd
Re: Zwei Tabellen in einem auslesen
« Antwort #3 am: 25.10.04 - 09:44:10 »
Da bin ich irgendwie mit bei Frank, warum machst du keinen Inner Join und holst dir die Artikelbeschreibung gleich beim ersten SQL Befehl mit?
Geht vor allem schneller weil du keinen zweiten Connect je Position auf die SQL DB brauchst. Der Protokoll Overhead wird minimiert.

Thomas
Thomas Schulte

Collaborative Project Portfolio and Project Management Software

"Aber wo wir jetzt einmal soweit gekommen sind, möchte ich noch nicht aufgeben. Versteh mich recht, aufgeben liegt mir irgendwie nicht."

J.R.R.Tolkien Herr der Ringe, Der Schicksalsberg

OpenNTF Project: !!HELP!! !!SYSTEM!!  !!DRIVER!!

Skype: thomasschulte-kulmbach

Offline Sandra

  • Junior Mitglied
  • **
  • Beiträge: 50
  • Geschlecht: Weiblich
Re: Zwei Tabellen in einem auslesen
« Antwort #4 am: 25.10.04 - 10:58:50 »
Sorry, ich stand etwas auf dem Schlauch :-[. Meine SQL-Kenntnisse sind nicht gerade umfassend. Hättet ihr ein Beispiel für so eine Inner Join Abfrage? Ich such aber auch mal im Netz.

Danke schon mal für den Tipp.

Hab im Netz was gefunden. Klappt wunderbar. Vielen Dank nochmal.Thema wär damit erledigt.
« Letzte Änderung: 25.10.04 - 11:14:44 von Sandra »
Notes 6.5.3 FP1 auf iSeries und Windows 2003

Offline shiraz

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 648
  • Geschlecht: Männlich
Re: Zwei Tabellen in einem auslesen
« Antwort #5 am: 14.03.06 - 09:02:43 »
Wie hast du dein Problem gelöst,

 :-:
Gruß
Christian

Offline Sandra

  • Junior Mitglied
  • **
  • Beiträge: 50
  • Geschlecht: Weiblich
Re: Zwei Tabellen in einem auslesen
« Antwort #6 am: 14.03.06 - 09:15:55 »
Wie hast du dein Problem gelöst,

 :-:

Hallo,

ich habe den Inner Join benutzt.

qry.SQL = "select * from [DB1] INNER JOIN DB2 ON ([DB1].[Artikel-Nr.] = DB2.[Artikel-Nr.])  where [Auftrags-Nr.] = '" & an & "'"
Notes 6.5.3 FP1 auf iSeries und Windows 2003

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz