Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.57/7: Рейтинг темы: голосов - 7, средняя оценка - 4.57
21 / 19 / 12
Регистрация: 03.11.2013
Сообщений: 870
MS Access

Ошибка в запросе с DateTimePicker

28.08.2015, 11:20. Показов 1493. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Delphi
1
SQLdtp:=' and main.date_analise>= '+DateToStr(DateTimePicker1.Date)+' AND main.date_analise<='+DateToStr(DateTimePicker2.Date);
ругается на данный запрос. Если его предоставить в виде SQLdtp:=' and main.date_analise>= '1'

то все работает... В акцессе поле date_analise тип данных дата\время

Если ввожу Если его предоставить в виде SQLdtp:=' and main.date_analise>= '10.10.1990' тоже ругается, на запятые тоже ругается, я так понимаю какая-то не состыковка в типе данных.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.08.2015, 11:20
Ответы с готовыми решениями:

Использование данных из DateTimePicker в SQL запросе Query
есть таблице парадокс с полями типа Date. надо сделать отчёт в QuickReport записей в выбраном промежутке дат. Просто так вывод таблицы...

Как сложить поля dbedit и datetimepicker и результат записался в другой datetimepicker
procedure Tpods4et.DateTimePicker1Change(Sender: TObject); var d:string; a:integer; begin a:=strtoint(dbedit4.Text); ...

Смена даты в datetimepicker при смене времени в другом поле datetimepicker
есть два поля date time picker, одно для изменения времени второе для изменения даты... нужно при попадании часов до 00 ночи, чтобы...

15
Модератор
 Аватар для FIL
3492 / 2614 / 742
Регистрация: 19.09.2012
Сообщений: 7,977
28.08.2015, 11:31
Используй параметры для добавления даты/времени в запрос.
0
21 / 19 / 12
Регистрация: 03.11.2013
Сообщений: 870
28.08.2015, 13:54  [ТС]
А можно поподробнее про параметры, пожалуйста
0
Эксперт Pascal/Delphi
 Аватар для xxbesoxx
1135 / 616 / 129
Регистрация: 13.02.2009
Сообщений: 3,601
28.08.2015, 14:30
Цитата Сообщение от Vologd Посмотреть сообщение
А можно поподробнее про параметры,
Пожалуйста
Фильтрование по времени
Поиск по двум датам
AdoQuery1.Filtered не фильтрует
1
21 / 19 / 12
Регистрация: 03.11.2013
Сообщений: 870
28.08.2015, 15:33  [ТС]
Delphi
1
2
3
ADOQuery1.SQL.Add('and main.date_analise>= :d1 and main.date_analise<= :d2');
           ADOQuery1.Parameters.ParamByName('d1').Value:=datetimepicker1.Date;
           ADOQuery1.Parameters.ParamByName('d2').Value:=datetimepicker2.Date;
сделал так, выставляю даты в дататимпикере, но находит 0 записей (ничего не находит)
Может что-то не так оформил?

Добавлено через 6 минут
В акцессе в данном поле сейчас стоит тип текстовый, если ставить дата\время, то выдает ошибку несоответсвие типа данных

