Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.09.2009, 22:26   #1
Vit@L
Форумчанин
 
Аватар для Vit@L
 
Регистрация: 24.06.2009
Сообщений: 216
По умолчанию Ошибка в запросе к БД Access

Привет.
Друзья, подскажите пожалуйста где ошибка? В общем нужно выбрать данные из таблички за определенный период. На форме лежит 2 компонента (RX) dateedit.
Выполняю запрос:
Код:
adoquery1.SQL.Add('select * from TABLE_NAME where DATA between " '+datetostr(dateedit1.Date)+' " and " '+datetostr(dateedit2.Date)+' " ');
Выдает ошибку: "Несоответствие типов данных в выражении условия

Пробую без ковычек:
Код:
adoquery1.SQL.Add('select * from TABLE_NAME where DATA between '+datetostr(dateedit1.Date)+' and '+datetostr(dateedit2.Date));
Выдает другую ошибку: "Число содержит синтаксическую ошибку в выражении запроса DATA between 01.09.2009 and 26.09.2009"

Где может быть ошибка? Ничего не могу понять, раньше такой код работал (в других программах)
Заранее благодарен!
Водку мы пьем для запаха - а дури нам своей хватает!
Vit@L вне форума Ответить с цитированием
Старый 25.09.2009, 22:38   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Типичная проблема.
Если не хотите иметь проблемы с датами - пользуетесь параметрическими запросами и даты передавайте как параметры.
Примеры поищите на форуме, тут это уже обсуждалось...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 25.09.2009, 22:40   #3
Vit@L
Форумчанин
 
Аватар для Vit@L
 
Регистрация: 24.06.2009
Сообщений: 216
По умолчанию

А можно поподробней, что за параметрические запросы? И что значит дату передать как параметр?
Водку мы пьем для запаха - а дури нам своей хватает!
Vit@L вне форума Ответить с цитированием
Старый 25.09.2009, 23:19   #4
Vit@L
Форумчанин
 
Аватар для Vit@L
 
Регистрация: 24.06.2009
Сообщений: 216
По умолчанию

Ну что так сложно ответить????
Водку мы пьем для запаха - а дури нам своей хватает!
Vit@L вне форума Ответить с цитированием
Старый 26.09.2009, 00:14   #5
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

ну Вы же не думаете, что форум — это чат?!

а ещё можно же поиском воспользоваться.
для этого зайти сюда - поиск по форуму
вбить ключевое слово ftDateTime и посмотреть темы, которые откроются...

вкратце.
запрос переделываете так:
Код:
adoquery1.SQL.Text := 'select * from TABLE_NAME where INT([DATA]) between :date1 and :date2';
потом, там, где хотите присвоить значения:
Код:
  adoquery1.Close;
  adoquery1.Parameters.ParamByName('date1').DataType := ftDateTime;
  adoquery1.Parameters.ParamByName('date2').DataType := ftDateTime;
  adoquery1.Parameters.ParamByName('date1').Value:=trunc(dateedit1.Date);
  adoquery1.Parameters.ParamByName('date2').Value:=trunc(dateedit1.Date);
  adoquery1.Open;
Serge_Bliznykov вне форума Ответить с цитированием
Старый 26.09.2009, 08:23   #6
Vit@L
Форумчанин
 
Аватар для Vit@L
 
Регистрация: 24.06.2009
Сообщений: 216
По умолчанию

Блин, ну ниче не понял.
Короче, мне нужно чтобы в отчете (QuickReport'e) выводились записи из таблицы, за определенный период. Вот то что вы мне написали, куда
это засунуть, никак не могу понять. Вот у меня какой код, при нажатии на кнопку "Свормировать":

Код:
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select * from TABLE_NAME where DATA between '+ dateedit1.Date +' and '+dateedit2.date);
adoquery1.Active:=true;
quickrep1.Preview;
Подскажите пожалуйста, никак не могу разобраться. Заранее спасибо.
Водку мы пьем для запаха - а дури нам своей хватает!
Vit@L вне форума Ответить с цитированием
Старый 26.09.2009, 09:39   #7
ОДИНОЧЕСТВО В СЕТИ
Любопытная Вредина
Участник клуба
 
Аватар для ОДИНОЧЕСТВО В СЕТИ
 
Регистрация: 19.06.2009
Сообщений: 1,285
По умолчанию

вместо
Код:
adoquery1.SQL.Clear;
adoquery1.SQL.Add('select * from TABLE_NAME where DATA between '+ dateedit1.Date +' and '+dateedit2.date);
adoquery1.Active:=true;
quickrep1.Preview;
вставьте
Код:
adoquery1.SQL.Text := 'select * from TABLE_NAME where INT([DATA]) between :date1 and :date2';
  adoquery1.Close;
  adoquery1.Parameters.ParamByName('date1').DataType := ftDateTime;
  adoquery1.Parameters.ParamByName('date2').DataType := ftDateTime;
  adoquery1.Parameters.ParamByName('date1').Value:=trunc(dateedit1.Date);
  adoquery1.Parameters.ParamByName('date2').Value:=trunc(dateedit2.Date);
  adoquery1.Active:=true;
  quickrep1.Preview;
если я правильно поняла
Дурь - это особая форма материи, которая не возникает ниоткуда и не исчезает никуда, а лишь переходит из одной головы в другую.

Последний раз редактировалось ОДИНОЧЕСТВО В СЕТИ; 26.09.2009 в 18:24.
ОДИНОЧЕСТВО В СЕТИ вне форума Ответить с цитированием
Старый 26.09.2009, 18:16   #8
Vit@L
Форумчанин
 
Аватар для Vit@L
 
Регистрация: 24.06.2009
Сообщений: 216
По умолчанию

Ничего не получается. Выдает теперь пустой отчет. :-(((((((((((((((((((((
Написал точно так же, как Вы мне написали. Что можно сделать?
Водку мы пьем для запаха - а дури нам своей хватает!
Vit@L вне форума Ответить с цитированием
Старый 26.09.2009, 18:22   #9
Vit@L
Форумчанин
 
Аватар для Vit@L
 
Регистрация: 24.06.2009
Сообщений: 216
По умолчанию

А нет, все. Все ок. Спасибо большое! Проблема была в том, что в коде вместо dateedit1? надо было второй раз написать dateedit2. Все отлично. Всем спасибо.
Водку мы пьем для запаха - а дури нам своей хватает!
Vit@L вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ошибка в запросе с union Tanuska___:) БД в Delphi 3 22.08.2008 22:32
Ошибка SQL запросе. EVG44 БД в Delphi 2 21.10.2007 22:42
Ошибка при запросе SQL в IB Алекс1 БД в Delphi 2 24.06.2007 22:37
Ошибка в SQL запросе eremin БД в Delphi 2 23.06.2007 07:13
Ошибка в SQL запросе...!? KeyDok БД в Delphi 5 21.06.2007 09:19