|
Вопрос # 5 243/ вопрос открыт / |
|
Приветствую, уважаемые эксперты! нужно сделать запрос на выборку данных базы Access по текущей дате, все дело в том что Delphi я в принципе не знаю, я только подключил базу, думаю запрос на кнопку поставить, а как запрос по текущей дате сделать, подскажите использую
DBGrid
DataSource
ADOConnection
ADOQuery
вот примерный код запроса
Приложение: Переключить в обычный режим- procedure TForm1.Button1Click(Sender: TObject);
- begin
- try
- ADOQuery1.SQL.Clear;
- ADOQuery1.SQL.Add('SELECT * FROM AUTO ???? ');
- ADOQuery1.Active:=True;
- except
- on e:Exception do
- end;
- end;
 |
Вопрос задал: 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™ (статус: Доктор наук), 29 апреля 2011, 22:11 [#1]:
Написать на Delphi СУБД, не шаря в программировании - это, ИМХО, unreal.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
dimka (статус: Посетитель), 29 апреля 2011, 22:24 [#2]:
Посмеялся, теперь помоги, я немного щарю, в инсте проходил С и т.д. SQL тоже чуть больше знаю, я просто в делфи не работал.
|
|
min@y™ (статус: Доктор наук), 29 апреля 2011, 22:46 [#3]:
А я в универе не проходил ни delphi, ни с/с++, ни SQL. Я вообще на инженера-конструктора учился.
Будем дальше смеяться? Я базами данных занимался один единственный раз лет эдак 9 назад. И то в образовательных целях (делать было нефиг).
Если не шаришь в delphi, даже не пытайся сделать это на delphi. Лучше попроси кого-нить сделать это за тебя. Хотя, если у тебя есть пару лет времени, то почти реально поднять и такую задачу. Книжку могу посоветовать.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
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 (статус: Посетитель), 30 апреля 2011, 09:33 [#6]:
Спасибо, но этот запрос будет работать только на заданную в нем дату 27.01.2011, а как сделать чтобы он автоматически в запрос подставлял текущею дату, например седня это 27.01.2011, а завтра 28.01.2011, постоянно изменять запрос?
Да Access, Delphi 7.0
|
|
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 (статус: Посетитель), 30 апреля 2011, 12:27 [#8]:
Ага огромное спасибо! Попробую сделать!
|
|
dimka (статус: Посетитель), 30 апреля 2011, 16:56 [#9]:
Еще один вопрос, а как прописать запрос по дате но дату нужно задавать, использовать Edit?
|
|
min@y™ (статус: Доктор наук), 30 апреля 2011, 17:09 [#10]:
Цитата (dimka):
использовать Edit?
Можно, но лучше DateTimePicker или Calendar.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
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™ (статус: Доктор наук), 30 апреля 2011, 17:39 [#12]:
Кто выдаёт ошибку: компилятор или SQL? И в каком случае?
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
dimka (статус: Посетитель), 30 апреля 2011, 17:47 [#13]:
Он запускается, базу подключил, она выводиться, а когда нажимаю на кнопку запроса, выводит ошибку
|
|
dimka (статус: Посетитель), 30 апреля 2011, 17:50 [#14]:
Текст ошибки "Число содержит синтаксическую ошибку в запросе D_TRANS=30.04.2011"
|
|
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 (статус: Посетитель), 30 апреля 2011, 18:05 [#16]:
Млин да я ж не знаю, мне нужна текущая дата как вы писали D_TRANS=' + DateToStr(Date())); думаю что то типа этого?
|
|
min@y™ (статус: Доктор наук), 30 апреля 2011, 18:19 [#17]:
Тебе прежде всего надо узнать, какой формат должен быть у этой даты для запроса. DateToStr(Date()) вернёт строку с датой в формате, который задан в региональных настройках windows в панели управления (в данном случае - 30.04.2011). А вот SQL-сервер может требовать эту строку с датой в каком угодно формате, например в одном из тех, что я привёл выше. Читай документацию, а то мне телепатор за неуплату отключили. Или экспериментируй, авось наткнёшься на правильный формат. Одинарные кавычки, для начала, попробуй.
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
dimka (статус: Посетитель), 30 апреля 2011, 18:38 [#18]:
'30.04.2011' на это ошибку сам компилятор выдает, 30/04/201 и 30042011 запрос проходит но остается пустая таблица, думаю он не как дату проверяет, а просто как тест, единственное на вот это "30.04.2011" пишет другое ошибка SQL несоответствие типов данных, а так запрос если не по дате то работает.
|
|
min@y™ (статус: Доктор наук), 30 апреля 2011, 18:46 [#19]:
Цитата (dimka):
'30.04.2011' на это ошибку сам компилятор выдает
Я ж сказал, телепатор оключен за неуплату! Когда ж вы, чайники, @#$%$, поймёте, что самое важное в ошибке, которую выдал комплятор, - ЭТО ТЕКСТ ОШИБКИ, #%^$%^%^&*$$!!!! Или ты думаешь, что я даже без телепатора догадаюсь???!!!!
Делаю лабы и курсачи по Delphi и Turbo Pascal. За ПИВО! Пишите в личку, а лучше в аську. А ещё лучше - звоните в скайп!
|
|
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] [Следующая »]
Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.
|