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

Вниз

Опять SQL   Найти похожие ветки 

 
Мадик777   (2005-12-18 16:29) [0]

Есть компонент TDateTimePicker, есть база Base в ней три поля num, date, memo Помогите с запросом SQL, нужно чтобы в DBGride отображались только те поля у которых совпадает поля "Date" с DateTimePicker.date
использую ADOQuery


 
mfender ©   (2005-12-18 16:46) [1]


procedure TForm1.DateTimePicker1Change(Sender: TObject);
var SD, ED: TDateTime;
   Year, Month, Day: Word;
begin
 {Сначала узнаем диапазон}
 DecodeDate(DateTimePicker1.Date, Year, Month, Day);
 SD := StartOfADay(Year, Month, Day); // Начало суток
 ED := EndOfADay(Year, Month, Day); // Конец суток
 {Соответственно запрос к БД будет выглядеть, взависимости от БД примерно так:
 "SELECT field FROM table WHERE datefieldvalue BETWEEN <преобразуем SD в нужный вид> AND
   <ED преобразуем в нужный вид>"}
end;


 
з. танька   (2005-12-18 16:46) [2]

вероятно проблема заключается в том шо как вставить в запрос значение типа дата/время? нужно делать параметрический запрос.

у TAdoQuery есть св-во Parameters посмотри. добавляешь туды параметр типа дата/время например par1 он будет называться, присваиваешь ему значение DateTimePicker.date, делаешь TADOQuery.prepare а затем выполняешь следующий запрос:

"SELECT * FROM table1 WHERE table1.date = :par1"

зы: в базе таблица то должна быть какая нибудь в моем примере это table1


 
Мадик777   (2005-12-18 18:37) [3]

сделал как сказала Танька, создал в обработчике события OnCreate Form1 этот код

//  Qmain.Close;
 Qmain.Prepared;
 Qmain.Parameters[0].Value:=DateTimePicker1.Date;
 Qmain.SQL.Clear;
 Qmain.SQL.Add("SELECT * from Jurnal WHERE DateT=:par1");
 QMain.Open;

получилось, но... после того как беру другую дату и выполняю тот же запрос выходит ошибка...
Parameter object is properly defined. Inconsistent or incomplete information was provided
код в обработчике события OnChange компонента TDateTimePicker

 Qmain.Close;
 Qmain.Prepared;
 Qmain.Parameters[0].Value:=DateTimePicker1.Date;
 Qmain.SQL.Clear;
 Qmain.SQL.Add("SELECT * from Jurnal WHERE DateT=:par1");
 QMain.Open;


Может что то не так делаю?


 
Плохиш ©   (2005-12-18 23:32) [4]


Qmain.Close;
Qmain.SQL.Text := "SELECT * from Jurnal WHERE DateT=:par1";
//Qmain.Prepared; // Вместо этого лучше выставить свойство Prepared один раз
Qmain.Parameters[0].Value:=DateTimePicker1.Date;
QMain.Open;


PS. Прикольно, когда программы пишут способом накидать команд как попало, может заработает.


 
Плохиш ©   (2005-12-18 23:57) [5]

PPS. Кстати, не понятно, зачем один и тот же запрос постоянно записывать в SQL?



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

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

Наверх




Память: 0.47 MB
Время: 0.017 c
3-1131922025
mfender
2005-11-14 01:47
2006.01.08
Empty Dataset, новая запись и Stack Overflow...


14-1134409257
Энди
2005-12-12 20:40
2006.01.08
Проблема спящего брадобрея


14-1134230811
Kerk
2005-12-10 19:06
2006.01.08
Федеральная служба государственной статистики.


14-1134623082
begin...end
2005-12-15 08:04
2006.01.08
С Днём рождения! 15 декабря


1-1134022139
Dima_DD
2005-12-08 09:08
2006.01.08
Ролик мышки на DBGrid