Страница 1 из 1

Почему добавляются 2 записи

Добавлено: 26 фев 2008, 13:51
Nikos
Написал небольшой интерфейс для установки соответствий в аналитике:
create view as select *
from CORTABLE, SYNONYM SPKAU SPKAUL, SYNONYM SPKAU SPKAUR
where ((
1 == CORTABLE.WACCORD
and CORTABLE.LREF == SPKAUL.NREC
and CORTABLE.RREF == SPKAUR.NREC
));

browse brCor 'Платежи' (,,sci178Esc);
table CORTABLE;
fields
SPKAUL.CODE 'Код' :[15],protect,pickbutton;
SPKAUL.NAME 'Наименование' :[40],protect,pickbutton;
SPKAUR.CODE 'Код' :[15],protect,pickbutton;
SPKAUR.NAME 'Наименование' :[40],protect,pickbutton;
end;

далее в обработке событий пишу:
cmInsert:
{
insert CORTABLE set
CORTABLE.WACCORD:= 1,
CORTABLE.LREF := comp(0),
CORTABLE.RREF := comp(0);
ReScanPanel(#CORTABLE);
}
Почему-то при добавлении новой записи появляется пустая строка, но курсор устанавливается на вторую пустую строку, которая не добавляется в таблицу, а просто отображается на экране.
Т.е. нажимаю F7 - визуально добавляется 2 новые строки, а должна быть только одна. Где ошибка?

Добавлено: 26 фев 2008, 18:50
coolibin
Ты же добавляешь запись в основную таблицу панели.

Делай так:

Код: Выделить всё

cmSetDafault:
{
  // значения полей
  CORTABLE.WACCORD:= 1;
}
cmUpdateRecord:
{
  if (update current cortable <> 0) {}
}

cmInsert не используй

и безо всяких rescanpanel

Добавлено: 26 фев 2008, 20:23
m0p3e
Ну и
cmInsertRecord :
{
If Insert Current cortable <> tsOk
Message ( 'Не прошел Insert в таблицу cortable', Error )
}

Ну а если уж так cmInsert нравится то Abort в конце обработчика. Но так лучше не делать.

Добавлено: 27 фев 2008, 08:38
Nikos
coolibin, m0p3e, спасибо, все получилось! Че-то запутался я в этих событиях...
Подскажите, если основная таблица панели, то при нажатии F7 автоматически добавляется запись в буфер?

Добавлено: 27 фев 2008, 11:08
coolibin
Nikos писал(а): Подскажите, если основная таблица панели, то при нажатии F7 автоматически добавляется запись в буфер?
Да, если статус строка поддерживает вставку.

Добавлено: 27 фев 2008, 12:06
m0p3e
Череда событий такая:
cmInsert
cmSetDefault - здесь заполняется буфер новой записи
при уходе с записи или вызове UpdateTable
cmCheckRecord
cmInsertRecord