Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 26.05.2012, 15:38   #11
Follout
Пользователь
 
Регистрация: 07.06.2010
Сообщений: 12
По умолчанию

Код:
procedure TForm1.Button4Click(Sender: TObject);
begin

DateTimePicker1.Time:=StrToTime('0:00:00');
DateTimePicker2.Time:=StrToTime('0:00:00');

DataModule1.ADOQuery1.Active:=false;
DataModule1.ADOQuery1.SQL.Clear;
DataModule1.ADOQuery1.SQL.Add('SELECT* FROM tab1 WHERE дата BETWEEN :StartDate AND :FinishDate ');
DataModule1.ADOQuery1.Parameters.ParamByName('StartDate').Value:=DateTimePicker1.DateTime;
DataModule1.ADOQuery1.Parameters.ParamByName('FinishDate').Value:=DateTimePicker2.DateTime;
DataModule1.ADOQuery1.Active:=true;
end;
Практически то же написал Аватар, но мало-ли, может поможет

Последний раз редактировалось Follout; 26.05.2012 в 15:41.
Follout вне форума Ответить с цитированием
Старый 29.05.2012, 12:02   #12
m1zantrop
Форумчанин
 
Регистрация: 11.04.2012
Сообщений: 103
По умолчанию

нет, нефига
m1zantrop вне форума Ответить с цитированием
Старый 29.05.2012, 12:49   #13
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

что - "нет, нефига" ?!
Если запрос не работает, тогда:
1) приведите ошибку, как именно запрос не работает.

2) приведите структуру таблицы tab1 (там есть поле дата ? оно точно типа дата/вермя ?)

3) пробовали ли заключить имя поля в квадратные скобки:
Код:
DataModule1.ADOQuery1.SQL.Add('SELECT * FROM tab1 WHERE [дата] BETWEEN :StartDate AND :FinishDate ');
4) может быть, вы уже напортили что-то в свойствах ADOQuery1 ?!
попробуйте кинуть НОВЫЙ TAdoQuery и выполнить с ним эту же операцию...
или запакуйте исходники проекта + тестовая база в архив и выложите сюда, на форум. можно будет посмотреть, что там не работает...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.06.2012, 17:25   #14
m1zantrop
Форумчанин
 
Регистрация: 11.04.2012
Сообщений: 103
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
что - "нет, нефига" ?!
Если запрос не работает, тогда:
1) приведите ошибку, как именно запрос не работает.

2) приведите структуру таблицы tab1 (там есть поле дата ? оно точно типа дата/вермя ?)

3) пробовали ли заключить имя поля в квадратные скобки:
Код:
DataModule1.ADOQuery1.SQL.Add('SELECT * FROM tab1 WHERE [дата] BETWEEN :StartDate AND :FinishDate ');
4) может быть, вы уже напортили что-то в свойствах ADOQuery1 ?!
попробуйте кинуть НОВЫЙ TAdoQuery и выполнить с ним эту же операцию...
или запакуйте исходники проекта + тестовая база в архив и выложите сюда, на форум. можно будет посмотреть, что там не работает...
прикрепил в архиве
Вложения
Тип файла: rar testtttttttttt.rar (375.6 Кб, 5 просмотров)
m1zantrop вне форума Ответить с цитированием
Старый 06.06.2012, 10:24   #15
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

во-первых, зачем использовать Query и DataSource, расположенные НА ДРУГИХ ФОРМАХ?!?!?

например, с каким датасоурсом у Вас связан Ваш грид на форме Form1 ("Результаты тестирования") ??!
смотрим и видим, что он связан с Form2.DataSource1
открываем форму Form2 (Unit2) и видим, что там DataSource1 связан с Adoquery1 расположенным тут же, на форме Form2 !!!!

поэтому на кнопке Button4 уже, КАК МИНИМУМ, должен быть такой код:
Код:
DateTimePicker1.Time:=StrToTime('0:00:00');
DateTimePicker2.Time:=StrToTime('0:00:00');