Добавлено через 18 минут
Delphi
1
ADOQuery1.SQL.Add(' and main.date_analise = ' + FormatDateTime('#dd-mm-yyyy#',DateTimePicker1.DateTime));
воспользовался данным решением, работает!
в акцесе тип поля строка
0
21 / 19 / 12
Регистрация: 03.11.2013
Сообщений: 870
31.08.2015, 22:09  [ТС]
Короче это то что показал не особо работает( надо разбираться дальше((( Он делает выборку только по дням как я понял.. сразу и не заметил... то есть например.
Дата 28.08.2015
не попадет в промежуток 27.07.2015 и 01.09.2015...
Подскажите как сделать выборку по дате... печаль беда... голова уже не соображает...

Добавлено через 5 минут
у меня запрос не на равенство, а на больше\меньше, то есть период с равенством работает это, а вот интервал задать...
0
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,612
01.09.2015, 00:49
Цитата Сообщение от Vologd Посмотреть сообщение
не попадет в промежуток 27.07.2015 и 01.09.2015
Цитата Сообщение от Vologd Посмотреть сообщение
В акцессе в данном поле сейчас стоит тип текстовый
По правилам текстовой сортировки строка "27.07.2015" стоит выше строки "01.09.2015". Т.е. она "больше".
Надо было либо использовать тип поля DATETIME, либо формировать строку в виде "yy(yy).mm.dd".
Короче ССЗБ! Теперь средствами SQL такой запрос выполнить невозможно.
0
2511 / 1132 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
01.09.2015, 08:20
Цитата Сообщение от Vologd Посмотреть сообщение
В акцессе в данном поле сейчас стоит тип текстовый
меняй тип поля на DATE или DATETIME
или забудь про SQL запросы на интервал дат (или больше/меньше)
зачем создавать себе проблемы, чтобы потом их с большими трудностями преодолевать?!
0
21 / 19 / 12
Регистрация: 03.11.2013
Сообщений: 870
01.09.2015, 13:35  [ТС]
Ну, хорошо, я могу данный столбец перевести в тип "дата" как дальше действовать?! Как через дейттаймпикер реализовать запрос?
0
Эксперт Pascal/Delphi
 Аватар для xxbesoxx
1135 / 616 / 129
Регистрация: 13.02.2009
Сообщений: 3,601
01.09.2015, 13:57
Цитата Сообщение от Vologd Посмотреть сообщение
столбец перевести в тип "дата" как дальше действовать?!
Тема открыли 28.08.2015, 12:20 после этого (не читал книга и даже не гуглил) ждешь готовый код чтобы перепастит
0
21 / 19 / 12
Регистрация: 03.11.2013
Сообщений: 870
01.09.2015, 17:24  [ТС]
Пф... даже если почитать эту ветку.. то видно, что с помощью подсказок, я сам сделал, нужный код и к тому же сюда с наработками уже пришел... не искал в поисковиках?! да ладно!!! Время показывает, что ошибку в выборке я просто не сразу заметил, а только сейчас, поэтому и обратился... с такими обиваниями и смешками...с Вашей логикой непонятно как вы программируете, раз уж за оскорбления взялись...
0
Эксперт Pascal/Delphi
 Аватар для xxbesoxx
1135 / 616 / 129
Регистрация: 13.02.2009
Сообщений: 3,601
01.09.2015, 17:44
Цитата Сообщение от Vologd Посмотреть сообщение
как вы программируете, раз уж за оскорбления взялись...
Чего , чего ? вы по каком оскорбления скажите пожалуйста ?

Добавлено через 6 минут
такой тема как вы открыли! отрывается неделю "2" или "3" раза ! есть на форуме очень много примеров , и не не вижу смысл написать повторно именно для вас ... пользуйтесь поиск пожалуйста
0
2511 / 1132 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
01.09.2015, 23:56
Цитата Сообщение от Vologd Посмотреть сообщение
Ну, хорошо, я могу данный столбец перевести в тип "дата" как дальше действовать?! Как через дейттаймпикер реализовать запрос?
а дальше так, как ты написал в #5, используя параметры
0
пофигист широкого профиля
4769 / 3204 / 862
Регистрация: 15.07.2013
Сообщений: 18,612
02.09.2015, 00:47
Цитата Сообщение от Vologd Посмотреть сообщение
Пф... даже если почитать эту ветку.. то видно, что с помощью подсказок, я сам сделал, нужный код
Не ври самому себе. Ничего ты сам не сделал, кроме сложения/соединения нескольких деталек из некоего пазла. Ну да вроде как эту часть пазла ты собрал правильно.
Но если ты и дальше хочешь программировать в таком русле, то не обижайся на замечания других форумчан.
0
21 / 19 / 12
Регистрация: 03.11.2013
Сообщений: 870
02.09.2015, 23:49  [ТС]
Короче я не вьезжаю...
Разбирался, делал ,чето работает, но неправильно, чето с ошибками...
Если как в №5 (посте) про параметры:
Delphi
1
2
3
ADOQuery1.SQL.Add('and main.date_analise>= :d1 and main.date_analise<= :d2');
           ADOQuery1.Parameters.ParamByName('d1').Value:=datetimepicker1.Date;
           ADOQuery1.Parameters.ParamByName('d2').Value:=datetimepicker2.Date;
То это работает только, если в акцессе текстовый тип данных, если дата, то не катит, у даты формат #01/01/1990# ну и соответсвенно ошибка не соответствия выскакивает.
Пробовал:
Delphi
1
2
3
4
5
6
7
 myDate1:= Datetimepicker1.Date;
               FormatSettings.DateSeparator  := '/';
               //edit6.Text:=FormatDateTime('dd/mm/yyyy', myDate1);
               SQLdtp:=' and main.dr>'+'#'+Datetostr(mydate1)+'#';
               mydate2:=Datetimepicker2.Date;
               SQLdtp:=SQLdtp+' and main.dr<'+'#'+Datetostr(mydate2)+'#';
               edit6.Text:=SQLdtp;
Запрос выполняется, чето отсортировывает, но все неправильно. Я так и не понял логику его отбора..
Другие варианты даже проводить не буду...

На данный момент вижу только выход такой, переводить представление в акцессе как yyyy/MM/dd и отфильтровывать его уже как строку... Но это.... неправильно же...

Поделитесь, пожалуйста рабочим вариантом, я просто не знаю как делать, занимаюсь гаданием...

Добавлено через 3 минуты
Или может у меня теперь какая-то некорректность в самой акцессовской базе?! У меня сначала был тестовый тип, потом я его просто переименовал в дата\время, перевёл вернее в конструкторе... Но ошибок никаких не выдал...
0
2511 / 1132 / 582
Регистрация: 07.06.2014
Сообщений: 3,286
02.09.2015, 23:59
Лучший ответ Сообщение было отмечено Vologd как решение

Решение

первое. делаешь поле "date_analise" в БД типа "ДАТА" (DATE или DATETIME)

второе. проверяешь, что в этом поле у тебя всё правильно!!!
проверить можно, например, так - делаешь в самом MS ACCESS запрос вида:
SQL
1
SELECT [date_analise], YEAR([date_analise]) AS 'Год', MONTH([date_analise]) AS 'Месяц' FROM [ВашаТаблица]
если смотришь глазками и всё правильно и год и месяц (можно туда же и день добавить при желании)
тогда идёшь дальше.

третье.
пишешь код на какое-нибудь событие (хоть на кнопку):
Delphi
1
2
3
4
5
6
7
8
9
10
11
var date1, date2 : TDateTime;
begin
   ADOQuery1.Close;
   ADOQuery1.SQL.Clear;
   ADOQuery1.SQL.Add('select * from [ВашаТаблица] where main.date_analise>= :d1 and main.date_analise<= :d2');
   date1 := trunc( datetimepicker1.Date );
   date2 := trunc( datetimepicker2.Date );
   ADOQuery1.Parameters.ParamByName('d1').Value:= date1;
   ADOQuery1.Parameters.ParamByName('d2').Value:= date2;
   ADOQuery1.SQL.Open;
end;
если всё получилось, радуешься.
Если нет - выводи (куда угодно, хот мемо на форму кинь и туда выводи) значение переменных date1 и date2
Если сделаешь всё, как написано выше - должно работать!
нет, отпишись тут, выложи сюда архив с примером твоей бд и проектом, гляну, что ты там начудил.

ну и не обижайся по пустякам!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
02.09.2015, 23:59
Помогаю со студенческими работами здесь

Из Datetimepicker пытаюсь вычесть Datetimepicker и получит количество дней
В общем проблема такая, пытаюсь вычесть из Datetimepicker2-Datetimepicker1, но разница в днях получается абсолютно другая, если даты...

Ошибка конвертирования из DateTimePicker
Делаю запрос на добавление в БД MS SQL , при попытке добавить данные вылетает исключение В классе string формат, dateTimePicker...

Ошибка при добавлении DateTimePicker
Всем доброго времени суток. Такая проблема: в моем проекте есть 3 формы. Когда я добавляю компонент DateTimePicker на вторую форму, то при...

Ошибка при внесении данных из DateTimePicker-а в БД
Добрый вечер, подскажите как правильно прописать SQL запрос на внесение данных в БД, если значение берется из dateTimePicker. На мой код: ...

Ошибка при связывании dateTimePicker и DataGridView
В Access есть таблица, в которой 4 столбца(ФИО, дата рождения, адрес, телефон) для заполнения. Я планировала записать дату рождения через...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru