Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Ошибка при работе с параметрами Firebird 1.5 [D7, Firebird 1.5]


Страницы:   1 2

northling ©   (2006-08-22 09:15:00) 

Здравствуйте.

Работаю с firebird 1.5, delphi 7.

В tibquery использую параметр в запросе, получаю следующее при вызове Open (значение параметру присвоено):

---------------------------
Debugger Exception Notification
---------------------------
Project eng.exe raised exception class EIBInterBaseError with message 'Dynamic SQL Error
SQL error code = -206
Column unknown
PAR1
At line 11, column 17'. Process stopped. Use Step or Run to continue.
---------------------------

PAR1 - это как раз имя параметра. Запрос такой:

SELECT
C.NAME,
C.CAPTION,
C.TYPE_ID,
CPAR.NAME AS PARENT_NAME,
C.OWNER
       
FROM FORM F
   INNER JOIN CONTROL C ON F.FORM_ID = C.FORM_ID
   LEFT JOIN CONTROL CPAR ON C.PARENT_ID = CPAR.CONTROL_ID
WHERE F.NAME = :par1
ORDER BY C.OWNER, C.CREATE_ORDER

В чём ошибка???

P.S.

Ошибка в этом месте:

procedure TIBSQL.Prepare;
...
   Call(FGDSLibrary.isc_dsql_prepare(StatusVector, TRHandle, @FHandle, 0,
             PChar(FProcessedSQL.Text), Database.SQLDialect, nil), True);
...


PEAKTOP   (2006-08-26 15:57:00) [1]


> Если собираетесь использовать FB, то уходите с IBX.
> Фичи FB 2.0 там не поддерживаются и не будут поддерживаться.

Присоеденяюсь, особенно необходимые вещи
http://www.delphimaster.ru/cgi-bin/forum.pl?id=1156510745&n=1


vlad-mal   (2006-08-26 15:41:00) [2]

Если собираетесь использовать FB, то уходите с IBX.
Фичи FB 2.0 там не поддерживаются и не будут поддерживаться.


unknown   (2006-08-23 11:16:00) [3]


> northling   (23.08.06 11:09) [20]
> а вообще, грешу не на винду, а на fb.

"Чукча не читатель, чукча писатель" (c) русская народная шутка.


StriderMan   (2006-08-23 11:14:00) [4]


> northling   (23.08.06 11:09) [20]
> а вообще, грешу не на винду, а на fb.

у меня D7 + IBX + FB прекрасно работает. ищи проблему у себя.

а [9] пробовал????


Dok   (2006-08-23 11:12:00) [5]


> а вообще, грешу не на винду, а на fb.

зря


northling   (2006-08-23 11:09:00) [6]

2 Sergey13
причем тут секретность? я ж говорю - ЛЮБОЙ запрос, где я пытаюсь использовать параметры, не работает. Брал из хелпа пример, делал под него таблицу, и тот же результат - ошибка.

а вообще, грешу не на винду, а на fb.


unknown   (2006-08-23 11:07:00) [7]

Попробовал воспроизвести эту ошибку. Получилось :)
Вылезает при ParamCheck=false;


Dok   (2006-08-23 10:51:00) [8]

тогда афтор тупит где-то. Гадать нет смысла. Телепат уволилися.


unknown   (2006-08-23 10:50:00) [9]


> Dok   (23.08.06 10:44) [16]

Нормально дружит. И с FB 2 дружит.


Dok   (2006-08-23 10:44:00) [10]

А вы уверены что ibx нормально дужит с ФБ 1.5? с 1.0 - да, а вот с 1.5?


StriderMan   (2006-08-23 09:52:00) [11]


> перед prepare там всё, как и было, т.е. "where f.anme = :par1".

видать IBQuery не распознал :par1как параметр. Если бы распознал, в тексте были бы вопросики.

а что с ParamByName?


Sergey13   (2006-08-23 09:17:00) [12]

> [13] northling   (23.08.06 09:15)
> там передаётся в процедуру вариантный массив, и присваивается
> массиву параметров по-элементно.
> НО!
Код секретный? Тогда грешить можно и на винду. Дело твое.


northling   (2006-08-23 09:15:00) [13]

2 Sergey13

там передаётся в процедуру вариантный массив, и присваивается массиву параметров по-элементно.
НО!
проблема-то в том, что вообще с параметрами у меня не фурычит ibquery. Т.е. простейшее .param[0].value = 'blabla' даёт ошибку.


northling   (2006-08-23 09:13:00) [14]

2 StriderMan

всё нормально, трэйсил - value параметра заполнено. что касается текста запроса, то перед prepare там всё, как и было, т.е. "where f.anme = :par1".

хотя где-то перед этим, вроде, было "where f.anme = ?".
точнее могу дома посмотреть.


StriderMan   (2006-08-23 08:51:00) [15]

поставь брякпоинт на Prepare, и посмотри текст запроса (query.SQL.Text), там в интересующей нас строке должно быть что-то типа

...
WHERE F.NAME = ????
....


и там же посмотри query.ParamByName('par1').AsString


Sergey13   (2006-08-23 08:43:00) [16]

> [5] northling   (22.08.06 19:25)
> значение присваиваю так : query.Params[i].Value := 'frmMain';
В цикле что-ли? Код приводи.


StriderMan   (2006-08-23 08:37:00) [17]

1. попробуй присваивать параметр так:
 query. ParamByName('par1'). AsString:= 'frmMain';

2. Есть такая библиотека, gds32.dll, лежит в систем32 кажется. Это клиентская библиотека для InterBase. Так вот, ее надо поменять на fbclient.dll, входящую в поставку FireBird (переименовать fbclient.dll в gds32.dll, и положить вместо той).


Sergey13   (2006-08-23 08:26:00) [18]

> [7] northling   (22.08.06 20:59)

Запрос статически прописан в кверике или динамически формируется. Если второе - приведи код полностью.


northling   (2006-08-22 20:59:00) [19]

короче, беда явно в isc_dsql_prepare.

может, как-то иначе эта функция реализована в fb?


Dok   (2006-08-22 19:34:00) [20]

а простой запрос с параметром? типа select * from F where Name = :Name?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо