Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Условия отбора [D7, XP]


Страницы:   1 2

TimScorp ©   (2006-04-07 20:51:00) 

Доброго времени суток!!!

Вопрос в следующем:

Имеем таблицу в Access в ней есть Поле: Date тип - Дата/время
Хранятся в этом поле даты.

пишу запрос типа:

DM.APQ.SQL.Add('WHERE Date BETWEEN '+ QuotedStr (MaskEdit1.Text) + ' AND ' + QuotedStr(MaskEdit2.Text));

Выдает ошибку: Несоответствие типов данных в выражении условия отбора.


TimScorp   (2006-04-13 12:16:00) [1]

Попробую.

С уважением TimScorp.


sniknik   (2006-04-10 12:15:00) [2]

> Но если написать так:
>  DM.APQ.Parameters.ParamValues['DateFrom'] := DateTimePicker1.Date;
>  DM.APQ.Parameters.ParamValues['DateTo'] := DateTimePicker2.Date;
> То не работает. Почему не пойму.
напиши DM.APQ.Parameters.ParamValues['DateFrom'] := DateTimePicker1. DateTime;

+
Anatoly Podgoretsky ©   (10.04.06 01:10) [24]
> Убери время из дат


Desdechado   (2006-04-10 11:52:00) [3]

Anatoly Podgoretsky ©   (10.04.06 01:10) [24]
BETWEEN включает границы

TimScorp ©   (09.04.06 16:38) [22]
d и d1 небось типа TDate?
просто Value - имеет тип Variant, а он включает информацию о типе присваиваемого значения


vovnuke   (2006-04-10 09:55:00) [4]

это cvdateне Delph-овая функция.
Если дословно то надо вот так:
'where MyDate between cvdate('+QuotedStr(text1)+') and cvdate('+QuotedStr(text2)+')';
Но с параметрами лучше.
Насчет [14], какого типа параметры?


Anatoly Podgoretsky   (2006-04-10 01:10:00) [5]

Убери время из дат, и between замени операторами отношения


TimScorp   (2006-04-09 23:56:00) [6]

Мдя токо почему-то граничные пределы не входят. Пришлось писать так:

d := DateTimePicker1.Date-1;
d1 := DateTimePicker2.Date+1;


Почему тож понять не можу.

С уважением TimScorp.


TimScorp   (2006-04-09 16:38:00) [7]

Заработало вот так:

 d := DateTimePicker1.Date;
 d1 := DateTimePicker2.Date;
 DM.APQ.Active := false;
 DM.APQ.SQL.Clear;
 DM.APQ.SQL.Add('SELECT *');
 DM.APQ.SQL.Add('FROM AP');
 DM.APQ.SQL.Add('WHERE [Date_] BETWEEN :DateFrom AND :DateTo');
 DM.APQ.Parameters.ParamValues['DateFrom'] := d;
 DM.APQ.Parameters.ParamValues['DateTo'] := d1;
 DM.APQ.Active := true;


Но если написать так:
 DM.APQ.Parameters.ParamValues['DateFrom'] := DateTimePicker1.Date;
 DM.APQ.Parameters.ParamValues['DateTo'] := DateTimePicker2.Date;

То не работает. Почему не пойму.

С уважением TimScorp.


palva   (2006-04-09 09:19:00) [8]

> Выдает ошибку: Несоответствие типов данных в выражении условия отбора.
В SQL-команде неправильный формат даты. Вы пробовали использовать формат как в balepa ©   (08.04.06 10:14) [4] ?


TimScorp   (2006-04-09 04:00:00) [9]

ап


TimScorp   (2006-04-08 22:59:00) [10]


> Desdechado ©   (08.04.06 21:22) [18]
> тебе же сказали, используй параметры
> sql.text:='SELECT * FROM tbl WHERE x BETWEEN :1 AND :2';
>
> params[0].AsDate:=Date-1;
> params[1].AsDate:=Date;


В ADO нету params тама есть parameters и если ты посмотришь на [14] пост то увидишь что тама и используются параметры.

С уважением TimScorp


Desdechado   (2006-04-08 21:22:00) [11]

тебе же сказали, используй параметры
sql.text:='SELECT * FROM tbl WHERE x BETWEEN :1 AND :2';
params[0].AsDate:=Date-1;
params[1].AsDate:=Date;


TimScorp   (2006-04-08 20:07:00) [12]

переименовал в Date_.

Ошибка та же.

С уважением TimScorp


Anatoly Podgoretsky   (2006-04-08 20:04:00) [13]

Date зарезервированое имя


TimScorp   (2006-04-08 20:04:00) [14]

если переименую работать будет???


TimScorp   (2006-04-08 19:58:00) [15]

DM.APQ.Active := false;
     DM.APQ.SQL.Clear;
     DM.APQ.SQL.Add('SELECT *');
     DM.APQ.SQL.Add('FROM AP');
     DM.APQ.SQL.Add('WHERE Date BETWEEN :DateFrom AND :DateTo');
     DM.APQ.Parameters.ParamValues['DateFrom'] := DateTimePicker1.Date;
     DM.APQ.Parameters.ParamValues['DateTo'] := DateTimePicker2.Date;
     DM.APQ.Active := true;

   Выдает ошибку: Несоответствие типов данных в выражении условия отбора.

 С уважением TimScorp


Anatoly Podgoretsky   (2006-04-08 19:26:00) [16]

TimScorp ©   (08.04.06 16:58) [6]
Как неправильно делаешь?


TimScorp   (2006-04-08 17:43:00) [17]


> vovnuke ©   (08.04.06 17:38) [11]
> посмотри в параметрах в Access, а вообще можно поробовать
> так:
> where MyDate between cvdate(QuotedStr(text1)) and cvdate(QuotedStr(text2))


cvdate - ошибка при компиляции


vovnuke   (2006-04-08 17:38:00) [18]

посмотри в параметрах в Access, а вообще можно поробовать так:
where MyDate between cvdate(QuotedStr(text1)) and cvdate(QuotedStr(text2))


TimScorp   (2006-04-08 17:36:00) [19]

незнаю


vovnuke   (2006-04-08 17:28:00) [20]

стандарт SQL какой? ANSI 89 или ANSI 92, даты там по разному задаются, почитай хелп в Access


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо