![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Исключение при выполнении параметрического запроса [D6, IB6.x]
Жук © (2003-08-12 09:45:00)
MyIBSQL.SQL.Add("select firstdayofmonth(:ondate) from rdb$database");
MyIBSQL.ParamByName("ondate").AsDate:=StrToDate(MaskEdit1.Text);
MyIBSQL.ExecQuery;
Вызывает исключение "-804 Неизвестный тип данных", если IBServer стоит под Виндой 2000/ХР, а если под Линухом, то всё ОК. Куда копать ?
Соловьев (2003-08-12 11:01:00) [21]
используй DateTimePicker - от многих траблов уйдешь.
Zacho (2003-08-12 11:01:00) [22]
Дурацкая идея: а декларация UDF в базах под win и linux одинаковая ? Версии сервера одинаковые ?
Соловьев (2003-08-12 10:59:00) [23]
> 3) Если конкретное значение подставить, то работает
тогда не понятно... все таки в той стороне.
Жук (2003-08-12 10:57:00) [24]
> Vlad (12.08.03 10:52)
Понятно. Нет, это не в той стороне :-(
Vlad (2003-08-12 10:52:00) [25]
Если у тебя MaskEdit в котором задана маска, то проперть Text вернет тебе значение БЕЗ маски, а проперть EditText вернет значение с учетом маски
Жук (2003-08-12 10:49:00) [26]
> Vlad (12.08.03 10:37) [12]
> Попробуй присвоить параметру StrToDate(MaskEdit1.EditText)
Не понял.
Жук (2003-08-12 10:39:00) [27]
> roottim (12.08.03 10:30)
Нет.
> Zacho © (12.08.03 10:27)
1) Не процедура, функция(УДФ). Была написана под винду, потом переписана под линух.
2) Диалект 1
3) Если конкретное значение подставить, то работает
4) Из IBExpert точно такие же глюки.
Vlad (2003-08-12 10:37:00) [28]
Попробуй присвоить параметру StrToDate(MaskEdit1.EditText)
roottim (2003-08-12 10:30:00) [29]
MyIBSQL.SQL.Add("select firstdayofmonth(:ondate) from rdb$database");
MyIBSQL.ParamByName("ondate").AsDate Time:=StrToDate(MaskEdit1.T ext);
MyIBSQL.ExecQuery;
Zacho (2003-08-12 10:28:00) [30]
И еще: а если вместо параметра конкретное значение подставить ? И так же работает этот запрос из IBExpert, например ?
Zacho (2003-08-12 10:27:00) [31]
На всякий случай, приведи текст процедуры firstdayofmonth и укажи, в каком диалекте работаешь.
Жук (2003-08-12 10:26:00) [32]
> Соловьев © (12.08.03 10:19)
Это-то понятно.:-)
Я говорю, что -804 никуда не делось.
> Nikolay M. © (12.08.03 09:50)
> Johnmen © (12.08.03 09:56)
Даже при явном задании типа параметра ругается также. :-(
Может есть какие-то нюансы в "Win vs. Linux" ?
Соловьев (2003-08-12 10:19:00) [33]
MyIBSQL.SQL.Add("select firstdayofmonth(cast(:ondate as timestamp)) from rdb$database");
Жук (2003-08-12 10:16:00) [34]
> Соловьев © (12.08.03 10:06)
Ругается также, да ещё добавил "SQL warning code = 301. DATE data type is now called TIMESTAMP."
Соловьев (2003-08-12 10:06:00) [35]
А если
MyIBSQL.SQL.Add("select firstdayofmonth(cast(:ondate as date)) from rdb$database");
MyIBSQL.ParamByName("ondate").AsString:=MaskEdit1.Text;
Жук (2003-08-12 10:01:00) [36]
Nikolay M. © (12.08.03 09:50)
Johnmen © (12.08.03 09:56)
А-а ! Понял, ща попробую.
Johnmen (2003-08-12 09:56:00) [37]
MyIBSQL.ParamByName("ondate").AsDateTime:=...
Ну и тип параметра д.б. определен...
Жук (2003-08-12 09:52:00) [38]
Даже если :
MyIBSQL.SQL.Add("select firstdayofmonth(:ondate) from rdb$database");
MyIBSQL.Prepare;
Всё равно лается :-(
Nikolay M. (2003-08-12 09:50:00) [39]
MyIBSQL.ParamByName("ondate").DataType = ftDate;
?