Форум: "Базы";
Текущий архив: 2004.07.25;
Скачать: [xml.tar.bz2];
ВнизDelphi6 DB2 Найти похожие ветки
← →
Anisa (2004-07-01 09:26) [0]Просветите, кто знает. SQLQuery примерно такого типа
UPDATE AAA SET
P1=:par1
WHERE p2=:par2 and p3=:par3. Так вот, когда в условиях числовые параметры, то работает, а со строками не отрабатывается.
← →
Наталия © (2004-07-01 09:27) [1]Какую ошибку выдает?
Поля имеют какой тип?
← →
Anisa (2004-07-01 09:40) [2]Одно поле в WHERE имеет float, второе string.
если оставить только float, то запрос отрабатывается.
как только в условие добавляю string, то SQLQuery.ExecSQL возвращает 0.
string по длине одинаковые, верхний регистр. что еще надо?
← →
Курдль © (2004-07-01 09:42) [3]like
← →
Johnmen © (2004-07-01 09:43) [4]>что еще надо?
Привести конкретный кусок кода с необходимыми пояснениями...
← →
Anisa (2004-07-01 09:53) [5]Like тоже не работает. Текст SQL следующий:
update Pensioner set
Policser=:ps, Policnum=:pn,
Address=:a, Addresbirth=:ab
where Pensioner.Insnumber=:Insnumber and Pensioner.Family=:Family
//здесь Insnumber - float, Family-string
// в таблице PENS типы столбцов соответствуют параметрам запроса
Кусок кода:
while not PENS.Eof do
begin
SQLQuery7.Close;
SQLQuery7.ParamByName("ps").Asstring:=PENS.fields[1].value;
SQLQuery7.ParamByName("pn").Asstring:=PENS.fields[2].value;
SQLQuery7.ParamByName("Insnumber").Asfloat:=PENS.fields[0].value;
SQLQuery7.ParamByName("Family").value:=AnsiUpperCase(PENS.fields[3].value);
if not varisnull(PENS.fields[8].value) then SQLQuery7.ParamByName("a").Asstring:=PENS.fields[8].value
else SQLQuery7.ParamByName("a").Asstring := "";
if not varisnull(PENS.fields[13].value) then SQLQuery7.ParamByName("ab").Asstring:=PENS.fields[13].value
else SQLQuery7.ParamByName("ab").Asstring := "";
i := SQLQuery7.ExecSQL();
cc := SQLQuery7.RowsAffected;
В результате i=cc=0
← →
Курдль © (2004-07-01 09:58) [6]А если уточнить:
SQLQuery7.ParamByName("Family").value
SQLQuery7.ParamByName("Family").AsString
← →
Johnmen © (2004-07-01 09:58) [7]Похоже дело в SQLQuery7.ParamByName("Insnumber").Asfloat
Почему номер по сути определяется, как с плавающей точкой по содержимому ???
← →
Курдль © (2004-07-01 10:02) [8]Мне кажется, что вариантные модификаторы "
.value
" использовать следует, только когда нет другого выхода.
Кстати, и конструкциюvarisnull(PENS.fields[8].value)
можно заменить наPENS.fields[8].IsNull
а еще лучше - наPENS.FieldByName("field_name").IsNull
← →
Anisa (2004-07-01 10:03) [9]По поводу: value и asstring - уже пробовали, ему все равно не помагает.
С asfloat работает, и если asinteger, тоже все хорошо
при добавлении string проблема-то.
Эту же программулю делали на С# в VS.NET, там передача параметров идет как CHAR() и все в порядке, в Delphi уже измучились
← →
Курдль © (2004-07-01 10:08) [10]А если попробовать завершать строку #0?
← →
Johnmen © (2004-07-01 10:10) [11]Пиши
SQLQuery7.ParamByName("Family").AsString:=AnsiUpperCase(PENS.fields[3].AsString);
Смотри, как выглядит реальный запрос.
Фамилии в табл. не в верхнем регистре.
...UPPER(Pensioner.Family)=:Family
← →
Anisa (2004-07-01 10:29) [12]ОГРОМНОЕ ВСЕМ СПАСИБО ЗА ПОМОЩЬ
действительно, ...UPPER(Pensioner.Family)=:Family
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.07.25;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.041 c