Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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 и величина передаваемого фактического параметра?



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

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

Наверх





Память: 0.47 MB
Время: 0.006 c
3-42655
kaa1971
2002-01-20 22:33
2002.02.14
Как создать новый индекс в существующей базе Paradox


1-42794
Stexen
2002-01-28 22:29
2002.02.14
Nishita ViewLib


1-42786
SP
2002-01-31 11:53
2002.02.14
Контрольна сумма файла


1-42770
HDD
2002-01-30 05:54
2002.02.14
Помогите пожалуйста!


3-42703
Sergant
2002-01-22 12:29
2002.02.14
Досуп к базам Btrieve





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский