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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.10.2009, 17:47   #1
Demien
Форумчанин
 
Аватар для Demien
 
Регистрация: 01.08.2007
Сообщений: 222
По умолчанию Выборка по датам в Access

В общем необходимо из базы выбрать данные по датам.
Запрс:
Код:
SELECT P_24
FROM dozi_tunec
WHERE date > '01.01.2005'
 AND date < '03.01.2005'
ORDER BY date;
Выдает ошибку "Несоответствие типов данных в выражении условия отбора"...
Тип поля "DateTime". Даты записаны в формате "dd.mm.yyyy".
Уже мозги не варят... Че делать? Где ошибка? (((
Жить тоже вредно, от этого умирают!!!
Demien вне форума Ответить с цитированием
Старый 27.10.2009, 17:53   #2
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию

ну во первых date это ключевое слово, поменяйте. во вторых нужны скобки
WHERE (date > '01.01.2005')
AND (date < '03.01.2005')
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума Ответить с цитированием
Старый 27.10.2009, 17:53   #3
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

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

2 Sparky
скобочки здесь не при чём
soleil@mmc вне форума Ответить с цитированием
Старый 27.10.2009, 17:56   #4
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию

ну тогда вижу только одно это название поля date
Единственное, что ограничивает полет мысли программиста-компилятор

Последний раз редактировалось Sparky; 27.10.2009 в 18:02.
Sparky вне форума Ответить с цитированием
Старый 27.10.2009, 18:17   #5
Demien
Форумчанин
 
Аватар для Demien
 
Регистрация: 01.08.2007
Сообщений: 222
По умолчанию

Цитата:
Сообщение от soleil@mmc Посмотреть сообщение
видимо, нужно привести дыта из условия к тому же типу
ибо как оно записано сейчас - сработает только с неявным приведением типов
а оно у вас работает в акссесе?
В Аксесе формат поля стоит - "Краткий формат даты",
Маска ввода - "00.00.0000;0;.".
При попытке выполнить тот-же запрос в Аксесе - та-же ошибка...((

Цитата:
Сообщение от Sparky Посмотреть сообщение
ну тогда вижу только одно это название поля date
Название поля менял... Те-же яйца!

Вот код:
Код:
procedure TForm1.Button3Click(Sender: TObject);
var
  d1, d2 :String;
  n: Integer;
  ND: String;
begin
  n:=StrToInt(Edit1.Text);
  if n<10 then
    ND:=('P_0'+IntToStr(n))
    else
    ND:=('P_'+IntToStr(n));
  d1 := FormatDateTime('dd.mm.yyyy',DateTimePicker1.Date);
  d2 := FormatDateTime('dd.mm.yyyy',DateTimePicker2.Date);

  Memo1.Clear;
  Memo1.Lines.Add('SELECT '+ND);
  Memo1.Lines.Add('FROM dozi_tunec');
  Memo1.Lines.Add('WHERE date > '''+d1+'''');
  Memo1.Lines.Add(' AND date < '''+d2+'''');
  Memo1.Lines.Add('ORDER BY date;');

  ADODataSet1.Active:=False;
  ADODataSet1.CommandText:=Memo1.Text;
  ADODataSet1.Active:=True;
  ADODataSet1.Open;
end;
Жить тоже вредно, от этого умирают!!!

Последний раз редактировалось Demien; 27.10.2009 в 18:23.
Demien вне форума Ответить с цитированием
Старый 27.10.2009, 18:20   #6
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию

замени название поля и попробуй все таки скобки
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума Ответить с цитированием
Старый 27.10.2009, 18:30   #7
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

Цитата:
Сообщение от Demien Посмотреть сообщение
Выдает ошибку "Несоответствие типов данных в выражении условия отбора"...
Тип поля "DateTime". Даты записаны в формате "dd.mm.yyyy".
еще раз прочитай свой же стартовый пост и подумай
какой там формат отображения стоит на это поле меня мало волнует
в зависимости от настроек DateTime может отображаться так 01.01.2009 00:00:00 (не будем рассматривать особенности региональных настроек), а дальше ты уже можешь форматировать как душе угодно

дык вот нужно подставленную строку '01.01.2005' привести к типу DateTime
попробуй такой вариант
Код:
Memo1.Lines.Add('WHERE date > :p0');
....
 ADODataSet1.Parameters.ParamByName('p0').AsDateTime:=StrToDateTime(d1);
soleil@mmc вне форума Ответить с цитированием
Старый 27.10.2009, 18:45   #8
Demien
Форумчанин
 
Аватар для Demien
 
Регистрация: 01.08.2007
Сообщений: 222
По умолчанию

Тут что-то с самим запросом... или с базой...
В аксесе ведь ручками ввожу дату.

Попробовал из запрса убрать условия по дате.
Код:
SELECT date, P_24
FROM dozi_tunec
ORDER BY date;
Работает, сортирует.
То есть с именем поля никак не связано.
Жить тоже вредно, от этого умирают!!!

Последний раз редактировалось Demien; 27.10.2009 в 19:42.
Demien вне форума Ответить с цитированием
Старый 28.10.2009, 00:00   #9
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

дата в Access задаётся с помощью "решёточек":
Код:
SELECT P_24
FROM dozi_tunec
WHERE date > #2005/01/01#
 AND date < #2005/01/03#
ORDER BY date;
только где будем месяц, где год, где день - зависит от настроек локали системы...
Поэтому гораздо более правильно использовать параметрический запрос:
Код:
SELECT P_24
FROM dozi_tunec
WHERE date > :d1
 AND date < :d2
ORDER BY date;
p.s.
Цитата:
Код:
ADODataSet1.Active:=True;
  ADODataSet1.Open;
это Вы зря - масло маслянное. Open ПОЛНОСТЬЮ тоже самое, что Active := true - не надо дважды делать одно и тоже...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 28.10.2009, 09:14   #10
Demien
Форумчанин
 
Аватар для Demien
 
Регистрация: 01.08.2007
Сообщений: 222
По умолчанию

Код:
SELECT dt, P_24
FROM dozi_tunec
WHERE dt >= #01/01/2005#
 AND dt <= #01/31/2005#
ORDER BY dt;
Работает!!!
Огромное спасибо за помощь!!!
Жить тоже вредно, от этого умирают!!!
Demien вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Фильтрация по датам Shpon Microsoft Office Excel 2 12.10.2009 16:53
выборка по датам Screame Microsoft Office Excel 8 15.07.2009 23:22
Выборка из txt в БД access Roman_RNP БД в Delphi 7 17.04.2009 20:07
Delphy и Access.вводя инфу во вторичный файл Access, она отражалась в первом ADOTable Lev БД в Delphi 0 11.11.2007 12:14