У меня есть таблица EmpTable примерно так:
Если я хочу обновить зарплату Джона, я могу сделать это так:
static void UpdateSal(Args _args)
{
EmpTable EmpTable;
real sal=110000;
int RowId = 1;
ttsBegin;
select forUpdate EmpTable where EmpTable.Id==RowId;
EmpTable.Salary=sal;
EmpTable.update();
ttsCommit;
}
Я хочу помочь в реализации приведенного выше кода с использованием только переменных:
static void UpdateSal_WithStrValues(Args _args)
{
str table = 'EmpTable'
str field = 'Salary'
int RowId = 1;
real sal=110000;
.....??
.....??
}
Обновление:
Этот код работает:
static void Job1(Args _args)
{
SysDictTable dictTable = new SysDictTable(tablename2id('EmpTable'));
Common common = dictTable.makeRecord();
ttsbegin;
while select forupdate common
where common.(fieldName2id(tableName2Id("EmpTable"),'Id')) == 1
{
common.(fieldName2id(tableName2Id("EmpTable"),'Salary')) = 110100;
common.update();
}
ttscommit;
}
Но этот код не:
static void Job1(Args _args)
{
str table = 'EmpTable';
str fieldToUpdate= 'Salary';
str fieldToSelect= 'Id';
int RowId = 1;
real sal=34536;
SysDictTable dictTable = new SysDictTable(tablename2id(table));
Common common = dictTable.makeRecord();
ttsbegin;
while select forupdate common
where common.(fieldName2id(tableName2Id(table),fieldToSelect)) == RowId
{
common.(fieldName2id(tableName2Id(table),fieldToUpdate)) = sal;
common.update();
}
ttscommit;
}