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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.05.2014, 13:51   #1
dzuga
Пользователь
 
Регистрация: 08.06.2010
Сообщений: 43
По умолчанию Sql запросы в delphi

Доброго времени суток, у меня возникла необходимость создать SQL запросы для одной из таблиц моей БД. В этой таблице есть поле "дата проверки" мне надо чтоб по запросу выводились те данные до проверки которых осталось меньше месяца. Бд создавал в delphi при помощи Microsoft access 2010. За любую помощь буду очень признателен!
dzuga вне форума Ответить с цитированием
Старый 20.05.2014, 14:02   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Код:
select * from... where datediff(m,[дата проверки],getdate())<1
По идее.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 20.05.2014, 14:05   #3
dzuga
Пользователь
 
Регистрация: 08.06.2010
Сообщений: 43
По умолчанию

К сожалению я даже не знаю куда этот код вписать. У меня в бд таблицы сделаны с помощью adotable, а везде где я читал SQL создается с помощью ado query, это первая моя проблема
dzuga вне форума Ответить с цитированием
Старый 20.05.2014, 14:16   #4
Konstantin_ua
Не судите строго
Форумчанин
 
Аватар для Konstantin_ua
 
Регистрация: 31.03.2011
Сообщений: 202
По умолчанию

дайте код посмотреть
Konstantin_ua вне форума Ответить с цитированием
Старый 20.05.2014, 14:28   #5
dzuga
Пользователь
 
Регистрация: 08.06.2010
Сообщений: 43
По умолчанию

Какой код?
dzuga вне форума Ответить с цитированием
Старый 20.05.2014, 18:49   #6
Konstantin_ua
Не судите строго
Форумчанин
 
Аватар для Konstantin_ua
 
Регистрация: 31.03.2011
Сообщений: 202
По умолчанию

Покажите как Вы подключаете BD в программе, и какие компоненты у Вас на форме есть?
Konstantin_ua вне форума Ответить с цитированием
Старый 20.05.2014, 19:56   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
везде где я читал SQL создается с помощью ado query, это первая моя проблема
Тогда для начала замени ADOTable на ADOQuery.
А потом в скажем событии создания формы впиши
Код:
with ADOQuery1 do begin
 sql.text:='select * from... where datediff(m,[дата проверки],getdate())<1';
 Activate:=true;
end;
Все остальное настраивается так же как и в Table.
Только учти - редактирование в ADOQuery сложнее чем в Table.

Ой, ну вообще-то нужно сказать что и в Table можно реализовать такую проверку.
У нее есть событие OnFilterRecord, которое можно описать так:
Код:
procedure TForm1.ADOTable1FilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
  Accept:=MonthsBetween(DataSet.FieldByName('дата проверки').AsDateTime,now)<1;
end;
Тогда ничего не нужно выбрасывать.
потом кинешь на форму кнопку, в которой напишешь:
Код:
 ADOTable1.Filtered:=True;
И твой набор отфильтруется.

Короче вот тее два пути, сам решай куда пойти.
I'm learning to live...

Последний раз редактировалось Stilet; 20.05.2014 в 19:59.
Stilet вне форума Ответить с цитированием
Старый 23.05.2014, 02:46   #8
dzuga
Пользователь
 
Регистрация: 08.06.2010
Сообщений: 43
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Тогда для начала замени ADOTable на ADOQuery.
А потом в скажем событии создания формы впиши
Код:
with ADOQuery1 do begin
 sql.text:='select * from... where datediff(m,[дата проверки],getdate())<1';
 Activate:=true;
end;
Все остальное настраивается так же как и в Table.
Только учти - редактирование в ADOQuery сложнее чем в Table.

Ой, ну вообще-то нужно сказать что и в Table можно реализовать такую проверку.
У нее есть событие OnFilterRecord, которое можно описать так:
Код:
procedure TForm1.ADOTable1FilterRecord(DataSet: TDataSet; var Accept: Boolean);
begin
  Accept:=MonthsBetween(DataSet.FieldByName('дата проверки').AsDateTime,now)<1;
end;
Тогда ничего не нужно выбрасывать.
потом кинешь на форму кнопку, в которой напишешь:
Код:
 ADOTable1.Filtered:=True;
И твой набор отфильтруется.

Короче вот тее два пути, сам решай куда пойти.
Огромное спасибо!!! Очень здорово мне помог! Я уже в adoquery начну делать. Только одна просьба, не мог бы ты по подробнее объяснить код, ибо запросы с числовыми, строковыми типами данных я освоил, а вот по дате что-то никак не пойму. И к сожалению, код который ты скинул первый раз, тоже не очень понял...
dzuga вне форума Ответить с цитированием
Старый 23.05.2014, 08:05   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Не понял, что именно объяснить? Что не понятно?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 23.05.2014, 12:49   #10
dzuga
Пользователь
 
Регистрация: 08.06.2010
Сообщений: 43
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Не понял, что именно объяснить? Что не понятно?
Что тако date diff, что такое m, сто такое getdate и почему меньше одного?
dzuga вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запросы Delphi Defender42 Помощь студентам 2 11.04.2014 15:18
Запросы в БД(Delphi) Richik123 БД в Delphi 1 06.05.2013 14:07
SQL-запросы в Delphi Carry Помощь студентам 6 09.03.2011 23:27
Запросы в БД. Delphi 7 gonf Помощь студентам 4 15.11.2010 18:21
Запросы SQL в Delphi antoni БД в Delphi 13 02.09.2008 00:53