Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 5 243

/ вопрос открыт /

Приветствую, уважаемые эксперты! нужно сделать запрос на выборку данных базы Access по текущей дате, все дело в том что Delphi я в принципе не знаю, я только подключил базу, думаю запрос на кнопку поставить, а как запрос по текущей дате сделать, подскажите использую
DBGrid
DataSource
ADOConnection
ADOQuery

вот примерный код запроса

Приложение:
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. begin
  3. try
  4. ADOQuery1.SQL.Clear;
  5. ADOQuery1.SQL.Add('SELECT * FROM AUTO ???? ');
  6. ADOQuery1.Active:=True;
  7. except
  8. on e:Exception do
  9. end;
  10. end;


dimka Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: dimka (статус: Посетитель)
Вопрос отправлен: 29 апреля 2011, 21:10
Состояние вопроса: открыт, ответов: 1.

Ответ #1. Отвечает эксперт: min@y™

ADOQuery1.SQL.Add('SELECT * FROM AUTO WHERE dt=''30.04.2011''');
Как же ты мне надоел...

Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 30 апреля 2011, 20:10


Мини-форум вопроса

Всего сообщений: 38; последнее сообщение — 1 мая 2011, 16:56; участников в обсуждении: 3.

Страницы: [1] [2] [Следующая »]

min@y™

