![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Опять SQL
Мадик777 © (2005-12-18 16:29:00)Есть компонент TDateTimePicker, есть база Base в ней три поля num, date, memo Помогите с запросом SQL, нужно чтобы в DBGride отображались только те поля у которых совпадает поля 'Date' с DateTimePicker.date
использую ADOQuery
Плохиш (2005-12-18 23:57:00) [1]PPS. Кстати, не понятно, зачем один и тот же запрос постоянно записывать в SQL?
Плохиш (2005-12-18 23:32:00) [2]
Qmain.Close;
Qmain.SQL.Text := 'SELECT * from Jurnal WHERE DateT=:par1';
//Qmain.Prepared; // Вместо этого лучше выставить свойство Prepared один раз
Qmain.Parameters[0].Value:=DateTimePicker1.Date;
QMain.Open;
PS. Прикольно, когда программы пишут способом накидать команд как попало, может заработает.
Мадик777 (2005-12-18 18:37:00) [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;
Может что то не так делаю?
mfender (2005-12-18 16:46:00) [4]
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:00) [5]вероятно проблема заключается в том шо как вставить в запрос значение типа дата/время? нужно делать параметрический запрос.
у TAdoQuery есть св-во Parameters посмотри. добавляешь туды параметр типа дата/время например par1 он будет называться, присваиваешь ему значение DateTimePicker.date, делаешь TADOQuery.prepare а затем выполняешь следующий запрос:
'SELECT * FROM table1 WHERE table1.date = :par1'
зы: в базе таблица то должна быть какая нибудь в моем примере это table1