Главная страница
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.028 c
3-1131975971
alsov
2005-11-14 16:46
2006.01.08
Ошибка вывода большого числа


10-1110228903
Homa_Programer
2005-03-07 23:55
2006.01.08
Редактор формул


4-1130920730
Muchacho
2005-11-02 11:38
2006.01.08
SysListView


14-1134557299
vecna
2005-12-14 13:48
2006.01.08
про Delphi2006


14-1134644004
Pazitron_Brain
2005-12-15 13:53
2006.01.08
Я