min@y™ (статус: Доктор наук), 29 апреля 2011, 22:11 [#1]:

Написать на Delphi СУБД, не шаря в программировании - это, ИМХО, unreal.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
dimka

dimka (статус: Посетитель), 29 апреля 2011, 22:24 [#2]:

Посмеялся, теперь помоги, я немного щарю, в инсте проходил С и т.д. SQL тоже чуть больше знаю, я просто в делфи не работал.
min@y™

min@y™ (статус: Доктор наук), 29 апреля 2011, 22:46 [#3]:

А я в универе не проходил ни delphi, ни с/с++, ни SQL. Я вообще на инженера-конструктора учился.
Будем дальше смеяться? Я базами данных занимался один единственный раз лет эдак 9 назад. И то в образовательных целях (делать было нефиг).
Если не шаришь в delphi, даже не пытайся сделать это на delphi. Лучше попроси кого-нить сделать это за тебя. Хотя, если у тебя есть пару лет времени, то почти реально поднять и такую задачу. Книжку могу посоветовать.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
dimka

dimka (статус: Посетитель), 29 апреля 2011, 22:49 [#4]:

Да я уже почти разобрался, мне толь правильно запрос составить.
Егор

Егор (статус: 10-ый класс), 30 апреля 2011, 05:14 [#5]:

если не можешь составить запрос, то тогда надо базы данных учить. и это дополнительно к дельфи

SELECT * FROM AUTO WHERE имя_поля_с_датой=27.01.2011
какая база данных? access?
в некоторых случаях дату надо брать в кавычки, в других - в решётки
SELECT * FROM AUTO WHERE имя_поля_с_датой='27.01.2011' // так
SELECT * FROM AUTO WHERE имя_поля_с_датой="27.01.2011" // или так
SELECT * FROM AUTO WHERE имя_поля_с_датой=#27.01.2011# // или вот так
Опасайтесь багов в приведенном выше коде; я только доказал корректность, но не запускал его.
— Donald E. Knuth.
dimka

dimka (статус: Посетитель), 30 апреля 2011, 09:33 [#6]:

Спасибо, но этот запрос будет работать только на заданную в нем дату 27.01.2011, а как сделать чтобы он автоматически в запрос подставлял текущею дату, например седня это 27.01.2011, а завтра 28.01.2011, постоянно изменять запрос?
Да Access, Delphi 7.0
min@y™

min@y™ (статус: Доктор наук), 30 апреля 2011, 10:08 [#7]:

Цитата (dimka):

Спасибо, но этот запрос будет работать только на заданную в нем дату 27.01.2011, а как сделать чтобы он автоматически в запрос подставлял текущею дату, например седня это 27.01.2011, а завтра 28.01.2011, постоянно изменять запрос?

Ну есть же функции Date() и DateToStr(). Вот и воспользуйся.
ADOQuery1.SQL.Add('SELECT * FROM AUTO WHERE имя_поля_с_датой=' + DateToStr(Date()));
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
dimka

dimka (статус: Посетитель), 30 апреля 2011, 12:27 [#8]:

Ага огромное спасибо! Попробую сделать!
dimka

dimka (статус: Посетитель), 30 апреля 2011, 16:56 [#9]:

Еще один вопрос, а как прописать запрос по дате но дату нужно задавать, использовать Edit?
min@y™

min@y™ (статус: Доктор наук), 30 апреля 2011, 17:09 [#10]:

Цитата (dimka):

использовать Edit?

Можно, но лучше DateTimePicker или Calendar.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
dimka

dimka (статус: Посетитель), 30 апреля 2011, 17:29 [#11]:

Спасиб, но следом естественно будет вопрос как? И у меня ошибку выдает синтаксическую, и просто дату пробовал тоже не пошло SELECT * FROM AUTO WHERE имя_поля_с_датой=#27.01.2011# и не "", а с '' вообще не запустилось, может где в коде ошибка?
procedure TForm1.Button10Click(Sender: TObject);
begin
try
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT * FROM AUTO WHERE D_TRANS=' + DateToStr(Date()));
ADOQuery1.Active:=True;
except
on e:Exception do
end;
end;
min@y™

min@y™ (статус: Доктор наук), 30 апреля 2011, 17:39 [#12]:

Кто выдаёт ошибку: компилятор или SQL? И в каком случае?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
dimka

dimka (статус: Посетитель), 30 апреля 2011, 17:47 [#13]:

Он запускается, базу подключил, она выводиться, а когда нажимаю на кнопку запроса, выводит ошибку
dimka

dimka (статус: Посетитель), 30 апреля 2011, 17:50 [#14]:

Текст ошибки "Число содержит синтаксическую ошибку в запросе D_TRANS=30.04.2011"
min@y™

min@y™ (статус: Доктор наук), 30 апреля 2011, 18:01 [#15]:

Цитата (dimka):

Текст ошибки "Число содержит синтаксическую ошибку в запросе D_TRANS=30.04.2011"

Ну, я думаю, это значит, что число содержит синтаксическую ошибку в запросе. Ты уверен, что запрос должен выглядеть именно так, а не как-нибуд вот эдак:
D_TRANS=#30.04.2011#
D_TRANS="30.04.2011"
D_TRANS='30.04.2011'
D_TRANS=30/04/2011
D_TRANS=#2011/30/04#
D_TRANS=30042011
D_TRANS=20113004
и т.д?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
dimka

dimka (статус: Посетитель), 30 апреля 2011, 18:05 [#16]:

Млин да я ж не знаю, мне нужна текущая дата как вы писали D_TRANS=' + DateToStr(Date())); думаю что то типа этого?
min@y™

min@y™ (статус: Доктор наук), 30 апреля 2011, 18:19 [#17]:

Тебе прежде всего надо узнать, какой формат должен быть у этой даты для запроса. DateToStr(Date()) вернёт строку с датой в формате, который задан в региональных настройках windows в панели управления (в данном случае - 30.04.2011). А вот SQL-сервер может требовать эту строку с датой в каком угодно формате, например в одном из тех, что я привёл выше. Читай документацию, а то мне телепатор за неуплату отключили. Или экспериментируй, авось наткнёшься на правильный формат. Одинарные кавычки, для начала, попробуй.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
dimka

dimka (статус: Посетитель), 30 апреля 2011, 18:38 [#18]:

'30.04.2011' на это ошибку сам компилятор выдает, 30/04/201 и 30042011 запрос проходит но остается пустая таблица, думаю он не как дату проверяет, а просто как тест, единственное на вот это "30.04.2011" пишет другое ошибка SQL несоответствие типов данных, а так запрос если не по дате то работает.
min@y™

min@y™ (статус: Доктор наук), 30 апреля 2011, 18:46 [#19]:

Цитата (dimka):

'30.04.2011' на это ошибку сам компилятор выдает

Я ж сказал, телепатор оключен за неуплату! Когда ж вы, чайники, @#$%$, поймёте, что самое важное в ошибке, которую выдал комплятор, - ЭТО ТЕКСТ ОШИБКИ, #%^$%^%^&*$$!!!! Или ты думаешь, что я даже без телепатора догадаюсь???!!!!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
dimka

dimka (статус: Посетитель), 30 апреля 2011, 18:57 [#20]:

Извиняюсь, вот это он пишет на одинарных кавычках в комптляторе
[Error] Unit1.pas(169): Missing operator or semicolon
[Fatal Error] Project1.dpr(5): Could not compile used unit 'Unit1.pas'
На "30.04.2011" ошибка SQL " Несоответствие типов данных в выражении условия отбора "
на все остальные " Дата содержит синтаксическую ошибку в выражении запроса "D_TRANS=#30.04.2011#" "

Страницы: [1] [2] [Следующая »]

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 11:42
Выполнено за 0.03 сек.