Autor Thema: Lotus Script ODBC  (Gelesen 3510 mal)

TomLudwig

  • Gast
Lotus Script ODBC
« am: 09.10.03 - 12:04:14 »
Hi,
ich komm mit der Hilfe nicht mehr weiter... *schnief*
Kann mir jemand mal bitte ein kurzes Code Beispiel geben (mit Kommentar) wie ich eine Verbindung über ODBC zu einer AccessDatenbank bekomme. Und schließlich ein SQL Statement absetzen kann?

Vielen Dank

Offline Axel

  • Moderator
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 8.658
  • Geschlecht: Männlich
  • It's not a bug, it's Notes
Re:Lotus Script ODBC
« Antwort #1 am: 09.10.03 - 12:45:49 »
Ohne Computer wären wir noch lange nicht hinterm Mond!

TomLudwig

  • Gast
Re:Lotus Script ODBC
« Antwort #2 am: 09.10.03 - 13:01:21 »
ich hab jetzt in der hilfe ein wenig gestöbert... da bin ich auf den befehl

Uselsx "*LSXODBC"

gestoßen.
was hat der zu bedeuten? für was wird er benötigt?

Offline Rob Green

  • Freund des Hauses!
  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 2.651
  • Geschlecht: Männlich
    • Meipor
Re:Lotus Script ODBC
« Antwort #3 am: 09.10.03 - 13:58:36 »
schau mal bei "ata" (fälltmir doch ein, daß es ein Tutorial gibt);:
http://www.anton-tauscher.de/LotusScript/startdyn.htm

Oberpunkt "Datenbanken" dann auf der linken Navigation "ODBC Tutorial".. wird richtig schön step by step erklärt
Vielleicht verdirbt Geld wirklich den Charakter.
Auf keinen Fall aber macht Mangel an Geld ihn besser.
(John Steinbeck)

Meiporblog: http://www.meipor.de/blog
allg. Unternehmerblog: http://www.m-e-x.de/blog

Offline pippo

  • Gold Platin u.s.w. member:)
  • *****
  • Beiträge: 580
  • I love YaBB 1G - SP1!
Re:Lotus Script ODBC
« Antwort #4 am: 09.10.03 - 15:42:16 »
Hallo,

Uselsx "*LSXODBC" mußt Du im Deklatationsbereich eingeben

Hier ein Beispiel von mir

ich gehe auf Daten von AS400; aber Syntax ist diesselbe(sql...)

es gibt auch die Möglichkeit von NOtes auf die DBEngine von Access zu gehen; da kannst Du besser und direkt mit den Daten spielen

kann ich Dir auch schicken sofern gebraucht


Grüße, Pippo

*****************

