|
|
|
Странная ошибка InterBase 6.0 (или TStoredProc)
|
|||
|---|---|---|---|
|
#18+
Вопрос по 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 все ОК, есть два параметры - один входной, другой - выходной. В ЧЕМ ГЛЮК ????????? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.02.2004, 14:48 |
|
||
|
Странная ошибка InterBase 6.0 (или TStoredProc)
|
|||
|---|---|---|---|
|
#18+
Все один сплошной ГЛЮК :) Во-первых: не используйте 6-ю версию InterBase. Во-вторых: Вы правильно заметили - не стоит использовать BDE-компоненты. В-третьих: незачем городить процедуру там, где можно обойтесь элементарным запросом Код: plaintext 1. В-четвертых: в приведенной пароцедуре отсутствует оператор SUSPEND В-пятых: процедуру которая ничего не делает, кроме возвращения resultset-a следует запускать методом Open, а не execProc. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.02.2004, 13:02 |
|
||
|
Странная ошибка InterBase 6.0 (или TStoredProc)
|
|||
|---|---|---|---|
|
#18+
авторВо-первых: не используйте 6-ю версию InterBase. Использовать очень даже можно, если знать по ее известные глюки. Например если прочитать это http://www.ibase.ru/devinfo/ibstp.htm то все будет ОК! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2004, 16:34 |
|
||
|
Странная ошибка InterBase 6.0 (или TStoredProc)
|
|||
|---|---|---|---|
|
#18+
Нихрена оно Ок не будет. Ибо глюки только этим не ограничиваются. Почитай, сколько их было исправлено командой FireBird . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.02.2004, 17:33 |
|
||
|
|

start [/forum/topic.php?fid=40&gotonew=1&tid=1579207]: |
0ms |
get settings: |
7ms |
get forum list: |
21ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
169ms |
get topic data: |
12ms |
get first new msg: |
6ms |
get forum data: |
3ms |
get page messages: |
69ms |
get tp. blocked users: |
1ms |
| others: | 213ms |
| total: | 507ms |

| 0 / 0 |
