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

Вниз

Несоответствие типов в SQL Запросе - наверное 1001 вопрос   Найти похожие ветки 

 
NataliK   (2003-06-06 11:49) [0]

Подскажите что пересмотреть, есть
With Query1 do begin
if active then Close ;
SQL.Clear;
SQL.Add("select km.* from "table1.db" KM where km.TN =:prm union all select pl.* from "table2.db" Pl where pl.TN=:prm");
Query1.Params[0].paramType:=ptInput;
Query1.Params[0].DataType:=ftInteger;
Query1.Params[1].paramType:=ptInput;
Query1.Params[1]. DataType:=ftInteger;
Query1.ParamByName("prm").AsInteger:= StrToInt(Edit1.text);
Open;


 
ladybird   (2003-06-06 11:51) [1]

два параметра prm1 и prm2
SQL.Add("select km.* from "table1.db" KM where km.TN =: prm1 union all select pl.* from "table2.db" Pl where pl.TN=: prm2");


 
NataliK   (2003-06-06 11:57) [2]

ladybird
К моему огорчению, тоже самое.


 
KoluChi ©   (2003-06-06 12:00) [3]

StrToIntDef(Edit1.text, 0);


 
NataliK   (2003-06-06 12:04) [4]

KoluChi

Получаю
Debugger Exception Notification
Project Project1.exe raised exception class EDBEngineError with message "Type mismatch in expression."
Где-то чего-то я не вижу!!


 
KoluChi ©   (2003-06-06 12:10) [5]

Вы запрос проверяли? Если вместо параметров поставить конкретные значения будет работать?
типы полей km.TN и pl.TN - целые числа?


 
Наталия ©   (2003-06-06 12:20) [6]

а так:
SQL.Add("select km.* from "table1.db" KM where km.TN =:prm1 union all select pl.* from "table2.db" Pl where pl.TN=:prm2");
Query1.ParamByName("prm1").AsInteger:= StrToInt(Edit1.text);
Query1.ParamByName("prm2").AsInteger:= StrToInt(Edit1.text);
и проверить, все ли типы полей km.* совпадают с pl.* - скорее всего ошибка именно в этом


 
NataliK   (2003-06-06 12:36) [7]

типы полей tn из km. совпадают с TN из pl
написала

SQL.Add("select km.TN from "P_K_EN.db" KM
where km.TN =:prm1 union all select pl.TN from "Energ_pl.db" Pl where pl.tn=:prm2");
Query1.ParamByName("prm1").AsInteger:= StrToInt(Edit1.text);
Query1.ParamByName("prm2").AsInteger:= StrToInt(Edit1.text);
получаю
Project Project1.exe raised exception class EListError with message "List index out of bounds (1)"


 
ladybird   (2003-06-06 12:38) [8]

пройдите по шагам. в какой строке ошибка?


 
NataliK   (2003-06-06 12:45) [9]

ВСЕМ ОГРОМНОЕ СПАСИБО. Много ли надо для счастья, сегодня!!


 
Наталия ©   (2003-06-06 12:48) [10]

Разбейте запрос на два. Попробуйте выполнить по отдельности и без параметров. Проверьте синтаксис. Попробуйте не формировать запрос динамически, а выполнить его в дизайн-тайм. Если в запросе используете union, то должно совпадать количество и типы полей возвращаемых обеими его частями.


 
Соловьев ©   (2003-06-06 14:39) [11]


> Query1.Params[0].paramType:=ptInput;
> Query1.Params[0].DataType:=ftInteger;
> Query1.Params[1].paramType:=ptInput;
> Query1.Params[1]. DataType:=ftInteger;
> Query1.ParamByName("prm").AsInteger:= StrToInt(Edit1.text);
>

смысл в параметрах, когда запрос, формируется?



Страницы: 1 вся ветка

Текущий архив: 2003.06.30;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.015 c
3-97502
Akademik
2003-06-05 12:51
2003.06.30
Нет каскадного удаления в таблицах Paradox


14-97797
ГОСТ
2003-06-10 01:42
2003.06.30
Будут ли отменены госты


14-97819
Andrey007
2003-06-11 10:23
2003.06.30
Вопрос по круглому кольцу.


3-97517
Hose
2003-06-05 10:35
2003.06.30
Позиционирование на вновь вставленную запись.


3-97481
Antoxa1
2003-06-05 03:51
2003.06.30
Подскажите, пожалуйста, как получить имена и типы полей БД Access