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

Вниз

Опять 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.45 MB
Время: 0.007 c
4-1131041824
spyrytus
2005-11-03 21:17
2006.01.08
Как написать драйвер с помощью DDK под WinNT ?


14-1134321526
Карелин Артем
2005-12-11 20:18
2006.01.08
А я в бассейне открытом плавал на днях в снег.


2-1135054933
Новенькая
2005-12-20 08:02
2006.01.08
SaveDialog


3-1131922025
mfender
2005-11-14 01:47
2006.01.08
Empty Dataset, новая запись и Stack Overflow...


2-1135069152
medved_68
2005-12-20 11:59
2006.01.08
Список оборудования





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