Старая прога на фибах (помогите разобраться)

Rphoenix
Дата: 10.09.2019 07:29:08
Здравствуйте!
У меня есть задача: из ексельки сделать в делфи выгрузку в Firebird 2.
В делфи я сделал чтение ексельки - все корректно работает и закрывается, выгружается в отдельный массив.
В IBE написал по типу
автор
begin
if (exists(select upper(FAM)
from TEST t
where t.fam = :FAM)) then
update TEST tt
set tt.fam=:FAM
where tt.fam = :FAM;
else
insert into TEST
values (:FAM);
suspend;
end

Это просто для теста: если есть по ключевому полю, то апдейт, а иначе новая строка.
Далее, мне нужно в фибы закинуть это: я делаю через
автор
SELECT
*
FROM
ERMIS_INSERT(:FAM)

А в делфи пишу
.....
for i := 1 to x-1 do // x - последняя строка в ексельке - 1 заголовок
//for j := 1 to y do
begin
pfbermis.Open;
ShowMessage(MyMass[i,4]);
pfbermis.ParamByName('FAM').AsSTRING:=MyMass[i,4];
pfbermis.Active:=TRUE;
pfbermis.edit;
pfbermis.Active:=False;
pfbermis.Close;
end;
----
Уже день сижу с этим, как, возможно, по нормальному написать?
pastor
Дата: 10.09.2019 07:45:01
Rphoenix,

var LQry:TpFIBQuery;
....
LQry.Text:= 'SELECT count(*) FROM ERMIS_INSERT(:FAM) ';

LQry.ExecWP( MyStringParam);
LQry.Close;
Симонов Денис
Дата: 10.09.2019 07:46:42
Rphoenix,

EXECUTE PROCEDURE и убрать SUSPEND из ХП. И не в предках DataSet это выполнять

Модератор: Тема перенесена из форума "Firebird, InterBase".
Rphoenix
Дата: 10.09.2019 11:25:07
Сейчас пишет "Cannot mofidy a read-only dataset
ShowMessage(MyMass[i,4]);
pfbermis.ParamByName('FAM').AsSTRING:=MyMass[i,4];
pfbermis.Active:=true;
pfbermis.edit;
Rphoenix
Дата: 10.09.2019 11:34:55
На строчке "pfbermis.edit;" ошибка
wadman
Дата: 10.09.2019 11:37:48
Rphoenix
На строчке "pfbermis.edit;" ошибка

Датасет не понимает как построить запрос для редактирования.
Потому нужно либо его переписать, либо заполнить его обработчики (если таковые есть) для редактирования записей, либо заменить на что-то другое.
ёёёёё
Дата: 10.09.2019 12:30:22
Rphoenix
Сейчас пишет "Cannot mofidy a read-only dataset
ShowMessage(MyMass[i,4]);
pfbermis.ParamByName('FAM').AsSTRING:=MyMass[i,4];
pfbermis.Active:=true;
pfbermis.edit;

Зайчик, читай стр.141: http://www.ibase.ru/files/firebird/mir_interbase_polnaya_versiya.pdf
Rphoenix
Дата: 10.09.2019 14:03:09
ёёёёё, огромное спасибо! Все получилось!