Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.07.25;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.039 c
14-1089295635
gn
2004-07-08 18:07
2004.07.25
патент на тело:ни шагу без некрасофта


1-1089149288
Diver
2004-07-07 01:28
2004.07.25
Как можно преобразовать любое изображение(битмап любого формата)


3-1088672000
GanibalLector
2004-07-01 12:53
2004.07.25
два TIBTransaction !


14-1089107031
REA
2004-07-06 13:43
2004.07.25
Stop bits


6-1085802948
Vizzor
2004-05-29 07:55
2004.07.25
Как можно проверить включен ли HTTP/FTP через сокеты?