С Новым годом! Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.52/29: Рейтинг темы: голосов - 29, средняя оценка - 4.52
0 / 0 / 0
Регистрация: 08.12.2017
Сообщений: 206

Подскажите как сформировать правильно запрос для выборки диапазона дат по нескольким полям

05.06.2024, 16:02. Показов 12213. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пробую так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
    DataModule1->ADOQuery1->Close();
    DataModule1->ADOQuery1->SQL->Clear();
    DataModule1->ADOQuery1->SQL->Add("SELECT personal.[modif_person], personal.create_person, person_.modif_person, person.create_person 
FROM personal INNER JOIN person ON personal.id_person = person.key_personal_person
WHERE (((personal.modif_person) Between :datastart AND :datastop)) 
OR (((personal.create_person) Between :datastart AND :datastop)) 
OR (((person.modif_person) Between :datastart AND :datastop)) 
OR (((person.create_person) Between :datastart AND :datastop))");
 
DataModule1->ADOQuery1->Parameters->ParamByName("datastart")->Value =FormatDateTime("dd/mm/yyyy",DateTP2->Date);
DataModule1->ADOQuery1->Parameters->ParamByName("datastop")->Value = FormatDateTime("dd/mm/yyyy",DateTP3->Date);
DataModule1->ADOQuery1->Open();
запрос не работает, на одном поле работает.
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.06.2024, 16:02
Ответы с готовыми решениями:

Запрос выборки данных из диапазона дат datetime
Мой запрос @"SELECT * FROM " + aNameTable + " WHERE Date BETWEEN #" + value1 + " AND " + value2 + "#"; где DateTime gValue1, gValue2;...

Как сформировать запрос для выборки недостающих элементов из БД добором
К примеру у меня есть записи в таблице БД, где есть колонка хранящяя информацию об дате и времени сохранения данной информации в эту...

Как создать запрос в БД по нескольким полям?
Как правильно составить запрос. Или тут без SQL не получится? Private Sub btnFind_Click(sender As Object, e As EventArgs) Handles...

2
Модератор
 Аватар для D1973
9908 / 6445 / 2455
Регистрация: 21.01.2014
Сообщений: 27,354
Записей в блоге: 3
05.06.2024, 19:09
Лучший ответ Сообщение было отмечено SAnatoliy как решение

Решение

1. Такая запись запроса невалидна: строки в С++Билдере так не переносятся. Если уж хотите делать многострочную запись - пишите правильно:
C++
1
2
3
4
5
DataModule1->ADOQuery1->SQL->Add("SELECT personal.[modif_person], personal.create_person, person_.modif_person, person.create_person "); 
DataModule1->ADOQuery1->SQL->Add("FROM personal INNER JOIN person ON personal.id_person = person.key_personal_person ");
DataModule1->ADOQuery1->SQL->Add("WHERE (((personal.modif_person) Between :datastart1 AND :datastop1)) ");
DataModule1->ADOQuery1->SQL->Add("OR (((personal.create_person) Between :datastart2 AND :datastop2)) ");
...
2. Параметры так не работают: каждый параметр имеет уникальное имя и используется в запросе только один раз, иначе движок БД "ничего не поймет", явной ошибки Вы не получите, но и работать запрос не будет. Поэтому сколько встречается в запросе мест, куда подставляются параметры - столько и элементов должно быть в списке параметров
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
DataModule1->ADOQuery1->SQL->Add("SELECT personal.[modif_person], personal.create_person, person_.modif_person, person.create_person "); 
DataModule1->ADOQuery1->SQL->Add("FROM personal INNER JOIN person ON personal.id_person = person.key_personal_person ");
DataModule1->ADOQuery1->SQL->Add("WHERE (((personal.modif_person) Between :datastart1 AND :datastop1)) ");
DataModule1->ADOQuery1->SQL->Add("OR (((personal.create_person) Between :datastart2 AND :datastop2)) ");
DataModule1->ADOQuery1->SQL->Add("OR (((person.modif_person) Between :datastart3 AND :datastop3)) ");
DataModule1->ADOQuery1->SQL->Add("OR (((person.create_person) Between :datastart4 AND :datastop4))");
 
DataModule1->ADOQuery1->Parameters->ParamByName("datastart1")->Value =FormatDateTime("dd/mm/yyyy",DateTP2->Date);
DataModule1->ADOQuery1->Parameters->ParamByName("datastop1")->Value = FormatDateTime("dd/mm/yyyy",DateTP3->Date);
DataModule1->ADOQuery1->Parameters->ParamByName("datastart2")->Value =FormatDateTime("dd/mm/yyyy",DateTP2->Date);
DataModule1->ADOQuery1->Parameters->ParamByName("datastop2")->Value = FormatDateTime("dd/mm/yyyy",DateTP3->Date);
DataModule1->ADOQuery1->Parameters->ParamByName("datastart3")->Value =FormatDateTime("dd/mm/yyyy",DateTP2->Date);
DataModule1->ADOQuery1->Parameters->ParamByName("datastop3")->Value = FormatDateTime("dd/mm/yyyy",DateTP3->Date);
DataModule1->ADOQuery1->Parameters->ParamByName("datastart4")->Value =FormatDateTime("dd/mm/yyyy",DateTP2->Date);
DataModule1->ADOQuery1->Parameters->ParamByName("datastop4")->Value = FormatDateTime("dd/mm/yyyy",DateTP3->Date);
 
DataModule1->ADOQuery1->Open();
1
0 / 0 / 0
Регистрация: 08.12.2017
Сообщений: 206
06.06.2024, 08:27  [ТС]
Благодарю вас за ответ.
(добавил переменных все работает.)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.06.2024, 08:27
Помогаю со студенческими работами здесь

Подскажите, на чём написать простенькую программу для выборки по нескольким параметрам
Здравствуйте, господа программисты. Возникла вот такая задача. Для частных нужд (не коммерческих =)) понадобилась небольшая программка для...

Поиск диапазона дат по двум полям
Добрый день Имеется таблица в которой имеются две колонки `ARRIVED_DATE` (Время прибытия) и колонка `SAILED_DATE` (Время отправки) (...

Как правильно написать запрос для выборки с таблицы? Мой не работает(. Скрин таблиц и код прилагается
Доброго вечера профессионалы!) Застрял на простом запросе на выборку с базы данных по логину и паролю. мой запрос почему то не находит...

Как правильно составить SQL запрос SELECT PDO PHP для получения данных по двум полям
Питаюсь реализовать получение данных с БД по двум строкам SELECT * FROM `table_products` WHERE `product_type` = :product_type AND...

Запрос по нескольким полям
Не получается сделать запрос. Если ADOQuery1.SQL.Add('SELECT*FROM БД where 1=1 '); if edit1.text<>'' ADOQuery1.SQL.Add(' and LIKE ...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru