Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.69/13: Рейтинг темы: голосов - 13, средняя оценка - 4.69
33 / 58 / 13
Регистрация: 26.05.2011
Сообщений: 756
1

DateTimePicker1.Date

16.11.2011, 11:15. Показов 2417. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Помогите плиз. Я выбираю в таблице даты в диапазоне от DateTimePicker1 по DateTimePicker2.
Мне необходимо если нет записи в этом диапазоне то выводило сообщение, сообщение выводит, но при этом таблица становится пустой. Подскажите как сделать, чтобы она не становилась пустой.
Вот код в ADOQuery2.
SQL
1
2
3
SELECT * 
FROM читатели
WHERE [дата записи] BETWEEN :Dat1 AND :Dat2
Вот мой код под кнопкой.
Delphi
1
2
3
4
5
6
7
8
begin
  ADOQuery2.Close;
  ADOQuery2.Parameters.ParamByName('Dat1').Value:= DateTimePicker1.Date;
  ADOQuery2.Parameters.ParamByName('Dat2').Value:= DateTimePicker2.Date;
  ADOQuery2.Active:= True;
  DBGrid1.DataSource:= dataSource2;
  if ADOQuery2.RecordCount = 0 then ShowMessage('Записей за данный период нет!!!');
end;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.11.2011, 11:15
Ответы с готовыми решениями:

datetimepicker1
Здравствуйте, пожалуйста, подскажите я хочу автомат дата datetimepicker1

DateTimePicker1 и ADOQuery
Данные из DateTimePicker1 сохранить в базе SQL Server (таблица Shum ,поле data_p(тип данных...

Delphi из DateTimePicker1 в Word
Здарова, Формучане. Как вывести DateTimePicker1 в Word? Написал DateTimePicker1.Format, но не...

Фильтрация DateTimePicker1 и DateTimePicker2
Привет всем, знаю тема баян, но может поможете справится как сделать фильтрацию по дате используя...

8
Тимуровец
445 / 285 / 50
Регистрация: 10.09.2009
Сообщений: 963
16.11.2011, 12:59 2
Можно просто окатывать назад, т.е. выполнить повторно запрос, но уже с другими параметрами для дат.
Можно делать запрос, а ограничение потом уже накладывать через фильтр вместо параметров.
0
33 / 58 / 13
Регистрация: 26.05.2011
Сообщений: 756
16.11.2011, 14:25  [ТС] 3
Цитата Сообщение от Страдалецъ Посмотреть сообщение
Можно просто окатывать назад
что это значит

Добавлено через 50 минут
Подскажите как сделать, чтобы таблица не становилась пустой.
0
1496 / 1238 / 244
Регистрация: 04.04.2011
Сообщений: 4,362
16.11.2011, 14:35 4
Если Вы желаете, чтобы отображаемые в сетке данные не изменялись в случае если по указанному диапазону не найдено информации, используйте два TADOQuery:
- ADOQuery2 используется для отображения, т.е. грид ссылается на него
- ADOQuery1 используется для поиска, результаты его не отображаются

Сначала выполняется выборка с помощью ADOQuery1, а по ее результатам либо переоткрывается отображаемый запрос либо выдается сообщение:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
function TForm1.CheckQueryResult(DateFrom,DateTo: TDateTime): integer;
begin
  with ADOQuery1 do
    begin
     if Active then Close;
     SQL.Text := 'select count(A.*) from ('+ADOQuery2.SQL.Text+') A';
     Parameters.ParamByName(..).Value := DateFrom;
     Parameters.ParamByName(..).Value := DateTo;
     Open;
     result := RecordCount;
     Close;
    end;
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
  if CheckQueryResult(DateTimePicker1.Date,DateTimePicker2.Date)>0 then
    with ADOQuery2 do
      begin
        if Active then Close;
        Parameters.ParamByName(..).Value := DateFrom;
        Parameters.ParamByName(..).Value := DateTo;
        Open;
     end
  else 
      ShowMessage('В указанном периоде не найдено ни одной записи БД');  
end;
Добавлено через 3 минуты
Вместо
Delphi
1
 result := RecordCount
надо конечно
Delphi
1
 result := Fields[0].AsInteger;
0
33 / 58 / 13
Регистрация: 26.05.2011
Сообщений: 756
21.11.2011, 14:40  [ТС] 5
Подскажите плиз
Цитата Сообщение от MsGuns Посмотреть сообщение
CheckQueryResult
это объект или что?
0
1496 / 1238 / 244
Регистрация: 04.04.2011
Сообщений: 4,362
21.11.2011, 16:14 6
Это функция, которую я написал и ОБОЗВАЛ таким именем.
Для примера
1
33 / 58 / 13
Регистрация: 26.05.2011
Сообщений: 756
21.11.2011, 19:27  [ТС] 7
помогите с функцией выдает ошибки. Я не знаю что это за ошибки и как их исправить.
Миниатюры
DateTimePicker1.Date  
0
1496 / 1238 / 244
Регистрация: 04.04.2011
Сообщений: 4,362
22.11.2011, 11:33 8
ADOQuery1 - это как бы компонент TADOQuery, который в примере выполняет функцию Вашего ADOQuery2. Вам надо просто подставить свои имена вместо скопипастенных.
Вы действительно так тупы или прикидываетесь ?

Добавлено через 3 минуты
Т.е. Вам нужно добавить в проект еще одну комопненту TADOQuery, присвоить ей любое имя, после чего это имя указать в функции
Да, при этом не забудьте св-ву Connection присвоить то же значение, что и у ADOQuery2

Добавлено через 4 минуты
Впрочем...
Вот этот код будет работать безо добавления компоненты

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
function TForm1.CheckQueryResult(DateFrom,DateTo: TDateTime): integer;
begin
  result := -1;   
  with TADOQuery.Create(nil) do
   try
     Connection := ADOQuery2.Connection;
     SQL.Text := 'select count(A.*) from ('+ADOQuery2.SQL.Text+') A';
     Parameters.ParamByName(..).Value := DateFrom;
     Parameters.ParamByName(..).Value := DateTo;
     try
       Open;
       result := RecordCount;
       Close;
     except
     end;
   finally
     Free;
   end;
end;
0
33 / 58 / 13
Регистрация: 26.05.2011
Сообщений: 756
22.11.2011, 23:16  [ТС] 9
посмотри плиз мой проект.
Вложения
Тип файла: rar прога.rar (639.6 Кб, 32 просмотров)
0
22.11.2011, 23:16
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
22.11.2011, 23:16
Помогаю со студенческими работами здесь

Фильтрация с DateTimePicker1 по DateTimePicker2.
Здравствуйте, как реализовать фильтрацию с с DateTimePicker1 по DateTimePicker2? Используется...

Как убрать время из DateTimePicker1?
вывожу дату из DateTimePicker1 в DBGrid1(в колонку с типом данных дата и время) ...

Поиск по интервалу дат DateTimePicker1
Добрый день. Помогите пожалуйста прописать код для выборки дат. Мне нужно при вводе интервала дат...

datetimepicker1 sql запрос с оператором between
Спасибо заранее просто за то что прочитали! Уважаемые форумчане я знаю что таких тем много, но мало...

Delphi поиск по дате (компонент DateTimePicker1)
Всем добрый вечер. Возникла такая проблема. Есть компонент DateTimePicker. К нему пытаюсь...

Запрос по дате через AdoQuery (Delphi DateTimePicker1)
Доброго времени суток! Не могу написать запрос в AdoQuery2 для вывода тех дат которые равны ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru