2015-06-01 187 views
1

我想通過lotusscript更新我的數據庫的行。我的數據庫連接運行良好。但是result.update命令不起作用,我的行不會被查詢更新。問題出在查詢result.updaterow中,因爲它不會在其他地方發生錯誤。 任何人都有解決方案,使其工作;使用lotusscript更新sql數據庫

Option Public 
Option Declare 



UseLSX "*LSXODBC" 

Sub Initialize 
Dim session As New NotesSession 
Dim db As NotesDatabase 
Dim dbcontacts As NotesDatabase 

Dim doc As NotesDocument 
Dim DocContact As NotesDocument 

Dim CandidatView As NotesView 
Dim ContactView As NotesView 

Dim connection As ODBCConnection 


Dim query As ODBCQuery 
Dim result As ODBCResultSet 


Dim consultantref As String 

Set db = session.CurrentDatabase 
Set connection = New ODBCConnection 
Set dbcontacts= session.GetDatabase("", "names.nsf") 


Set query = New ODBCQuery 
Set result = New ODBCResultSet 
Set query.Connection = connection 
Set result.Query = query 

On Error Resume Next 

Set CandidatView=db.GetView("Persons")  
Set ContactView=dbcontacts.GetView("(PersonsTestImport)") 

Call connection.ConnectTo("datasource", "username", "password") 

If connection.IsConnected Then 

    Set doc=CandidatView.GetFirstDocument 
    CandidatView.AutoUpdate = False 
    While Not (doc Is Nothing) 

     query.SQL="select * from users where id_toucan='"+doc.can_doc_ID(0)+"'" 

     result.Execute 

     If result.IsResultSetAvailable Then 

      Do 
       result.NextRow 
       namepers=doc.can_pers(0) 
       Set DocContact=ContactView.Getdocumentbykey(consultantref) 
       Call result.SetValue("first_name",DocContact.FirstName(0)) 
       Call result.SetValue("last_name", DocContact.LastName(0))  
       Call result.SetValue("email", DocContact.MailAddress(0)) 
       result.UpdateRow 
      Loop Until result.IsEndOfData 
     End If 

     Set doc = CandidatView.GetNextDocument(doc) 
    Wend 
Else 

    MsgBox"Not connected" 

End If 
result.Close(DB_CLOSE) 
connection.Disconnect 

End Sub 
+0

你嘗試添加一個對錯誤轉到?顯示發生的潛在錯誤? –

+0

另請參閱http://www.johnbrown.com.au/approach/webfaq04902330.html –

+0

是的,代理在多米諾骨牌服務器上打開,並且我沒有在服務器的日誌文檔中看到任何錯誤。該代理運行良好,但不會更新選定的行 – user3082877

回答

2

我與SQL查詢UPDATE嘗試過了,它的工作現在:

Option Public 
Option Declare 

UseLSX "*LSXODBC" 

Sub Initialize 
Dim session As New NotesSession 
Dim db As NotesDatabase 
Dim dbcontacts As NotesDatabase 

Dim doc As NotesDocument 
Dim DocContact As NotesDocument 

Dim CandidatView As NotesView 
Dim ContactView As NotesView 

Dim connection As ODBCConnection 


Dim query As ODBCQuery 
Dim result As ODBCResultSet 


Dim consultantref As String 

Set db = session.CurrentDatabase 
Set connection = New ODBCConnection 
Set dbcontacts= session.GetDatabase("", "names.nsf") 


Set query = New ODBCQuery 
Set result = New ODBCResultSet 
Set query.Connection = connection 
Set result.Query = query 

On Error Resume Next 

Set CandidatView=db.GetView("Persons")  
Set ContactView=dbcontacts.GetView("(PersonsTestImport)") 

Call connection.ConnectTo("datasource", "username", "password") 

If connection.IsConnected Then 

Set doc=CandidatView.GetFirstDocument 
CandidatView.AutoUpdate = False 
While Not (doc Is Nothing) 
      namepers=doc.can_pers(0) 
      Set DocContact=ContactView.Getdocumentbykey(consultantref) 

     Set DocContact=ContactView.Getdocumentbykey(consultantref) 
     first_name_ref=DocContact.FirstName(0) 
     last_name_ref=DocContact.LastName(0) 
     email_ref=DocContact.MailAddress(0) 
     query.SQL="UPDATE users SET email_consult_ref='"+email_ref+"', first_name_consult_ref='"+first_name_ref+"',last_name_consult_ref='"+last_name_ref+"' where id_toucan='"+doc.can_doc_ID(0)+"'" 

    result.Execute 

    If result.IsResultSetAvailable Then 

     Do 
      result.NextRow 
     Loop Until result.IsEndOfData 
    End If 

    Set doc = CandidatView.GetNextDocument(doc) 
Wend 
End If 
result.Close(DB_CLOSE) 
connection.Disconnect 

End Sub