Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.03.14;
Скачать: CL | DM;

Вниз

Глюк TStoredProc   Найти похожие ветки 

 
tomek   (2004-02-15 11:03) [0]

Вопрос по Interbase такой.
Пуская я использую стандартные компоненты для доступа к БД Interbase (TStoredProc, TQuery, TDatabase). Конечно, так делать не вполне корректно, но все же.
У меня есть база 1.gdb, в ней 3 таблицы и одна хранимая процедура, которая имеет вид :

СREATE PROCEDURE SUMSALARY (IPMIN FLOAT)
RETURNS (OPSUM FLOAT)
AS
declare variable summ float;
declare variable n float;
begin
summ=0;
for select salary from customers
where salary>=:ipMin into n
do summ = summ + n;
opSum=summ;
end ^

В общем, обычная процедура подсчета суммы зарплаты для сотрудников.
На формочке экземпляры TDataBase, TQuery и TStoredProc связаны соответствующим образом.
Я регинюсь к базе через обработчик OnLogin, и данные отображаются в Gridе. Теперь пишу такой обработчик для Button1 :

with storedproc1 do begin
parambyname("IPMIN").value:=20;
prepare;
execProc;
label1.Caption:=inttostr(parambyname("opsum").value);
end;

И вот тут-то какая-то лажа получается. Входной параметр IPMIN не найден. Хотя у меня свойства компоненты TStoredProc настроены правильно (SessionName, StoredProcName и DataBaseName) - сомневаться не приходится. Далее самое забавное. После хитрых манипуляций - типа переконнект к базе, а также повторного выбора значения параметра StoredProcName компоненты TStoredProc, мне все-таки удается без ошибки получить в Label1 значение вожделенной суммы. Кстати, в свойтве Params компоненты TStoredProc все ОК, есть два параметры - один входной, другой - выходной.
В ЧЕМ ГЛЮК ?????????


 
jack128 ©   (2004-02-15 11:32) [1]

Помоему тут можно обойтись и без ХП
select sum(salary) from customers
where salary>=:ipMin

А по вопросу вроде все нормально.
Для комплекта добавь StoredProcName := "SUMSALARY"; авось на мысли наведет


 
Deniz ©   (2004-02-16 09:41) [2]

И еще:
with storedproc1 do begin
StoredProcName := "SUMSALARY";
prepare;
parambyname("IPMIN").value:=20;
execProc;
label1.Caption:=inttostr(parambyname("opsum").value);
end;


 
Zacho ©   (2004-02-16 09:48) [3]

И еще еще :)
Можешь поставить в конце ХП suspend и вызывать ее не с помощью TStoredProc, а с помощью TQuery запросом SELECT * FROM SUMSALARY(:IPMIN)
А вообще, присоединяюсь к jack128 © (15.02.04 11:32) [1] - зачем городить ХП если достаточно одного простого запроса ?



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

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

Наверх




Память: 0.47 MB
Время: 0.019 c
1-43496
Vlad40
2004-02-26 13:14
2004.03.14
Click в MonthCalendar: как идентифицировать щелчок по дню?


3-43357
snake1977
2004-02-16 11:09
2004.03.14
наследник TDataSet или как сделать свой формат BD


1-43551
Fants
2004-02-27 19:07
2004.03.14
TreeView


1-43518
rezak
2004-02-28 18:35
2004.03.14
вопрос с лабелом


3-43289
Layner
2004-02-10 08:13
2004.03.14
Можно ли посмотреть на код приложения, позв. сохранять картинку в