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

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Nikos
Местный житель
Сообщения: 577
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Томск

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

Сообщение 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 новые строки, а должна быть только одна. Где ошибка?
coolibin
Постоянный обитатель
Сообщения: 151
Зарегистрирован: 29 мар 2005, 17:49

Сообщение coolibin »

Ты же добавляешь запись в основную таблицу панели.

Делай так:

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

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

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

и безо всяких rescanpanel
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Сообщение m0p3e »

Ну и
cmInsertRecord :
{
If Insert Current cortable <> tsOk
Message ( 'Не прошел Insert в таблицу cortable', Error )
}

Ну а если уж так cmInsert нравится то Abort в конце обработчика. Но так лучше не делать.
Nikos
Местный житель
Сообщения: 577
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Томск

Сообщение Nikos »

coolibin, m0p3e, спасибо, все получилось! Че-то запутался я в этих событиях...
Подскажите, если основная таблица панели, то при нажатии F7 автоматически добавляется запись в буфер?
coolibin
Постоянный обитатель
Сообщения: 151
Зарегистрирован: 29 мар 2005, 17:49

Сообщение coolibin »

Nikos писал(а): Подскажите, если основная таблица панели, то при нажатии F7 автоматически добавляется запись в буфер?
Да, если статус строка поддерживает вставку.
m0p3e
Местный житель
Сообщения: 1386
Зарегистрирован: 29 мар 2005, 17:49
Откуда: Москва

Сообщение m0p3e »

Череда событий такая:
cmInsert
cmSetDefault - здесь заполняется буфер новой записи
при уходе с записи или вызове UpdateTable
cmCheckRecord
cmInsertRecord
Ответить