Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как сделать запрос даты без года, Access, ADO 
V
    Опции темы
kovalenko123
Дата 17.12.2008, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 12.5.2008

Репутация: нет
Всего: 1



Здравствуйте уважаемые программисты! 
Столкнулся с такой задачей: надо профильтровать БД и вывести всех людей у кого сегодня день рожденья, 
написал вот такую ерунду

Код

with adoquery1 do
begin
  Close;
  SQL.Text:='select * from [Table]  WHERE Дата Like "01.12.2008"'; // вот так отображаеться а если * нет
  Open;
end;


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

помогите пожалуйста. 

(я смотрел на форуме похожие темы и ответа в них не нашел) 
PM MAIL ICQ   Вверх
Akella
Дата 17.12.2008, 19:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Здесь даны ответы и есть ссылки на др. сайты. Дерзай.

Это сообщение отредактировал(а) Akella - 17.12.2008, 20:01
PM MAIL   Вверх
Akella
Дата 17.12.2008, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Вот ещё
PM MAIL   Вверх
kovalenko123
Дата 18.12.2008, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 12.5.2008

Репутация: нет
Всего: 1



Спасибо за ссылки! 

опираясь на них я написал 

Код

 with adoquery1 do
    begin
      Active := False;
      SQL.Text := 'SELECT * FROM [Table] WHERE (EXTRACT(MONTH FROM table."Дата") = :Par1';
      Parameters[0].Value := DateToStr(DateTimePicker1.date);
      ExecSQL;
      Open;
    end;


Говорит не опознанная ошибка... 

подскажи пожалуйста что тут не так  smile 
PM MAIL ICQ   Вверх
Akella
Дата 18.12.2008, 19:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 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


Это вырезки из всей темы. Возможно, что форумчане, которые больше соображают в акцессе, переведут код тебе и дадут готовый результат. Извини, так сложилось, что я с акцессом не подружился.
PM MAIL   Вверх
kovalenko123
Дата 19.12.2008, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 12.5.2008

Репутация: нет
Всего: 1



все равно спасибо за помошь!! (была бы возможность дал бы сразу 100 балов!!! )

но похоже запросы в ib отличаються от акцсесса (( и опять не опознанная ошибка


(а команда ExecSQL применяется для запросов не возвращающих результат, вроде так  )

PM MAIL ICQ   Вверх
Akella
Дата 21.12.2008, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 29
Всего: 329



Цитата(kovalenko123 @  19.12.2008,  18:48 Найти цитируемый пост)
(а команда ExecSQL применяется для запросов не возвращающих результат, вроде так  )

да, поэтому в твоём случае только Open

Добавлено через 4 минуты и 41 секунду
так пробовал?
Код

SQL.Text:='select * from [Table]  WHERE Дата Like "01.12.%"';

возможно, что вместо знака процента в акцессе используется др. символ, а вместо двойных кавычек можно так попробовать
Код

SQL.Text:='select * from [Table]  WHERE Дата Like '+QuotedStr('01.12.%');

PM MAIL   Вверх
kovalenko123
Дата 21.12.2008, 11:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 12.5.2008

Репутация: нет
Всего: 1



Да, я так пробовал и получилось, но мне же надо datetimepickerom в like загонять а не так "01.12.%"
а это вряд ли получиться (( 

PM MAIL ICQ   Вверх
Данкинг
Дата 21.12.2008, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Разбей в самой таблице дату на три столбца - день, месяц, год, и не парься.  smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Kbl4AH
Дата 21.12.2008, 14:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 741
Регистрация: 1.4.2008
Где: Вятка

Репутация: 6
Всего: 15



Цитата(Данкинг @  21.12.2008,  12:59 Найти цитируемый пост)
Разбей в самой таблице дату на три столбца - день, месяц, год, и не парься.

Ничего разбивать не нужно... Нужно обрезать год в строке...
Код

SQL.Text:='select * from [Table]  WHERE Дата Like left(''01.12.2008'', 6)'

А разве, чтобы 
Код
'
 в строке написать 
Код
"
 используется? По-моему, 
Код
''

P.S. А вообще, нужно дату в типе даты, а не строковом хранить...

Это сообщение отредактировал(а) Kbl4AH - 21.12.2008, 14:19
PM MAIL ICQ   Вверх
Данкинг
Дата 21.12.2008, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(Kbl4AH @  21.12.2008,  14:10 Найти цитируемый пост)
А вообще, нужно дату в типе даты, а не строковом хранить...

Кстати, я обычно храню в строковом. Чтобы не было проблем со всякими "региональными настройками". smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Kbl4AH
Дата 21.12.2008, 14:32 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 741
Регистрация: 1.4.2008
Где: Вятка

Репутация: 6
Всего: 15



Цитата(Данкинг @  21.12.2008,  14:19 Найти цитируемый пост)
Кстати, я обычно храню в строковом. Чтобы не было проблем со всякими "региональными настройками". 

Я раньше тоже в строковом хранил, так как мне это казалось удобнее...
Пока со следущим не столкнулся:
выбираю поле даты(строковое) датасетом и вставляю в грид... текст запроса такой (чтобы можно было сразу изменять таблицу стандартными возможностями)
Код

SELECT data, rowid FROM table

В этом случае сортировка неправильная происходит (сортируется как строка, а не дата)...
Если делаю так:
Код

SELECT to_date(data, 'dd.mm.yyyy'), rowid FROM table
, то сортируется правильно, но тогда ошибка при изменении/вставке в таблице (попытка сохранить тип ДАТА в тип СТРОКА)...

P.S. А какие могут быть проблемы с региональными настройками? В делфи тип ДАТА, в БД тип ДАТА... Все нормально должно быть.. 
Главное, чтоб в делфи ошибки из-за настроек не было при конвертациях всяких, а БД сама "догадается" в каком формате дату вывести..

Это сообщение отредактировал(а) Kbl4AH - 21.12.2008, 14:35
PM MAIL ICQ   Вверх
Данкинг
Дата 21.12.2008, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(Kbl4AH @  21.12.2008,  14:32 Найти цитируемый пост)
В этом случае сортировка неправильная происходит (сортируется как строка, а не дата)...

Если потом выбирать сортировать нужно - тогда дело иное.

Цитата(Kbl4AH @  21.12.2008,  14:32 Найти цитируемый пост)
А какие могут быть проблемы с региональными настройками?

А всякие там порядки отображения даты, например?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Kbl4AH
Дата 21.12.2008, 14:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 741
Регистрация: 1.4.2008
Где: Вятка

Репутация: 6
Всего: 15



Цитата(Данкинг @  21.12.2008,  14:39 Найти цитируемый пост)
А всякие там порядки отображения даты, например?

Так это ведь уже над переменной делается... А тип он и есть тип... он для любых настроек одинаков... Ведь, по-моему, в БД дата хранится в полном формате (со временем), а уже отображается в предпочтительном виде... В любом случае представление переменной типа дата от самого типа не зависит...
... или я чего-то не понимаю... Можно пример в таком случае?
PM MAIL ICQ   Вверх
kovalenko123
Дата 21.12.2008, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 229
Регистрация: 12.5.2008

Репутация: нет
Всего: 1



Цитата

Разбей в самой таблице дату на три столбца - день, месяц, год, и не парься


Ну это же глупость smile 

Код

SQL.Text := 'select * from [Table]  WHERE Дата Like left(''01.12.2008'', 6)';

а вот этот код ничего не вернул  smile 
так опять же мне надо в like вставить дату из Datetimepickera тока чтоб год не учитывался  smile
а как это сделать незнаю  smile   
PM MAIL ICQ   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0586 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.