Форум программистов, компьютерный форум, киберфорум
C++ Builder: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/18: Рейтинг темы: голосов - 18, средняя оценка - 4.67
2 / 2 / 1
Регистрация: 08.04.2009
Сообщений: 60

Поиск по дате?

21.11.2009, 13:26. Показов 3617. Ответов 19
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте, появилась проблема:
нужно найти данные с одной даты по другую, тоесть которые были занесены в определённый период. Писал так:
C++
1
2
3
4
5
6
ADOQuery2->SQL->Clear();
ADOQuery2->SQL->Add("SELECT Дата,Отправитель,Получатель");
ADOQuery2->SQL->Add("FROM Документ ");
ADOQuery2->SQL->Add("WHERE   Дата BETWEEN '"+DBEdit14->Text+"'AND'"+DBEdit15->Text+"' ");
ADOQuery2->SQL->Add("GROUP BY Дата,Отправитель,Получатель");
ADOQuery2->Active=true;
Выдаёт ошибку: Не соответствие типов в условии отбора

Как с этим бороться?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
21.11.2009, 13:26
Ответы с готовыми решениями:

Поиск по дате
Добрый день! БД в Access подключенная через ADO в Delphi. На форме есть таблица DBGrid, в которую пользователь заносит данные таким...

Поиск по дате
Здравствуйте, помогите сделать поиск по нескольким полям включая дату. Сейчас делаю так select f.id, o.name as objectname, i.name as...

Поиск по дате
Очень дурацкий вопрос и я не знаю, что произошло, ибо раньше все работало. Суть такая: Есть поле reg_date типа date в таблице Orders ...

