Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.02.10;
Скачать: 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 вся ветка

Текущий архив: 2004.02.10;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.018 c
14-29579
Думкин
2004-01-20 06:12
2004.02.10
С днем рождения! 20 января.


3-29210
RDen
2004-01-20 11:09
2004.02.10
Два вопроса: как узнать существует ли индекс у таблицы ?


14-29557
гогенус
2004-01-21 00:02
2004.02.10
WinXP администрирование


1-29347
race1
2004-01-28 16:06
2004.02.10
Service


7-29627
kullibin
2003-11-19 14:18
2004.02.10
Что за сообщение?