Метод UpdateData (Объект IIngeoSemDbTable)


Изменяет данные в таблице.

Синтаксис

ЯзыкОписание
VBScript, JavaScriptSubUpdateData(aSet, aWhere, aParams)
Visual BasicSub UpdateData(ByVal aSet As String, ByVal aWhere As String, ByVal aParams As Variant)
Delphiprocedure UpdateData(const aSet: WideString; const aWhere: WideString; aParams: OleVariant);
C, C++HRESULT UpdateData(BSTR aSet, BSTR aWhere, VARIANT aParams);

Параметры

aSet
Через запятую перечисляются поля и их новые значения в формате: <имя поля> = <значение>. Имена полей могут быть заключены в двойные кавычки. Если какое-либо значение передается через aParams, то на его месте надо использовать символ ?.
aWhere
Задает условие отбора записей, которые будут изменяться. Если необходимо изменить все записи, то надо передавать пустую строку. Если значение какого-либо параметра условия передается через aParams, то на его месте надо использовать символ ?.
aParams
Массив значений для aSet и aWhere. Порядок значений в массиве должен соответстовать порядку следования символов ? сначала в aSet, потом в aWhere.

Примечания

Будет выполнен следующий запрос следующего вида:
 'UPDATE ' + TableName + ' SET ' + aSet + ' WHERE ' + aWhere, 
  либо, если не задано условие отбора: 
 'UPDATE ' + TableName + ' SET ' + aSet

Пример

Задача
Заполнить семантические данные из Excel-го файла
option explicit

const ExcelFileName = "C:\Test.xls"
const ExcelSheetName = "Лист1"
const ExcelRange = "A1:B10"

const SemTableID = "000100000438"
const SearchFieldName = "Кадастровый Номер"
const DataFieldName = "Владелец"

function GetExcelData
  dim  Excel, Wb, Sheet, Range

  set Excel = CreateObject("Excel.Application")
  set wb = Excel.Workbooks.Open(ExcelFileName)
  set sheet = Wb.sheets(ExcelSheetName)
  set range = Sheet.Range(ExcelRange)
  GetExcelData = Range.Value
  wb.close
  Excel.Quit
end function

sub FillDataFromExcel
  dim aTable, anExcelData, aSearchData, aData, aSetStr, aWhereStr, i

  set aTable = Application.ActiveDb.SemTableFromID(SemTableID).SemDbTable
  anExcelData = GetExcelData

  aSetStr = """" & aTable.TableName & """.""" & DataFieldName & """=?"
  aWhereStr = """" & aTable.TableName & """.""" & SearchFieldName & """=?"
  for i = LBound(anExcelData, 1) to UBound(anExcelData, 1)
    aSearchData = anExcelData(i, 1)
    aData = anExcelData(i, 2)
    aTable.UpdateData aSetStr, aWhereStr, Array(CStr(aData), CStr(aSearchData))
  next
  msgbox "Поля заполнены"
end sub

См.также

IIngeoSemDbTable