Dim con As New ODBCConnection
   Dim qry As New ODBCQuery
   Dim result As New ODBCResultSet
   Dim Rec As Long, txt As String
   Dim fileNum As Integer
   Set qry.Connection = con
   Set result.Query = qry
   
   con.ConnectTo "ODBCAS400PREISOS", "HITODBC_OS" , "HITODBC_OS"
   
   REM Bestimmen Artikel suchen
   Dim Sql As String, SqlTab1 As String
   Dim Libreria As String
   Dim GespANPRO00F As Integer, GespANPRA00F As Integer
   GespANPRO00F = 0
   GespANPRA00F = 0
   
   REM Achtung !!! Hier die Libreria eintragen
   Libreria="DATENRV"
   
   REM TestLibreria
   REM Libreria="AVWRISDIV"
   
   REM Tabelle 1. wird gespeichert, sofern Flag auf ja
   If doc.TAB1FLAG(0) = "10" Then
      Print "Daten von Tabelle 1 werden gelesen"
      SqlTab1 = "SELECT ANPRO00F.A§COAR, ANPRO00F.A§STAT, ANPRO00F.A§PREZ, ANPRO00F.A§PREA, ANPRO00F.A§DTLA, ANPRO00F.A§DTCA, ANPRO00F.A§PRZP, ANPRO00F.A§DTLP, ANPRO00F.A§PREP, ANPRO00F.A§DTCP, ANPRO00F.A§DEAR"
      SqlTab1 = SqlTab1 & "   FROM " & Libreria & ".ANPRO00F"
      SqlTab1 = SqlTab1 & " WHERE (ANPRO00F.A§STAT=' ' and ANPRO00F.A§COAR='" & doc.COAR(0) & "')"      
      qry.SQL = SqlTab1
      result.Execute
      
      Dim tmpDT
      Rec = 0
      If result.IsResultSetAvailable Then
         Do
            result.NextRow
            
            Rec = Rec +1
            REM Kontrolle Anzahl
            If Rec > 1 Then
               Msgbox "Fataler Fehler: Artikel in AS400 " & Rec & " mal vorhanden!", 48, "Raiffeisen"      
               result.Close(DB_CLOSE)      
               con.Disconnect
               Print ""
               Exit Sub
            End If
            REM Kontrolle Readonly
            If  result.ReadOnly = True Then
               Msgbox "Sie sind nicht berechtigt die Daten auf AS400 zu bearbeiten!", 48, "Raiffeisen"   
               result.Close(DB_CLOSE)      
               con.Disconnect
               Print ""
               Exit Sub
            End If
            If Not result.IsEndOfData Then
               Msgbox "Fataler Fehler! mehr als ein Record gefunden!"
               result.Close(DB_CLOSE)      
               con.Disconnect
               Print ""
               Exit Sub
            End If
            
            REM Artikelnummer
            Dim COAR
            Call  result.GetValue("A§COAR",   COAR)
            
            REM Kontrolle
            If Trim(doc.COAR(0)) <> COAR Then
               Msgbox "Fataler Fehler! Gesuchter Artikelcode und gefundener Code sind verschieden!", 48, "Raiffeisen"
               result.Close(DB_CLOSE)      
               con.Disconnect
               Print ""
               Exit Sub
            End If
            
            REM Aktuelle Preise werden in Feldern von alten Preisen geschrieben
            REM Einkaufspreis
            Dim PREA
            Call result.GetValue("A§PREA",   PREA)
            REM DATUM
            Dim DTCA As String
            Call result.GetValue("A§DTCA",   DTCA)
            REM Verkaufspreis
            Dim PREZ
            Call result.GetValue("A§PREZ",   PREZ)
            REM DATUM
            Dim DTLA As String
            Call result.GetValue("A§DTLA",   DTLA)
            
         Loop Until result.IsEndOfData
      Else
         Msgbox "Artikel auf AS400 nicht gefunden!", 48, "Raiffeisen"
         result.Close(DB_CLOSE)      
         con.Disconnect
         Print ""
         Exit Sub
      End If
      result.Close(DB_CLOSE)      
      
      REM Neue Preise werden geschrieben
      REM Sofern Speichern aktiviert ist
      REM DATUM Aktueller Preis
      Dim tmpDatum As String
      tmpDatum = Format(Now,"yyyymmdd")
      If Len (tmpDatum) <> 8 Then
         Msgbox "Fehler bei Datum - verschieden 8 Zeichen - " & tmpDatum
         result.Close(DB_CLOSE)      
         con.Disconnect
         Print ""
         Exit Sub
      End If
      
      REM Nun wird auf AS400 direkt über Udate die Aktualisierung vorgenommen
      Print "Tabelle 1 wird aktualisiert"
      REM Aktuelle Werte in alte Werte schreiben
      sql = "UPDATE S44B3786." & Libreria & ".ANPRO00F SET A§PREP=" & DezInPunkt( PREA, RWert) & ",  A§PRZP=" & DezInPunkt(PREZ, RWert) & ", A§DTLP=" & Clng(DTLA) & ", A§DTCP=" & Clng(DTCA)
      REM Neue Werte Schreiben
      sql = sql & ", A§PREZ=" & DezInPunkt( doc.PREZ(0), RWert) & ", A§PREA=" & DezInPunkt( doc.PREA(0), RWert) & ", A§DTCA=" & Clng(tmpDatum) & ", A§DTLA=" & Clng(tmpDatum)   
      sql = sql & " WHERE A§COAR = '" & doc.COAR(0) & "'"
      REM Kontrolle, sofern umwandlung von dez in punkt nicht erfolgreich
      If RWert <> 0 Then
         Msgbox "Speichern wird nicht ausgeführt!!!", 48, "Raiffeisen"
         Exit Sub
      End If
      qry.SQL = sql
      result.Execute
      GespANPRO00F=1
      
      REM Daten werden Neu gelesen
      Print "Daten von Tabelle 1 werden neu gelesen"
      qry.SQL = SqlTab1
      result.Execute
      Rec = 0
      If result.IsResultSetAvailable Then
         Do
            result.NextRow
            
            Rec = Rec +1
            REM Kontrolle Anzahl
            If Rec > 1 Then
               Msgbox "Fataler Fehler: Artikel in AS400 " & Rec & " mal vorhanden!", 48, "Raiffeisen"      
               result.Close(DB_CLOSE)      
               con.Disconnect
               Print ""
               Exit Sub
            End If
         Loop Until result.IsEndOfData
      Else
         Msgbox "Artikel auf AS400 nicht gefunden!", 48, "Raiffeisen"
         result.Close(DB_CLOSE)      
         con.Disconnect
         Print ""
         Exit Sub
      End If
      
      REM Felder auf Null; verwende diese methode, damit nicht alles neu gesucht werden muß
      Dim tmpCOAR As String, tmpNOTL As String
      REM diese 2 Felder werden für die 2. Tabelle zwischengespeichert
      tmpCOAR = doc.COAR(0)
      tmpNOTL = doc.NOTL(0)
      
      Print "Felder werden geleert"
      Call FelderNull(doc)
      REM Artikelnummer
      REM Nach dem Löschen aller Felder werden diese 2 wiederum geschrieben
      doc.COAR = tmpCOAR
      doc.NOTL = tmpNOTL
      
      REM Felder von 1. Tabelle
      Print "Daten von Tabelle 1 werden in Felder geschrieben"
      Call writeTab_1(result , doc )
      result.Close(DB_CLOSE)   
   End If
   
   REM Beginn von Tabelle 2
   Print "Daten von NOTE werden geschrieben"
   If doc.NOTLFLAG(0) = "10" Then
      REM Nun wird auf AS400 direkt über Udate die Aktualisierung vorgenommen
      sql = "UPDATE S44B3786." & Libreria & ".ANPRA00F SET AJNOTL='" & Trim(doc.NOTL(0)) & "'"
      sql = sql & " WHERE AJCOAR = '" & doc.COAR(0) & "'"
      qry.SQL = sql
      result.Execute
      GespANPRA00F = 1
   End If
   
   Print "Daten von NOTE werden gelesen"
   sql = "SELECT ANPRA00F.AJCOAR, ANPRA00F.AJNOTL"
   sql = sql & "   FROM " & Libreria & ".ANPRA00F"
   sql = sql & " WHERE (ANPRA00F.AJCOAR='" & doc.COAR(0) & "')"      
   qry.SQL = sql
   result.Execute
   
   Rec = 0
   If result.IsResultSetAvailable Then
      Do
         Rec = Rec +1
         result.NextRow            
         
         If Rec > 1 Then
            Msgbox "Fataler Fehler! mehr als ein Record gefunden!"
            Print ""
         End If
         
         REM Kontrolle Readonly
         If  result.ReadOnly = True Then
            Msgbox "Sie sind nicht berechtigt die Daten auf AS400 zu bearbeiten!", 48, "Raiffeisen"   
            Print ""
            Exit Sub
         End If
         If Not result.IsEndOfData Then
            Msgbox "Fataler Fehler! mehr als ein Record gefunden!"
            Print ""
            Exit Sub
         End If
      Loop Until result.IsEndOfData
   End If
   
   REM Felder von 2. Tabelle
   Call writeTab_2(result , doc )
   result.Close(DB_CLOSE)
   
   REM Flag immer auf NULL
   doc.NOTLFLAG = ""
   Print ""
   con.Disconnect
   
   If GespANPRO00F = 1 And (doc.NOTLFLAG(0) = "" Or  (doc.NOTLFLAG(0) = "10" And GespANPRA00F = 1))Then
      Msgbox "Daten wurden auf AS400 erfolgreich aktualisiert!", 48, "Raiffeisen"   
   End If
   Exit Sub
   
errorHandler:
   If con.GetError <> DBstsSuccess Then
      con.Disconnect
      Msgbox con.GetError  & " - " &  con.GetErrorMessage & " - " & con.GetExtendedErrorMessage,, "Connect"
   Elseif qry.GetError <> DBstsSuccess Then
      con.Disconnect
      Msgbox qry.GetError  & " - " &   qry.GetErrorMessage & " - " & con.GetExtendedErrorMessage,, "Query"
   Elseif result.GetError <> DBstsSuccess Then
      result.Close(DB_CLOSE)
      con.Disconnect
      Msgbox  result.GetError  & " - " & result.GetErrorMessage & " - " & con.GetExtendedErrorMessage,, "Result - " & PREA & " - " & PREZ
   Else      
      Msgbox "Fehler: " & Err & " - " & Error
   End If
   Exit Sub
   

 

Impressum Atnotes.de  -  Powered by Syslords Solutions  -  Datenschutz