2010-04-03 155 views
2

我有一個小型Excel程序用於將數據上傳到SQL服務器。Excel VBA更新SQL表

這一直工作得很好。

我現在的問題是我想提供給用戶一個函數來更新SQL中的現有記錄。

由於此表上的每一行都有一個唯一的id columne。有一個列調用UID是主鍵。

這是代碼的一部分,目前上傳新的數據:

Set Cn = New ADODB.Connection 
    Cn.Open "Driver={SQL Server};Server=" & ServerName & ";Database=" & _ 
     DatabaseName & ";Uid=" & UserID & ";Pwd=" & Password & ";" 

rs.Open TableName, Cn, adOpenKeyset, adLockOptimistic 

For RowCounter = StartRow To EndRow 
    rs.AddNew 
    For ColCounter = 1 To NoOfFields 
     rs(ColCounter - 1) = shtSheetToWork.Cells(RowCounter, ColCounter) 
    Next ColCounter 
Next RowCounter 
rs.UpdateBatch 

' Tidy up 
rs.Close 
Set rs = Nothing 
Cn.Close 
Set Cn = Nothing 

反正我有可以修改此代碼更新特定UID,而不是引進新的記錄?再次

感謝您的幫助

回答

3

而不是AddNew打開一個新的記錄,使用Find找到現有之一。像:

rs.Find "id = 100" 
rs(1) = "ColumnOneValue" 

或者:

rs.Find "LastName = 'Bush'" 
rs("LastName") = "Blush" 

它可以Find多行,並使用EOFMoveNext週期超過他們。