Форум: "Базы";
Текущий архив: 2005.12.04;
Скачать: [xml.tar.bz2];
Внизsqlduery.params.parambyname( pf2 ).asstring >>> error 22018 Найти похожие ветки
← →
zig (2005-10-21 23:50) [0]всем привет народ помогите разобратся
имеется sql запрос (если запись есть то изменить поле если записи нет то добавить запись)
и все в нем работает если не присваивать pf2 значение состоящие из цифр и букв ("123qwe")
в ентом случае получаем сообщение от sql server error 22018,
а просто с цифрами ("123") все работает.
в таблице все поля имеют тип varchar(254) not nul.
что я делаю не так ??
sql:="update tbl1 set f1 = :pf1 where f2= :pf2 if @@rowcount = 0 insert into tbl1 (f1,f2) value (:pf1,:pf2)"
sqlquery1.sql.text:=sql;
sqlquery1.params.parambyname("pf1").asstring:="123";
sqlquery1.params.parambyname("pf2").asstring:="123qwe";
sqlquery1.execsql;
← →
sniknik © (2005-10-22 00:03) [1]2 параметра с одним именем не допускается, это не BDE.
← →
Anatoly Podgoretsky © (2005-10-22 13:12) [2]Может и допускаются, но не имеют смысла. На самом деле это P[0], P[1], P[2], P[3], а если он по недоразумению назвал почему то разные параметры одним и тем же именем, то он ССЗБ
← →
zig (2005-10-23 02:19) [3]изменение имен параметров на :
sql:="update tbl1 set f1 = :pf1 where f2= :pf2 if @@rowcount = 0 insert into tbl1 (f1,f2) value (:pf3,:pf4)"
sqlquery1.sql.text:=sql;
sqlquery1.params.parambyname("pf1").asstring:="123";
sqlquery1.params.parambyname("pf2").asstring:="123qwe";
sqlquery1.params.parambyname("pf3").asstring:="123";
sqlquery1.params.parambyname("pf4").asstring:="123qwe";
sqlquery1.execsql;
ни чего не изменили таже самая ошибка !
← →
sniknik © (2005-10-23 10:08) [4]второй глюк:
в запросе должно быть values, странно т.к. говориш в каких то случаях это работало... а должно всегда ошибку синтаксиса давать.
что за сообщение у ошибки 22018? не может быть чтобы просто цифру давало, ошибки mssql обычно сопровождаются текстом указывающим ее причину... если есть только бред в виде цифры.... ну тоже может и mssql, но всетаки большая вероятность что это местные программисты "постарались" в общем посмотри тригеры на вставку, констраинты у таблици.
потом приведи класс ошибки (знать где это, в mssql/delphi...) в общем нужны вот эти значенияtry
...
except
on E: Exception do begin
... := E.ClassName;
... := E.Message;
end;
end;
← →
sniknik © (2005-10-23 10:25) [5]да, еще. попробуй параметры присваивать через value
sqlquery1.params.parambyname("pf1").Value:="123";
... и т.д.
конечно же бред, но вдруг в DBExpress неправильная реализация в методе As... т.д. и тип неверно определяет. а value это вариант, т.е. то самое что в mssql в виде параметра "уходит".
← →
zig (2005-10-23 12:51) [6]TO sninik
value > values это очепятка ))
ошибка 22018 трактуется макрософтом как невозможность конвертачии
данных
← →
Anatoly Podgoretsky © (2005-10-23 13:09) [7]Вот теперь настало время привести метаданные и типы sqlquery1.params[i]
← →
sniknik © (2005-10-23 13:33) [8]> value > values это очепятка ))
а других опечаток нет? например вот это вот
sql:="update tbl1 set f1 = :pf1 where f2= :pf2 if @@rowcount = 0 insert into tbl1 (f1,f2) value (:pf3,:pf4)"
sqlquery1.sql.text:=sql;
выполняется к коде? или это "отсебятина", а реально запрос прописан в дизайн тайме? и там есть уже предопределенные параметры...
> ошибка 22018 трактуется макрософтом как невозможность конвертачии данных
разве я просил узнать как что мелкософтом трактуется?
я вроде вполне конкретные вещи спрашивал проверить в [4] [5], и не просто так спрашивал, а потому что (см. описание в [4]). а в [5] это уже заранее предположение что тип неправилен в уже в дельфе, и проверка (именно конвертации данных изза несоответствий типов) при задании значения параметра по другому.
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2005.12.04;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.036 c