Нет записей в таблице сразу после успешной вставки
Добавлено: 19 окт 2011, 15:37
Приветствую!
Помогите, пожалуйста, с такой проблемой. В чём тут может быть дело?
Есть временная таблица. После вставки записи в эту таблицу пытаюсь получить первую запись, и getFirst возвращает ошибку.
В этом коде первый message показывает 0, а второй - 4. При чём происходит это не всегда, а только в определённых случаях. Выяснить, чем эти "определённые" случаи отличаются от других, мне не удаётся.
Вообще я этот пример несколько упростил. На самом деле у меня такой код:
WTLF - это штатный объект типа WorkingTableListFunctions, который в refreshTableListExt просматривает табеля по подразделению cPodr и для каждого табеля вызывает мою функцию collect. Для одних подразделений всё проходит верно, но по некоторым cPodr не работает _loop. Как я выяснил, из-за того, что в Tables нет записей. Смотрю отладчиком - все строки функции collect отрабатывают верно, insert возвращает 0. Поэтому я попробовал getFirst (как в первом примере) - он возвращает 4. С чем это может быть связано? Куда копать?
Помогите, пожалуйста, с такой проблемой. В чём тут может быть дело?
Есть временная таблица. После вставки записи в эту таблицу пытаюсь получить первую запись, и getFirst возвращает ошибку.
Код: Выделить всё
table struct Tables (
cLsch : comp,
Month : word,
Year : word
)
;
...
Tables.cLsch := workingTable.cLschet;
Tables.Month := workingTable.MesN;
Tables.Year := workingTable.YearN;
message((insert current Tables), cmOk);
message ((getFirst Tables), cmOk);
Вообще я этот пример несколько упростил. На самом деле у меня такой код:
Код: Выделить всё
function collect(var workingTable: Type$LsTab; subject: comp; periodBeginning: date): integer;
{
clearBuffer(#Tables);
Tables.cLsch := workingTable.cLschet;
Tables.Month := workingTable.MesN;
Tables.Year := workingTable.YearN;
insert current Tables;
}
procedure proc;
{
delete all Tables;
mCount := bDate;
while (mCount <= eDate) {
bindEvent(collect, WTLF.collectTable);
WTLF.refreshTableListExt(0, cPodr, mCount, validator);
unBindEvent(collect, WTLF.collectTable);
mCount := add_months(mCount, 1);
}
_loop Tables {
//....
}
}