Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: RonMat am 27.06.05 - 11:09:00

Titel: Schreiben in eine SQL Table
Beitrag von: RonMat am 27.06.05 - 11:09:00
Hallo Gemeinde,
ich habe nachfolgenden Script geschrieben, dieser funtioniert auch- mit einer Ausnahme. Es wird in der Table das"Mailsentflag" nicht geschrieben. Kann mir an dieser Stelle Jemand weiterhelfen.
Im Notesscripting habe ich doch lediglich den updateRow - oder???

Dim session As New NotesSession
   Dim db As NotesDatabase
   Dim docmail, Profile As NotesDocument
   Set Profile=session.CurrentDatabase.GetProfileDocument("EDI_Profile")
   ODBC_Name=profile.GetItemValue("ODBC_Con_Name")
   ODBC_Admin=profile.GetItemValue("ODBC_Admin")
   ODBC_PW=profile.GetItemValue("PW_ODBC")
   Superuser=profile.GetItemValue("Superuser")
   Set db = session.CurrentDatabase
   
   Dim con As New ODBCConnection
   Dim qry As New ODBCQuery
   Dim result As New ODBCResultSet
   Dim textmail  As String
   
   Set qry.Connection = con
   Set result.Query = qry
   '                                             
   If con.ConnectTo(ODBC_Name(0), ODBC_Admin(0),ODBC_PW(0)) Then
      qry.SQL = "SELECT MailText FROM EDISendMail where MailSent is NULL"
      
      result.Execute
      If result.IsResultSetAvailable Then
         Do
            result.NextRow
            textmail= result.GetValue("MailText")
            Call result.SetValue("MailSentFlag)", "Yes")
            result.UpdateRow
            msg = msg & Chr(10) & Textmail
         Loop Until result.IsEndOfData
         result.Close(DB_CLOSE)
      Else
         Exit Sub
      End If
      con.Disconnect
   End If
   
   'Mailversand
   
   
   Set docmail = db.CreateDocument
   Set docmail = New NotesDocument( db )
   docmail.Form="Memo"
   
   
   Call docmail.ReplaceItemValue( "SendTo", Superuser(0))
   Call docmail.ReplaceItemValue("Subject","EDI Report " & Today)
   Call docmail.ReplaceItemValue("Body",msg)
   Call docmail.ReplaceItemValue("ReportDate",Now)
   'Call docmail.Save(True,True)
   Call docmail.Send( False )
   
Titel: Re: Schreiben in eine SQL Table
Beitrag von: Wirsing am 27.06.05 - 13:34:13
Hmmm, ist die Klammer im Feldnamen von MailSentFlag beabsichtigt???
Titel: Re: Schreiben in eine SQL Table
Beitrag von: RonMat am 27.06.05 - 13:51:25
Nein, ist aus Versehen hineingerutscht. Habe sie im Script beseitigt und der Satz wird nach wie vor nicht upgedated. Aus MS Access kann ich die Felder bearbeiten und auch neue Werte eingeben. Also stimmen die Lese/Schreibrechte auch.
Ich verstehe es im Augenblick auch nicht, habe zwar mit ODBC nicht so viele Erfahrungen aber insgesamt sieht es von meiner Seite sauber aus. Danke für die Info
Titel: Re: Schreiben in eine SQL Table
Beitrag von: Wirsing am 27.06.05 - 15:45:48
Versuch mal diesen SELECT:

SELECT MailText,MailSentFlag FROM EDISendMail where MailSentFlag is NULL

Ich denke, dass das Feld, welches Du ändern möchtest auch in der Abfrage sein muss.
Titel: Re: Schreiben in eine SQL Table
Beitrag von: RonMat am 29.06.05 - 10:10:18
Hallo Wirsing, habe es probiert. Leider keinen Erfolg, ....es schreibt nicht. Vielleicht liegt es an den ODBC Treiber - obwohl ich die neuesten verwende. Ich suche weiter.....
Vielen Dank für Deine Ansätze
Titel: Re: Schreiben in eine SQL Table
Beitrag von: Wirsing am 29.06.05 - 11:48:18
Schau auch mal, ob die ODBC Verbindung nicht schreibgeschützt verbindet.

Dies kann man z.B. bei iSeries Access (AS400) Verbindungen angeben.
Titel: Re: Schreiben in eine SQL Table
Beitrag von: Marinero Atlántico am 29.06.05 - 12:21:50
Falscher Datentyp?
Welchen Datentyp hat die Spalte EDISendMail.MailSentFlag im Schema der Access-DB?
Kann es unter Umständen sein, dass Access irgendeinen boolean Datentyp als "Yes" ausgibt, das aber eigentlich boolean ist?
Titel: Re: Schreiben in eine SQL Table
Beitrag von: Marinero Atlántico am 29.06.05 - 12:44:18
ich hab lange kein odbc mehr gemacht, aber es sollte eine Möglichkeit geben nach der Zeile updateRow eine Fehlermeldung der Datenbank abzufragen, die diese nämlich senden sollte, falls der Update fehlschlägt. Die Auswertung von SQL-FEhlermeldungen ist integraler Bestandteil eines auf eine RDBMS zugreifenden Programms. Ohne jeden Zweifel. Und das fehlt.