Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.14;
Скачать: [xml.tar.bz2];




Вниз

Помогите пожалуйста! 


DeNNiss   (2002-01-17 08:08) [0]

Имеется такой запрос:

with DM.Query5 do begin
SQL.Clear;
Close;
SQL.Add("SELECT * FROM DATA WHERE LPUMG = :LPUMG AND DATA = :DATA AND KABEL = :KABEL")
ParamByName("LPUMG").Value := DM.tbData.FieldByName("lpumg").AsString;
ParamByName("DATA").Value := DM.tbData.FieldByName("Data").AsDateTime;
ParamByName("KABEL").Value := DM.tbData.FieldByName("NumKabel").AsInteger;
Open;
end;


Но, ругается на последний параметр: ParamByName("KABEL").Value := DM.tbData.FieldByNamе("NumKabel").AsInteger;, пишет "Несоответствие типов данных в условии отбора"... Без этого параметра все работает зыко. В чем проблема, подскажите?



Turalyon   (2002-01-17 08:32) [1]

Попробуй поставить
ParamByName("KABEL").AsInteger = DM.tbData.FieldByName("NumKabel").AsInteger;
Либо вообще повыкидывай все эти параметры и делай строками, как я писал тебе в одном из примеров ниже.



roottim   (2002-01-17 08:39) [2]

в пр-пе должно работать!
советую посмотреть его через скажем ShowMessage... все ли правильно в синтаксисе... и соответствии типу поля



DeNNiss   (2002-01-17 08:47) [3]

> Turalyon, спасибо большое за помощь, но я пробовал твой код, там видимо действительно проблема в кавычках, не получилось, в книге нашел нужный пример, все вроде заработало, но возникла вот новая проблема.



Turalyon   (2002-01-17 09:14) [4]

>DeNNiss
Попробуй вот так

SQL.Add("SELECT * FROM DATA")
SQL.Add("where LPUMG = "" + DM.tbData.FieldByName("lpumg").AsString + """);
SQL.Add("and KABEL = " + DM.tbData.FieldByName("NumKabel").AsString);
SQL.Add("and DATA = "" + DM.tbData.FieldByName("Data").AsString + """);

Или если не будет работать
То попробуй поменять последнюю строку на такую

SQL.Add("and DATA = "" + DateToStr(DM.tbData.FieldByName("Data").AsDateTime) + """);

Да и еще не очень хорошо выглядят названия полей, особенно data (ИМХО), можно напороться на зарезервированные слова и будешь потом долго думать почему не работает.



Turalyon   (2002-01-17 09:15) [5]

Да не очень внятно получилось в хвостах... там написана двойная кавычка в одинарных " " "



Desdechado   (2002-01-17 10:03) [6]

не используй
ParamByName("KABEL").Value
это приводит к вариантному преобразованию, что в итоге будет - только дельфи знает. Используй явное AsInteger, AsDateTime и т.д.



DeNNiss   (2002-01-17 11:34) [7]

Нет, никак не получается, уперлось Дельфи и ни в какую :(( По разному пробовал - нифига, таже ошибка, хоть тресни....



Wind   (2002-01-17 12:01) [8]

Во-первых, если ты пишешь запрос для большой БД, то не советую использовать конкатенацию строк - работает намного дольше, чем через ParamByName
Во-вторых, не используй ParamByName.Value - лучше укажи явное преобразование типов.
Ну и последнее - по возможности откажись от БДЕ, если работаешь через нее например с Ораклом.



Turalyon   (2002-01-17 12:49) [9]

>Wind
Во-первых, если ты пишешь запрос для большой БД, то не советую использовать конкатенацию строк - работает намного дольше, чем через ParamByName
Не знал такого... А почему?

>DeNNiss
Скажи какой у тебя тип поля numKabel и тип поля KABEL???



plis   (2002-01-17 20:46) [10]

лучший вариант
установи DataSource к набору DM.tbData
DM.Query5.Datasuorce сошли на DataSource
и тогда не надо уже присваивать параметры

with DM.Query5 do begin
SQL.Clear;
Close;
SQL.Add("SELECT * FROM DATA WHERE LPUMG = :LPUMG AND DATA = :DATA AND KABEL = :KABEL")
Open;
end;



Dok_3D   (2002-01-18 07:02) [11]

>DeNNiss
Но, ругается на последний параметр: ParamByName("KABEL").Value := DM.tbData.FieldByNamе("NumKabel").AsInteger;, пишет "Несоответствие типов данных в условии отбора"...

Ставь принудительно для каждого параметра конструкцию типа -
ParamByName("KABEL").DataType:=ftInteger;



Леван   (2002-01-21 08:36) [12]

А какого типа kabel from DATA? numeric or decimal и величина передаваемого фактического параметра?




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.02.14;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.74 MB
Время: 0.015 c
1-42761           vopros                2002-01-31 09:42  2002.02.14  
Как запустить из Delphi DOS комманду?


14-42844          Oleg Gashev           2001-12-24 22:43  2002.02.14  
С Новым Годом!!!


3-42702           ava                   2002-01-22 23:17  2002.02.14  
Как перенести, а затем востановить, данные из таблицы


3-42647           SDS                   2002-01-18 14:35  2002.02.14  
Формат файла


14-42854          Nikolay               2001-12-24 15:33  2002.02.14  
О темах......