![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Несоответствие типов в ;SQL Запросе - наверное 1001 вопрос [D6, Paradox]
NataliK © (2003-06-06 11:49:00)Подскажите что пересмотреть, есть
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;
Соловьев (2003-06-06 14:39:00) [1]
> 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);
>
смысл в параметрах, когда запрос, формируется?
Наталия (2003-06-06 12:48:00) [2]Разбейте запрос на два. Попробуйте выполнить по отдельности и без параметров. Проверьте синтаксис. Попробуйте не формировать запрос динамически, а выполнить его в дизайн-тайм. Если в запросе используете union, то должно совпадать количество и типы полей возвращаемых обеими его частями.
NataliK (2003-06-06 12:45:00) [3]ВСЕМ ОГРОМНОЕ СПАСИБО. Много ли надо для счастья, сегодня!!
ladybird (2003-06-06 12:38:00) [4]пройдите по шагам. в какой строке ошибка?
NataliK (2003-06-06 12:36:00) [5]типы полей 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)"
Наталия (2003-06-06 12:20:00) [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.* - скорее всего ошибка именно в этом
KoluChi (2003-06-06 12:10:00) [7]Вы запрос проверяли? Если вместо параметров поставить конкретные значения будет работать?
типы полей km.TN и pl.TN - целые числа?
NataliK (2003-06-06 12:04:00) [8]KoluChi
Получаю
Debugger Exception Notification
Project Project1.exe raised exception class EDBEngineError with message "Type mismatch in expression."
Где-то чего-то я не вижу!!
KoluChi (2003-06-06 12:00:00) [9]StrToIntDef(Edit1.text, 0);
NataliK (2003-06-06 11:57:00) [10]ladybird
К моему огорчению, тоже самое.
ladybird (2003-06-06 11:51:00) [11]два параметра prm1 и prm2
SQL.Add("select km.* from "table1.db" KM where km.TN =: prm1union all select pl.* from "table2.db" Pl where pl.TN=: prm2");