Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Старая прога на фибах (помогите разобраться)  [new]
Rphoenix
Member

Откуда:
Сообщений: 83
Здравствуйте!
У меня есть задача: из ексельки сделать в делфи выгрузку в 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;
----
Уже день сижу с этим, как, возможно, по нормальному написать?
10 сен 19, 07:29    [21967405]     Ответить | Цитировать Сообщить модератору
 Re: Старая прога на фибах (помогите разобраться)  [new]
pastor
Member

Откуда: Калуга
Сообщений: 1001
Rphoenix,

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

LQry.ExecWP( MyStringParam);
LQry.Close;
10 сен 19, 07:45    [21967411]     Ответить | Цитировать Сообщить модератору
 Re: Старая прога на фибах (помогите разобраться)  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9803
Rphoenix,

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

Модератор: Тема перенесена из форума "Firebird, InterBase".
10 сен 19, 07:46    [21967413]     Ответить | Цитировать Сообщить модератору
 Re: Старая прога на фибах (помогите разобраться)  [new]
Rphoenix
Member

Откуда:
Сообщений: 83
Сейчас пишет "Cannot mofidy a read-only dataset
ShowMessage(MyMass[i,4]);
pfbermis.ParamByName('FAM').AsSTRING:=MyMass[i,4];
pfbermis.Active:=true;
pfbermis.edit;
10 сен 19, 11:25    [21967530]     Ответить | Цитировать Сообщить модератору
 Re: Старая прога на фибах (помогите разобраться)  [new]
Rphoenix
Member

Откуда:
Сообщений: 83
На строчке "pfbermis.edit;" ошибка
10 сен 19, 11:34    [21967547]     Ответить | Цитировать Сообщить модератору
 Re: Старая прога на фибах (помогите разобраться)  [new]
wadman
Member

Откуда: Санкт-Петербург
Сообщений: 25767
Rphoenix
На строчке "pfbermis.edit;" ошибка

Датасет не понимает как построить запрос для редактирования.
Потому нужно либо его переписать, либо заполнить его обработчики (если таковые есть) для редактирования записей, либо заменить на что-то другое.
10 сен 19, 11:37    [21967559]     Ответить | Цитировать Сообщить модератору
 Re: Старая прога на фибах (помогите разобраться)  [new]
ёёёёё
Member

Откуда:
Сообщений: 701
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
10 сен 19, 12:30    [21967623]     Ответить | Цитировать Сообщить модератору
 Re: Старая прога на фибах (помогите разобраться)  [new]
Rphoenix
Member

Откуда:
Сообщений: 83
ёёёёё, огромное спасибо! Все получилось!
10 сен 19, 14:03    [21967740]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить