Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.86/29: Рейтинг темы: голосов - 29, средняя оценка - 4.86
0 / 0 / 0
Регистрация: 26.05.2016
Сообщений: 14
MS Access

Date between sql запрос

22.01.2018, 19:18. Показов 6136. Ответов 30
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте! Помогите пожалуйста решить проблемку с кодом.
Имеется база данных сделанная в access.В базе имеется таблица с исключёнными участниками дачного кооператива.
В таблице есть поле dateiskl,в которое и заносится инфа,кого и когда исключили (тип данных Дата и Время,формат поля краткий)
Суть проблемы:я хочу реализовать поиск исключённых участников,который будет осуществляться по нажатию на кнопку,которая,в свою очередь,формирует запрос и берёт для сравнения первую и вторую даты из TEdit и выводит список людей,исключённых в заданный временной промежуток.
При нажатии на кнопку вылетает ошибка синтаксиса в запросе.

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
procedure TCoopIskl.Button1Click(Sender: TObject);
begin
if (Edit1.Text='') or (Edit2.Text='') then
showmessage('Заполните поля для поиска!')
else
begin
DataModule.ADOQuery3.SQL.Clear;
DataModule.ADOQuery3.SQL.Add('SELECT * FROM IsklChleni WHERE dateiskl between #+Edit1.Text+# and #+Edit2.Text+#');
DataModule.ADOQuery3.Active:=true;
IsklSearch.DBGrid1.Columns[0].Width:=60;
IsklSearch.DBGrid1.Columns[1].Width:=200;
IsklSearch.DBGrid1.Columns[2].Width:=112;
if DataModule.ADOQuery2.IsEmpty then
Showmessage('Ничего не найдено');
end;
end;
 
 
end.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.01.2018, 19:18
Ответы с готовыми решениями:

Запрос на DATE и TIME .. я в затруднении..
Дана таблица,которая имеет два поля: DATE (дата) TIME (время) Необходимо написать SQL-запрос,который возьмёт некий промежуток.....

Тип данных DATE в MS SQL 2012
Столкнулся с такой проблемой. В Таблице поставил тип данных DATE. Создал процедуру для ввода данных в таблицу, подключаю ее в delphi в...

SQl запрос Date
Добрый день. Подскажите пожалуйста как создать sql запрос с DISTINCT, чтобы дата не входила в результатирующий набор (Select) или...

30
554 / 484 / 191
Регистрация: 11.12.2013
Сообщений: 2,505
22.01.2018, 19:36
Как мне кажется для ввода дат следует использовать компонент TDateTimePicker и в запросе использовать параметры.
0
Айлурофил
 Аватар для Massaraksh7
511 / 445 / 111
Регистрация: 27.05.2017
Сообщений: 2,675
Записей в блоге: 5
22.01.2018, 20:46
Потому что Edit1.Text используется в самом тексте запроса, как текст.
0
0 / 0 / 0
Регистрация: 26.05.2016
Сообщений: 14
22.01.2018, 20:59  [ТС]
Алекcей,
то есть с помощью TDateTimePicker как-нибудь сделать так,чтобы он принимал значение соответственно тому,что записывается в Edit'ы (первый эдит - первая дата, второй- вторая дата) и от него дальше двигаться?
просто я почти нулёвый в этом деле,можно поподробнее?

Добавлено через 3 минуты
Massaraksh7, то есть проблема в постановке апострофов/скобок/кавычек в самом тексте запроса?
0
Айлурофил
 Аватар для Massaraksh7
511 / 445 / 111
Регистрация: 27.05.2017
Сообщений: 2,675
Записей в блоге: 5
22.01.2018, 21:01
Да.
0
0 / 0 / 0
Регистрация: 26.05.2016
Сообщений: 14
22.01.2018, 21:03  [ТС]
Massaraksh7, не могли бы вы подправить код? я уже битый час никак с этим не разберусь
0
Айлурофил
 Аватар для Massaraksh7
511 / 445 / 111
Регистрация: 27.05.2017
Сообщений: 2,675
Записей в блоге: 5
22.01.2018, 21:16
Я с MS Access не работал, не знаю, какие там нюансы по датам.
В нормальной БД я бы написал так:
SQL
1
SQL.Add('SELECT * FROM IsklChleni WHERE dateiskl between "'+Edit1.Text+'" and "'+Edit2.Text+'"');
Хотя, конечно, лучше через параметры.
А ещё лучше - посмотрите справку по Access.
0
0 / 0 / 0
Регистрация: 26.05.2016
Сообщений: 14
22.01.2018, 21:25  [ТС]
Massaraksh7, Несоответствие типов данных в выражении условия отбора.
я чекал справку и даже есть пример запроса,который 100% работает в самом Access
выглядит это дело так:

SQL
1
2
3
SELECT *
FROM IsklChleni
WHERE dateiskl BETWEEN #01/01/2018# AND  #22/01/2018#
То есть в строке формирования запроса полюбому должен стоять знак #,который ставится перед самой датой и после.
0
Айлурофил
 Аватар для Massaraksh7
