2010-04-03 2 views
2

У меня есть небольшая программа Excel, которая используется для загрузки данных на SQL-сервер.Excel VBA для обновления таблицы SQL

Это хорошо работает какое-то время.

Моя проблема в том, что я хотел бы предложить пользователям функцию для обновления существующей записи в SQL.

Поскольку каждая строка на этой таблице имеет уникальный идентификатор 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 несколько строк, и цикл над ними с помощью EOF и MoveNext.

Смежные вопросы