Form2.ADOQuery1.Active:=false;
Form2.ADOQuery1.SQL.Clear;
Form2.ADOQuery1.SQL.Add('SELECT* FROM rezult WHERE data BETWEEN :StartDate AND :FinishDate ');
Form2.ADOQuery1.Parameters.ParamByName('StartDate').Value:=DateTimePicker1.DateTime;
Form2.ADOQuery1.Parameters.ParamByName('FinishDate').Value:=DateTimePicker2.DateTime;
Form2.ADOQuery1.Active:=true;
во-вторых, если временная составляющая не нужна, я бы предложил такой код:
Код:
procedure TForm1.Button4Click(Sender: TObject);
var Dt1, Dt2 : TDateTime;
begin
  Form2.ADOQuery1.Active:=false;
  Form2.ADOQuery1.SQL.Clear;
  Form2.ADOQuery1.SQL.Add('SELECT * FROM rezult WHERE INT(data) BETWEEN :StartDate AND :FinishDate ');
  Dt1 := Trunc(DateTimePicker1.Date);
  Form2.ADOQuery1.Parameters.ParamByName('StartDate').Value := Dt1;
  Dt2 := Trunc(DateTimePicker2.Date);
  Form2.ADOQuery1.Parameters.ParamByName('FinishDate').Value := Dt2;
  Form2.ADOQuery1.Active:=true;
end;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 06.06.2012, 11:34   #16
m1zantrop
Форумчанин
 
Регистрация: 11.04.2012
Сообщений: 103
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
во-первых, зачем использовать Query и DataSource, расположенные НА ДРУГИХ ФОРМАХ?!?!?

например, с каким датасоурсом у Вас связан Ваш грид на форме Form1 ("Результаты тестирования") ??!
смотрим и видим, что он связан с Form2.DataSource1
открываем форму Form2 (Unit2) и видим, что там DataSource1 связан с Adoquery1 расположенным тут же, на форме Form2 !!!!

поэтому на кнопке Button4 уже, КАК МИНИМУМ, должен быть такой код:
Код:
DateTimePicker1.Time:=StrToTime('0:00:00');
DateTimePicker2.Time:=StrToTime('0:00:00');

Form2.ADOQuery1.Active:=false;
Form2.ADOQuery1.SQL.Clear;
Form2.ADOQuery1.SQL.Add('SELECT* FROM rezult WHERE data BETWEEN :StartDate AND :FinishDate ');
Form2.ADOQuery1.Parameters.ParamByName('StartDate').Value:=DateTimePicker1.DateTime;
Form2.ADOQuery1.Parameters.ParamByName('FinishDate').Value:=DateTimePicker2.DateTime;
Form2.ADOQuery1.Active:=true;
во-вторых, если временная составляющая не нужна, я бы предложил такой код:
Код:
procedure TForm1.Button4Click(Sender: TObject);
var Dt1, Dt2 : TDateTime;
begin
  Form2.ADOQuery1.Active:=false;
  Form2.ADOQuery1.SQL.Clear;
  Form2.ADOQuery1.SQL.Add('SELECT * FROM rezult WHERE INT(data) BETWEEN :StartDate AND :FinishDate ');
  Dt1 := Trunc(DateTimePicker1.Date);
  Form2.ADOQuery1.Parameters.ParamByName('StartDate').Value := Dt1;
  Dt2 := Trunc(DateTimePicker2.Date);
  Form2.ADOQuery1.Parameters.ParamByName('FinishDate').Value := Dt2;
  Form2.ADOQuery1.Active:=true;
end;
спасибо,
m1zantrop вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
по дате рождения и текущей дате (день, месяц, год) определить сколько дней до дня рождения (код на ПАСКАЛЕ) Николай1 Помощь студентам 1 16.02.2012 09:07
Отбор статистики resquimi Помощь студентам 2 23.04.2011 10:03
суммарный отбор Alexi БД в Delphi 9 15.04.2009 15:26
Запрос по дате (отбор по месяцу) Dark_Alamez Microsoft Office Access 6 05.04.2009 21:36