Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2002.04.25;
Скачать: [xml.tar.bz2];

Вниз

TADOQuery...... ;(((((   Найти похожие ветки 

 
koks   (2002-04-04 12:17) [0]

Уважаемые мастера ! Помогите пожалуйста, совсем меня доканали эти параметры.

Строю запрос TADOQuery c параметрами.
В SQL пишу:

SELECT *
FROM Polished_data
WHERE (Source=:idSource) AND (Carats=:idCarats) AND (Cut=:idCut)
AND (Color=:idColor) AND (Clarity=:idClarity) AND (Price=:StorePrice) AND (Date_of_entering=:DateEntered)

далее в коде вызываю процедуру:

procedure ProcessRecord(SourceId, SizeId, CutId, ColorId, ClarityId: integer; Price: single; DateEntered: TDateTime);
begin
with adoqMyQuery do
begin
Close;
Parameters.ParamByName("idSource").Value := SourceId;
Parameters.ParamByName("idCarats").Value := SizeId;
Parameters.ParamByName("idCut").Value := CutId;
Parameters.ParamByName("idColor").Value := ColorId;
Parameters.ParamByName("idClarity").Value := ClarityId;
Parameters.ParamByName("StorePrice").Value := Price;
Parameters.ParamByName("DateEntered").Value := DateEntered;
Open;
end;
end;

для параметров ***id DataType установлена в ftInteger
для параметра StorePrice - в ftFloat
для параметра DateEntered - в ftDateTime

Передаю значения, вызываю запрос для набора параметров, для которых данные СТОПУДОВО ЕСТь. Ошибок не возникает - но данные не возвращаются. Она их просто не находит...

Подозреваю, что дело - в дате. В SQL Access дата пишется как
#01/12/02#. И никак иначе. А вот в бланке запроса можно написать и #01.12.02# и #01/12/02# - она их все равно переведет в #01/12/02#. Но я пробовал раскладывать DateEntered на Day, Month, Year, затем делать из них строку "#01/12/02#" и передавать ее как строковый параметр - результат тот-же.

DateEntered у меня берется из TDateTimePiker.Date (т.е. он без Time)

Подскажите, куда копать....


 
wicked   (2002-04-04 12:23) [1]

см. в хелпе по access"у функцию dateserial - её можно использовать в запросах...
и ваще - jet must die... :)


 
Dok_3D   (2002-04-04 13:46) [2]

Не фига не jet must die...

Слушай, так раз ты берешь TDateTimePiker.Date без Time, так попробуй
Parameters.ParamByName("DateEntered").DataType:=ftDate;

а, и вообще для всех параметров обязательно проставь соответствующий DataType. И посмотрим, как он must die.



 
koks   (2002-04-04 13:46) [3]

Сделал:

B adoqMyQuery.SQL :

SELECT *
FROM Polished_data
WHERE (Source=:idSource) AND (Carats=:idCarats) AND (Cut=:idCut)
AND (Color=:idColor) AND (Clarity=:idClarity) AND (Price=:StorePrice)
AND (Date_of_entering=DateSerial(Year:Year; Month:Month; Day:Day));

И процедура:

procedure ProcessRecord(SourceId, SizeId, CutId, ColorId, ClarityId: integer; Price: single; DateEntered: TDateTime)
var
Year, Month, Day: word;
begin
DecodeDate(DateEntered, Year, Month, Day);
with aqIsRecordUnique do
begin
Close;
Parameters.ParamByName("idSource").Value := SourceId;
Parameters.ParamByName("idCarats").Value := SizeId;
Parameters.ParamByName("idCut").Value := CutId;
Parameters.ParamByName("idColor").Value := ColorId;
Parameters.ParamByName("idClarity").Value := ClarityId;
Parameters.ParamByName("StorePrice").Value := Price;
Parameters.ParamByName("Year").Value := Year;
Parameters.ParamByName("Month").Value := Month;
Parameters.ParamByName("Day").Value := Day;
Open;
end;
end;

Вообще выдает ошибку OleException - Syntax Error (missing operator) in query expression.


 
Dok_3D   (2002-04-04 13:49) [4]

>> Вообще выдает ошибку OleException - Syntax Error (missing
>> operator) in query expression.

Не мудри, попробуй, как выше написано.


 
koks   (2002-04-04 13:50) [5]

2 Dok_3D: Я так уже пробовал... я ставлю ftDate, а он подставляет все ровно ftDateTime... наглость !



 
roottim   (2002-04-04 13:54) [6]

>DateEntered у меня берется из TDateTimePiker.Date (т.е. он без Time)
время там всеравно есть.. формат таков!. может время в базе не соотв-ть тому что ты выбираеш в пикере.

и попробуй посмотреть выполнение запроса
заменить конкретно
(Date_of_entering=#01/12/02#)

ЗЫ
и незабуть... что формат американски!.. т.е mm/dd/yy


 
wicked   (2002-04-04 14:37) [7]

2 koks ©

> AND (Date_of_entering=DateSerial(Year:Year; Month:Month;
> Day:Day));

чего-чего?.... вообще-то это пишется так:
Date_of_entering= DateSerial(:Year, :Month, :Day)
хоть vb и суксь, но знать надо....


 
IPisk   (2002-04-04 14:43) [8]

а если так
Parameters.ParamByName("DateEntered").AsDateTime := DateEntered


 
IPisk   (2002-04-04 14:47) [9]

или так

SELECT *
FROM Polished_data
WHERE (Source=:idSource) AND (Carats=:idCarats) AND (Cut=:idCut)
AND (Color=:idColor) AND (Clarity=:idClarity) AND (Price=:StorePrice)
AND (Date_of_entering=CDate("":DateEntered""))

где последний параметр должен быть строкового типа вида "01.02.2002"


 
Johnmen   (2002-04-04 14:48) [10]

Я бы попробовал для начала
Parameters.ParamByName("...").As... := .....;
чтобы не делать двойного преобразования.



 
koks   (2002-04-04 16:59) [11]

Друзья ! Спасибо за отклики !

У меня TADOQuery. А В TADOQuery.Papametrs(x) нет As***.
Поэтому вариант AsDateTime точно не прокатит..

Я кажется понял, в чем проблема - по-моему прав rottim.
Что-бы проверить мне надо кое-чего в базе переделать - убрать везде время... (которое фантомно - его как бы нет, но на самом деле оно есть...)



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

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

Наверх





Память: 0.47 MB
Время: 0.008 c
1-80892
OldGirstaris
2002-04-14 14:13
2002.04.25
Будут ли работать в Win2000 и в WinXP такие функции...


1-80904
Back
2002-04-13 03:56
2002.04.25
MDI


1-80903
VJar
2002-04-14 23:33
2002.04.25
Самокопирование


7-81101
Leviathan
2001-12-06 21:13
2002.04.25
Stay On Top


3-80740
TB2
2002-04-05 22:03
2002.04.25
ОЧЕНЬ важный для меня вопрос.





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский