Das Notes Forum
Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet 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 )
-
Hmmm, ist die Klammer im Feldnamen von MailSentFlag beabsichtigt???
-
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
-
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.
-
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
-
Schau auch mal, ob die ODBC Verbindung nicht schreibgeschützt verbindet.
Dies kann man z.B. bei iSeries Access (AS400) Verbindungen angeben.
-
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?
-
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.