511 / 445 / 111
Регистрация: 27.05.2017
Сообщений: 2,675
Записей в блоге: 5
22.01.2018, 21:29
Посмотри в отладчике, что я ещё могу посоветовать?
0
554 / 484 / 191
Регистрация: 11.12.2013
Сообщений: 2,505
22.01.2018, 22:04
попробуйте как-то так:
Delphi
1
2
3
4
5
6
7
with ADOQuery1 do begin
  Close;
  SQL.Text:='SELECT * FROM IsklChleni WHERE dateiskl BETWEEN :p1 AND :p2;';
  Parameters[0].Value:=dat1.DateTime; //dat1 - TDateTimePicker
  Parameters[1].Value:=dat2.DateTime; //dat2 - TDateTimePicker
  Open;
end;
0
0 / 0 / 0
Регистрация: 26.05.2016
Сообщений: 14
22.01.2018, 22:19  [ТС]
Алекcей, ругается зараза..
Миниатюры
Date between sql запрос   Date between sql запрос  
0
554 / 484 / 191
Регистрация: 11.12.2013
Сообщений: 2,505
22.01.2018, 22:26
конечно, будет ругаться. кто на форму положил TDateTimePicker? правильно - никто. положите их на форму (2 шт.) и назовите первый dat1 (это дата с), а второй dat2 (дата по). и тогда пробуйте
0
0 / 0 / 0
Регистрация: 26.05.2016
Сообщений: 14
22.01.2018, 22:34  [ТС]
Алекcей, положил на форму DateTimePicker'ы две штуки,назвал как надо.но результат запроса должен отображаться в DBGrid,который лежит в форме,которая должна появляться после нажатия на кнопку поиска
0
554 / 484 / 191
Регистрация: 11.12.2013
Сообщений: 2,505
22.01.2018, 22:36
не понял, ошибка при открытии запроса пропала?
0
0 / 0 / 0
Регистрация: 26.05.2016
Сообщений: 14
22.01.2018, 22:38  [ТС]
ошибок нет
но тогда получается Edit'ы не нужны больше,ведь запрос теперь по DateTimePicker'ам будет работать?
0
554 / 484 / 191
Регистрация: 11.12.2013
Сообщений: 2,505
22.01.2018, 22:42
да, Edit'ы больше не нужны. Теперь подключайте запрос к dbgid'у.
0
0 / 0 / 0
Регистрация: 26.05.2016
Сообщений: 14
22.01.2018, 22:43  [ТС]
Алекcей,
Миниатюры
Date between sql запрос   Date between sql запрос  
0
Айлурофил
 Аватар для Massaraksh7
511 / 445 / 111
Регистрация: 27.05.2017
Сообщений: 2,675
Записей в блоге: 5
22.01.2018, 22:50
Да, Editы не нужны. Да и begin заодно, чего уж там...
0
554 / 484 / 191
Регистрация: 11.12.2013
Сообщений: 2,505
22.01.2018, 22:51
во вторую строку добавьте begin и перед end. вставьте end;

Добавлено через 47 секунд

Не по теме:

Massaraksh7, ну да чего там мелочиться

0
0 / 0 / 0
Регистрация: 26.05.2016
Сообщений: 14
22.01.2018, 22:54  [ТС]
Алекcей, добавил begin и end
всё запустилось
выбрал в DatePicker даты в промежутке которых надо найти записи
жму на поиск
и вылетает вот это

на всякий пожарный скину полный текст кода из этого юнита
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
unit IsklChleni;
 
interface
 
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, DBGrids, StdCtrls, DM, SearchIskl, ComCtrls;
 
type
  TCoopIskl = class(TForm)
    DBGrid1: TDBGrid;
    Button1: TButton;
    dat1: TDateTimePicker;
    dat2: TDateTimePicker;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
 
var
  CoopIskl: TCoopIskl;
 
 
implementation
 
{$R *.dfm}
 
procedure TCoopIskl.Button1Click(Sender: TObject);
begin
with DataModule.ADOQuery3 do begin
Parameters[0].Value:=dat1.DateTime; //dat1 - TDateTimePicker
Parameters[1].Value:=dat2.DateTime; //dat2 - TDateTimePicker
Close;
SQL.Text:='SELECT * FROM IsklChleni WHERE dateiskl BETWEEN :p1 AND :p2;';
DataModule.ADOQuery3.Active:=True;
IsklSearch.Show;
IsklSearch.DBGrid1.Columns[0].Width:=60;
IsklSearch.DBGrid1.Columns[1].Width:=200;
IsklSearch.DBGrid1.Columns[2].Width:=112;
if DataModule.ADOQuery3.IsEmpty then
Showmessage('Ничего не найдено');
end;
end;
 
end.
Миниатюры
Date between sql запрос  
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.01.2018, 22:54
Помогаю со студенческими работами здесь

SQL-запрос к переменной типа Date
примерно dim f as date sql="select * from where = #"&f&"# "`возвращает пустой запрос пробывал...

Как сформировать запрос SQL с Date
Есть таблица, нужно чтобы выводились на экран записпи с у которых есть еще три дня до опредленного числ т.е. есть запись с числом например...

SQL запрос, как сконверитировать date из input в datetime
В базе данных время хранится в формате datetime. В форе запроса данные приходят в формате date (как мне кажется). Как это подставить в SQL...

Запрос SQL к Access через переменную типа date
Уважаемые коллеги, прошу помощи, не могу выполнить запрос к Access 2000 из ASP. Так работает: sql = 'select Zn from table1 where...

Поправить SQL запрос. Временное условие (SELECT with date condition)
Помогите создать два запроса: 1) Запрос, который бы выбирал данные за прошлую неделю, т.е за семь дней с понедельника по воскресенье....


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru