![]() |
|
|
![]()
|
|
| ALEXPLUS |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 8.7.2005 Где: Солнечный Узбекис тан Репутация: нет Всего: нет |
Доброе время суток всем!
Помогите пожалуйста составить запрос. Есть база данных, в которой дата содержится в трёх полях - Day, Month, Year. Как сделать написать запрос так, чтобы он выбирал записи только в заданном диапазоне даты? |
|||
|
||||
| Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 17 Всего: 162 |
А в типе Date не проще хранить? Тогда было бы что-то на подобии
-------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
| ALEXPLUS |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 8.7.2005 Где: Солнечный Узбекис тан Репутация: нет Всего: нет |
Я бы с огромным удовольствием переделал это в тип Date, но, к сожалению, нельзя
|
|||
|
||||
| Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 17 Всего: 162 |
Ну тогда, делай вот так:
-------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
| ALEXPLUS |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 8.7.2005 Где: Солнечный Узбекис тан Репутация: нет Всего: нет |
Извини, но я не понял. Прокомментируй пожалуйста свой код. Почему ты умножаешь на 1000, 100?
|
|||
|
||||
| offline |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 474 Регистрация: 7.2.2005 Репутация: 7 Всего: 7 |
Для сбора даты в одно пле в запросе используй просто DateSerial(Year;Month;Day), а затем сравнивай эту дату, т.е. установи критерий отбора, вот и все дела
|
|||
|
||||
| Alex |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4147 Регистрация: 25.3.2002 Где: Москва Репутация: 17 Всего: 162 |
Идея состоит в том, что из трех чисел (год, месяц и день) получают одно большое число. из начальной и конечной даты выборки получают такиеже два больших числа и проверяют входит ли число в диапазон между этими числами.
Я не притендую на то, что этот метод самый красивый и правильный, но в одном проекте такая схема работает уже второй год и пока сбоев не давала Добавлено @ 00:05 Ой, немного ошибся, нужно вот так
Добавлено @ 00:07 kirilllius, и где кроме Access вы видели DateSerial? -------------------- Написать можно все - главное четко представлять, что ты хочешь получить в конце. |
|||
|
||||
| offline |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 474 Регистрация: 7.2.2005 Репутация: 7 Всего: 7 |
Да, я делал как-то что-то похожее с базай Access но правда через DateValue(Day+'/'+Month+'/'+Year) и все работало отлично
|
|||
|
||||
| ALEXPLUS |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 8.7.2005 Где: Солнечный Узбекис тан Репутация: нет Всего: нет |
Скажите, где тут ошибка?? Говорит, что "Несоответствие типов данных в выражении условия отбора". Все поля в БД текстового типа. Сама база была сделана через Access |
|||
|
||||
| offline |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 474 Регистрация: 7.2.2005 Репутация: 7 Всего: 7 |
DateValue('DayP/MonthP/YearP')
Может так DateValue(DayP+'/'+MonthP+'/'+YearP) |
|||
|
||||
| ALEXPLUS |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 8.7.2005 Где: Солнечный Узбекис тан Репутация: нет Всего: нет |
DateValue(DayP+'/'+MonthP+'/'+YearP)
не получается. Это сообщение отредактировал(а) ALEXPLUS - 9.7.2005, 20:23 |
|||
|
||||
| offline |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 474 Регистрация: 7.2.2005 Репутация: 7 Всего: 7 |
Сейчас создал базу, подключил к Delphi и выполнил запрос
У меня все сработало и отобрало из данного промежутка даты |
|||
|
||||
| ALEXPLUS |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 8.7.2005 Где: Солнечный Узбекис тан Репутация: нет Всего: нет |
Я делаю так TADOQuery связываю с TADOConnection Драйвер - Microsoft.Jet.OLEDB.4.0
переменная k - типа string и равна символу одинарная кавычка. Просто так удобней переменная sql - текстовая |
|||
|
||||
| offline |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 474 Регистрация: 7.2.2005 Репутация: 7 Всего: 7 |
Может это наведет тебя на мысль
|
|||
|
||||
| ALEXPLUS |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 8.7.2005 Где: Солнечный Узбекис тан Репутация: нет Всего: нет |
полоностью скопировал твой запрос, но результат тот же - несоответствие типов.
Я разобрался немного с DateValue. Этой функции без разницы как я напишу дату. Она понимает и 09/07/2005, и 09.07.2005, и 09-07-2005. Вся проблема состоит в том, чтобы представить в качестве параметра этой функции три текстовых поля из БД. Если тебе несложно, пришли мне на почту свою базу данных и дельфийский проект. Если будешь посылать, то шли на alexplyus [собака] mail.ru |
|||
|
||||
| offline |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 474 Регистрация: 7.2.2005 Репутация: 7 Всего: 7 |
Пример отправил на ящик. Думаю разберешься
|
|||
|
||||
| ALEXPLUS |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 21 Регистрация: 8.7.2005 Где: Солнечный Узбекис тан Репутация: нет Всего: нет |
Спасибо, разобрался. Твоя база работает, перенёс твою базу в свою программу - работает. Перенес свою базу в твою прогу - не работает. Далее я выяснил, что запрос выполняется при i равном 1,2,3 и 4. При i=5 выдается пресловутая ошибка о несоответствии типов, что в твоей проге, что в моей. Короче разбираюсь дальше.
|
|||
|
||||
| SergeBS |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1111 Регистрация: 10.6.2005 Где: Владимир Репутация: 11 Всего: 22 |
ALEXPLUS
Проверь на диапзон значений (месяц 1..12, день 1..28/30/31) |
|||
|
||||
![]()
|
| Правила форума "Delphi: Базы данных и репортинг" | |
|
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами Обязательно указание: 1. Базы данных (Paradox, Oracle и т.п.) 2. Способа доступа (ADO, BDE и т.д.)
FAQ раздела лежит здесь! Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |