2015-06-01 140 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