Вниз
Скачать: 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.016 c
1-29386
ARTSOFT
2004-02-01 22:14
2004.02.10
MP3-component


1-29425
Islander
2004-01-31 12:44
2004.02.10
Как конвертировать в TshortCut комбинацию клавиш Win+A?


14-29573
Undert
2004-01-20 00:31
2004.02.10
Работа в Питере!


14-29545
Alexander666
2004-01-21 11:46
2004.02.10
Американские деньжата


1-29371
AntonSh
2004-01-29 10:52
2004.02.10
Работа со строками




   Наверх