Вниз
Скачать: CL | DM;

Помогите с IBTable данных IBX   Найти похожие ветки 

← →
DimaF ©   (2004-01-20 05:27) [0]

Работал раньше с BDE решил перейти на InterBase
Проблемма в том что мне надо вносить до 1500 записей в базу данных программно, ели есть запись то обновить если нет то Insert с TTable было все просто Locate и по условию вставляеш или обновляеш
как КОРЕКТНО ЭТО СДЕЛАТЬ В IBX
я понимаю что можно воспользоватся IBTable но это както не коректно и еше с ней не тригеры не шетчики не работают она принудительно сама все поля заполняет.
КАК ПОСТУПИТЬ ПОМОГИТЕ !


← →
Deniz ©   (2004-01-20 06:50) [1]

> вносить до 1500 записей в базу данных программно

Да без проблем. Лучше воспользоваться не IBTable а IBStoredProc.
А процедуру написать (или сгенерить) в IBExpert"е, должно получиться что-то вроде:

CREATE PROCEDURE DOKIN_IU (
IDDOKIN INTEGER,
NDOK INTEGER,
DDOK DATE,
INTYPE INTEGER)
AS
BEGIN
IF (EXISTS(SELECT IDDOKIN FROM DOKIN WHERE (IDDOKIN = :IDDOKIN))) THEN
UPDATE DOKIN
SET NDOK = :NDOK,
DDOK = :DDOK,
INTYPE = :INTYPE
WHERE (IDDOKIN = :IDDOKIN);
ELSE
INSERT INTO DOKIN (
IDDOKIN,
NDOK,
DDOK,
INTYPE)
VALUES (
:gen_id(<генератор>, 1),
:NDOK,
:DDOK,
:INTYPE);
END

Подразумевается что IDDOKIN - это первичный ключ, и по нему идет определение существования записи! О как!
В программе:

try
IBStoredProc1.StoredProcName:="DOKIN_IU";
IBStoredProc1.Prepare;
IBStoredProc1.ParamByName("NDOK").AsInteger:=...;
...
IBStoredProc1.ExecProc;
Application.ProcessMessages;
except
...
end;

Вот и все.


← →
DimaF ©   (2004-01-20 06:58) [2]

Большое спосибо Deniz !



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.014 c
1-29320
SeriousSam
2004-01-29 22:54
2004.02.10
как сделать что бы курсор возвращался в edit1и много еще что...


1-29405
Daniel
2004-01-31 22:48
2004.02.10
Еще


1-29298
Алексей
2004-02-02 07:28
2004.02.10
Плоский ComboBox


7-29646
Babay
2003-11-21 11:20
2004.02.10
Как получить Список пользователей домена ?


3-29233
Vitalik
2004-01-19 14:30
2004.02.10
Добавление строк в таблицу ч/з DBGrid




   Наверх