19
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
21.11.2009, 13:35
[) i ]< i Y, это по идее аксесс, просто в самом аксессе создай запрос, и когда он заработает там, заработает и в твоем коде, там вроде бы даты в # должны быть, где-то на форуме уже такое видел
0
2 / 2 / 1
Регистрация: 08.04.2009
Сообщений: 60
21.11.2009, 14:27  [ТС]
Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
[) i ]< i Y, это по идее аксесс, просто в самом аксессе создай запрос, и когда он заработает там, заработает и в твоем коде, там вроде бы даты в # должны быть, где-то на форуме уже такое видел
Сделал как в Access,
C++
1
2
3
4
5
6
ADOQuery2->SQL->Clear();
ADOQuery2->SQL->Add("SELECT Дата,Отправитель,Получатель");
ADOQuery2->SQL->Add("FROM Документ ");
ADOQuery2->SQL->Add("GROUP BY Дата,Отправитель,Получатель");
ADOQuery2->SQL->Add("HAVING Дата>'"+DBEdit14->Text+"'<'"+DBEdit14->Text+"'");
ADOQuery2->Active=true;
Та же ошибка(((((
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
22.11.2009, 11:12
HAVING Дата>'"+DBEdit14->Text+"'<'"+DBEdit14->Text+"'"

что-то в этом месте вашего запроса сильно глаз режет, вряд ли такое позволит аксесс
0
2 / 2 / 1
Регистрация: 08.04.2009
Сообщений: 60
22.11.2009, 12:13  [ТС]
Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
HAVING Дата>'"+DBEdit14->Text+"'<'"+DBEdit14->Text+"'"

что-то в этом месте вашего запроса сильно глаз режет, вряд ли такое позволит аксесс
Там было ещё куча скобок, а их Билдер не пропустил...
0
 Аватар для Светлана_1988
300 / 76 / 6
Регистрация: 23.11.2009
Сообщений: 25
28.11.2009, 15:55
Думаю, получится так:

C++
1
2
3
4
5
6
ADOQuery2->SQL->Clear();
ADOQuery2->SQL->Add("SELECT Дата,Отправитель,Получатель");
ADOQuery2->SQL->Add("FROM Документ");
ADOQuery2->SQL->Add("WHERE (((Дата) Between" + DBEdit14->Text + "And" +DBEdit14->Text))");
ADOQuery2->SQL->Add("GROUP BY Дата,Отправитель,Получатель");
ADOQuery2->Active=true;
причем вводите дату в таком формате (20 февраля 2009):
#2/20/2009#
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
29.11.2009, 11:36
Светлана_1988, вы почти правы, но пользака заставлять вводить такую дату не стоит. лучше уже потом тихонько конвертировать в нужный вам формат
0
 Аватар для Светлана_1988
300 / 76 / 6
Регистрация: 23.11.2009
Сообщений: 25
29.11.2009, 12:03
Полностью согласна.
0
MCSD: APP BUILDER
 Аватар для IT_Exp
8795 / 1074 / 104
Регистрация: 17.06.2006
Сообщений: 32,602
29.11.2009, 13:37
[) i ]< i Y,

ADOQuery2->SQL->Add("WHERE Дата BETWEEN ? AND ?");

и используй ADO-параметры
0
 Аватар для NemiroFFyo
70 / 70 / 3
Регистрация: 29.09.2009
Сообщений: 530
02.12.2009, 12:17
ADOQuery2->SQL->Add("WHERE (((Дата) Between" + DBEdit14->Text + "And" +DBEdit14->Text))");

это не правильно с точки зрения ADO
приведу правильный пример

ADOQuery2->SQL->Add("WHERE (((Дата) Between #01/01/2009# and #01/02/2009# ))");
вот это с точки зрения ADO... дата пишется ровно вот в таком формате отсюда падганяй сцепку строк...

Добавлено через 1 минуту
и следовательно едит в данной ситуации не падходит... нужен более крутой кампанент для работы с датами....
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
02.12.2009, 12:25
NemiroFFyo, да какой крутой компонент, я ваc прошу, неужели сложно из dd.mm.yyyy строку преобразовать в #dd/mm/yyyy#?
0
2 / 2 / 1
Регистрация: 08.04.2009
Сообщений: 60
02.12.2009, 19:25  [ТС]
Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
NemiroFFyo, да какой крутой компонент, я ваc прошу, неужели сложно из dd.mm.yyyy строку преобразовать в #dd/mm/yyyy#?
С этого места можно по подробней плз...
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
02.12.2009, 20:57
[) i ]< i Y,ну неужели сложно спереди и сзади дописать к строке решетки, а по заданным индексам прописать вместо точек косые?
0
2 / 2 / 1
Регистрация: 08.04.2009
Сообщений: 60
02.12.2009, 22:26  [ТС]
Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
[) i ]< i Y, по заданным индексам прописать вместо точек косые?
Вот с этим у меня как раз проблема(((
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
02.12.2009, 22:38
[) i ]< i Y, вы с массивами работать умеете?
0
2 / 2 / 1
Регистрация: 08.04.2009
Сообщений: 60
02.12.2009, 22:45  [ТС]
Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
[) i ]< i Y, вы с массивами работать умеете?
Как я понимаю, Вы имеете ввиду, что при вводе нужно каждый символ занести в массив и если символ="." заменить его на"/", а потом вывести в Едит ?
Но у меня дата может быть не изменной, тоесть в Едите записана некая дата и пользователю не всегда нужно менять её. Как в таком случае занести всё в массив?
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
02.12.2009, 22:52
[) i ]< i Y, да какой еще массив тебе надо, если AnsiString и так массив, но нумеруется с 1(следы дельфиистов везде)... перед тем как будешь выполнять операцию, преобразуй строку в нужный формат и вперед и с песней
0
2 / 2 / 1
Регистрация: 08.04.2009
Сообщений: 60
02.12.2009, 23:16  [ТС]
Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
[) i ]< i Y, да какой еще массив тебе надо, если AnsiString и так массив, но нумеруется с 1(следы дельфиистов везде)... перед тем как будешь выполнять операцию, преобразуй строку в нужный формат и вперед и с песней
Возможно я уже достал, но не я могу понять, как сделать(((((( Нет никакого примера?
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
02.12.2009, 23:31
Лучший ответ Сообщение было отмечено как решение

Решение

C++
1
2
3
AnsiString dt = "#" + Edit1->Text + "#"
for(int i = 1; i <= dt.Length();i++)
  if(dt[i] == '.') dt[i] = '\\';
1
2 / 2 / 1
Регистрация: 08.04.2009
Сообщений: 60
22.02.2010, 14:31  [ТС]
Появилась новая проблема...
Заметил, что когда делаю так
C++
1
2
3
4
5
6
ADOQuery2->SQL->Clear();
ADOQuery2->SQL->Add("SELECT Дата,Отправитель,Получатель");
ADOQuery2->SQL->Add("FROM Документ ");
ADOQuery2->SQL->Add("WHERE  ((Дата)BETWEEN "+Edit9->Text+" and  "+Edit5->Text+") ;
ADOQuery2->SQL->Add("GROUP BY Дата,Отправитель,Получатель");
ADOQuery2->SQL->Add("ORDER BY  1 DESC");
в зависимости от даты выводится либо правильно, либо все записи...
Если ввожу, допустим, с 31.03.2009 по 01.01.2010 - выводит правилно, а если с 31.03.2009 по 02.01.2010 - выводит все записи...
Что может быть?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
22.02.2010, 14:31
Помогаю со студенческими работами здесь

Поиск по дате
Здравствуйте) помогите пожалуйста с поиском по дате, то есть мы выбираем дату в DateTimePicker1, и если такая дата есть в первом DBGrid, то...

Поиск по дате
Здравствуйте! У меня есть форма , где есть два TextBox, две RadioButton , кнопка и две DataGridView. В TextBox мы вводим начальную...

Поиск по дате
Здраствуйте У меня вопрос по поиску. вот ниже приведен код. короче я задаю за прошылй месяц нап. с 01.03.2007 по 31.03.2007 данные...

Поиск по дате в БД
В базе данных в столбце dateFilm хранится дата фильма(dd.MM.yyyy) тип long,полученная методом .getTime(). В поле типа Date dateLong...

Поиск по дате
Как организовать поиск по дате если на форме используется DateTimePicker ? Мне нужно найти сотрудников родившихся в определенном году?...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru