![]() |
|
|
![]()
|
|
| kovalenko123 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 229 Регистрация: 12.5.2008 Репутация: нет Всего: 1 |
Здравствуйте уважаемые программисты!
Столкнулся с такой задачей: надо профильтровать БД и вывести всех людей у кого сегодня день рожденья, написал вот такую ерунду
Все проблема в том что мне сдесь не нужен год, а когда вместо года в запросе ставлю * то ниче не отображаеться помогите пожалуйста. (я смотрел на форуме похожие темы и ответа в них не нашел) |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
Здесь даны ответы и есть ссылки на др. сайты. Дерзай.
Это сообщение отредактировал(а) Akella - 17.12.2008, 20:01 |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
Вот ещё
|
|||
|
||||
| kovalenko123 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 229 Регистрация: 12.5.2008 Репутация: нет Всего: 1 |
Спасибо за ссылки!
опираясь на них я написал
Говорит не опознанная ошибка... подскажи пожалуйста что тут не так |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
убери ExecSQL
и почитай, для чего ExecSQL, а для чего Open, т.е. в каких случаях что нужно использовать Добавлено через 7 минут и 37 секунд Ты так и не понял. DateToStr(DateTimePicker1.date) засунет в запрос всю дату, т.е. вместе с годом. Я не знаю синтаксиса акцесса. http://forum.vingrad.ru/index.php?showtopi...t&p=1676385 Посмотри и подумай, как можно в акцесс заменить EXTRACT Вот ещё http://forum.vingrad.ru/index.php?showtopi...t&p=1676388 Вот ещё http://forum.vingrad.ru/index.php?showtopi...t&p=1676397 Вот ещё http://forum.vingrad.ru/index.php?showtopi...t&p=1679001 Вот ещё сортировка http://forum.vingrad.ru/index.php?showtopi...t&p=1690254 http://forum.vingrad.ru/index.php?showtopi...t&p=1690298 Это вырезки из всей темы. Возможно, что форумчане, которые больше соображают в акцессе, переведут код тебе и дадут готовый результат. Извини, так сложилось, что я с акцессом не подружился. |
|||
|
||||
| kovalenko123 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 229 Регистрация: 12.5.2008 Репутация: нет Всего: 1 |
все равно спасибо за помошь!! (была бы возможность дал бы сразу 100 балов!!! )
но похоже запросы в ib отличаються от акцсесса (( и опять не опознанная ошибка (а команда ExecSQL применяется для запросов не возвращающих результат, вроде так ) |
|||
|
||||
| Akella |
|
||||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
да, поэтому в твоём случае только Open Добавлено через 4 минуты и 41 секунду так пробовал?
возможно, что вместо знака процента в акцессе используется др. символ, а вместо двойных кавычек можно так попробовать
|
||||||
|
|||||||
| kovalenko123 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 229 Регистрация: 12.5.2008 Репутация: нет Всего: 1 |
Да, я так пробовал и получилось, но мне же надо datetimepickerom в like загонять а не так "01.12.%"
а это вряд ли получиться (( |
|||
|
||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 35 Всего: 130 |
Разбей в самой таблице дату на три столбца - день, месяц, год, и не парься.
-------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| Kbl4AH |
|
||||||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 6 Всего: 15 |
Ничего разбивать не нужно... Нужно обрезать год в строке...
А разве, чтобы
P.S. А вообще, нужно дату в типе даты, а не строковом хранить... Это сообщение отредактировал(а) Kbl4AH - 21.12.2008, 14:19 |
||||||||||
|
|||||||||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 35 Всего: 130 |
Кстати, я обычно храню в строковом. Чтобы не было проблем со всякими "региональными настройками". -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| Kbl4AH |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 6 Всего: 15 |
Я раньше тоже в строковом хранил, так как мне это казалось удобнее... Пока со следущим не столкнулся: выбираю поле даты(строковое) датасетом и вставляю в грид... текст запроса такой (чтобы можно было сразу изменять таблицу стандартными возможностями)
В этом случае сортировка неправильная происходит (сортируется как строка, а не дата)... Если делаю так:
P.S. А какие могут быть проблемы с региональными настройками? В делфи тип ДАТА, в БД тип ДАТА... Все нормально должно быть.. Главное, чтоб в делфи ошибки из-за настроек не было при конвертациях всяких, а БД сама "догадается" в каком формате дату вывести.. Это сообщение отредактировал(а) Kbl4AH - 21.12.2008, 14:35 |
||||||
|
|||||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 35 Всего: 130 |
Если потом выбирать сортировать нужно - тогда дело иное. А всякие там порядки отображения даты, например? -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| Kbl4AH |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 6 Всего: 15 |
Так это ведь уже над переменной делается... А тип он и есть тип... он для любых настроек одинаков... Ведь, по-моему, в БД дата хранится в полном формате (со временем), а уже отображается в предпочтительном виде... В любом случае представление переменной типа дата от самого типа не зависит... ... или я чего-то не понимаю... Можно пример в таком случае? |
|||
|
||||
| kovalenko123 |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 229 Регистрация: 12.5.2008 Репутация: нет Всего: 1 |
Ну это же глупость
а вот этот код ничего не вернул так опять же мне надо в like вставить дату из Datetimepickera тока чтоб год не учитывался а как это сделать незнаю |
||||
|
|||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 35 Всего: 130 |
Я теперь и сам уже сомневаюсь. Почему это глупость?! А хранить ФИО разбитым по полям - тоже глупость?! В общем, на Access (проверял именно в самом .MDB) вот такой запрос у меня работает:
Это сообщение отредактировал(а) Данкинг - 21.12.2008, 18:13 -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| Kbl4AH |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 6 Всего: 15 |
может ничего и не должен вернуть? может нет записей удовлетворяющих условию? функция верная, я проверял пробными запросами... Для MS SQL
вернет 01.12. че за SQL у тебя используется? Может там другая функция? Хотя, если бы функция LEFT не работала, то ошибка бы выдавалась... Проверь, точно у тебя есть запись с такой датой 01.12.хххх? А, погодь... косяк... надо так...
P.S. kovalenko123, проверь в самом SQL Builder, что запрос возвращает... Это сообщение отредактировал(а) Kbl4AH - 21.12.2008, 19:45 |
||||||
|
|||||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
Данкинг, думаю, что ты неправильно делаешь, не зря ведь придумали специальный тип Дата в базах данных. Можно ж было как boolean хранить 0 или 1.
|
|||
|
||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 35 Всего: 130 |
Что делаю - храню дату как строку? Да я и не спорю, что неправильно. -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| kovalenko123 |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 229 Регистрация: 12.5.2008 Репутация: нет Всего: 1 |
Данкинг,
Код сработал а как теперь его с datetimepickerom связать ?? я попробовал
но ничего не выходит.... что можно сделать ? Kbl4AH, не там точно есть запись на 01.12.2008 |
||||
|
|||||
| Kbl4AH |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 6 Всего: 15 |
или
Это сообщение отредактировал(а) Kbl4AH - 22.12.2008, 19:53 |
||||
|
|||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: 35 Всего: 130 |
Kbl4AH, а значение datepicker'а почему не обрезал?
-------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| Kbl4AH |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 6 Всего: 15 |
А оно уже обрезанное в следствие использования ShortDateFormat := 'dd.mm'; P.S. Хотя лучше без формата даты... мне твоя обрезка строки больше понравилась... просто мне это в голову не пришло Это сообщение отредактировал(а) Kbl4AH - 22.12.2008, 19:56 |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
товарищи
|
|||
|
||||
| Kbl4AH |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 6 Всего: 15 |
И что? Я для этого ShortDateFormat := 'dd.mm'; и использовал... Проверил, поставил американский формат... примеры работают... А с обрезкой строки, и правда, косяк будет... Это сообщение отредактировал(а) Kbl4AH - 22.12.2008, 20:38 |
|||
|
||||
| Akella |
|
||||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
Kbl4AH,
Добавлено через 2 минуты и 8 секунд
переделай на
И ты увидишь то, что получит SQL сервер. А когда увидишь, то подумай, знает ли SQL сервер про твой DateTimePicker1? |
||||
|
|||||
| Kbl4AH |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 6 Всего: 15 |
||||
|
||||
| kovalenko123 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 229 Регистрация: 12.5.2008 Репутация: нет Всего: 1 |
Kbl4AH,
А с обрезкой строки, и правда, косяк будет... а какой косяк?? твой пример
Работает ! огромное спасибо !!! а так же спасибо всем кто принимал участие в обсуждении!!! |
|||
|
||||
| Kbl4AH |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 6 Всего: 15 |
Допустим дата 10 декабря 2008 года... русский формат 10.12.2008 после вырезки первых 5ти символов будет '10.12' американский формат 12/10/2008 после вырезки первых 5ти символов будет '12/10' а при конвертации DateTimeToString(результат: string, 'dd.mm', дата: TDateTime) всегда получится строка того формата, который указан в процедуре, в данном случае '10.12'.... и без разницы стандарт даты какой страны будет на компьютере... |
|||
|
||||
| kovalenko123 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 229 Регистрация: 12.5.2008 Репутация: нет Всего: 1 |
Так я дату та в базе хроню, мне разве не пофиг какой стандарт на компе стоит? и потом у меня на заполнение используеться "русский формат" и запрос я делаю "русским" поэтому косяков быть не должно
|
|||
|
||||
| Kbl4AH |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 741 Регистрация: 1.4.2008 Где: Вятка Репутация: 6 Всего: 15 |
У тебя и не будет косяков... Они при запуске твоей проги на другом компьютере были бы возможны...
Универсальной прога должна быть в идеале... |
|||
|
||||
| Akella |
|
|||
![]() Творец ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 18485 Регистрация: 14.5.2003 Где: Корусант Репутация: 29 Всего: 329 |
||||
|
||||
| kovalenko123 |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 229 Регистрация: 12.5.2008 Репутация: нет Всего: 1 |
Понял, Спасибо!
|
|||
|
||||
![]()
|
| Правила форума "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. |