Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.30;
Скачать: CL | DM;

Вниз

Условия отбора   Найти похожие ветки 

 
TimScorp ©   (2006-04-07 20:51) [0]

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

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

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

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

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

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


 
TimScorp ©   (2006-04-07 20:51) [1]

Пишу так:
DM.APQ.SQL.Add("WHERE Date BETWEEN "+ MaskEdit1.Text + " AND " + MaskEdit2.Text);

Выдает ошибку: Число содержит синтаксическую ошибку в выражении запроса.

А как написать чтобы проверить находится ли дата в введенном промежутке???

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


 
balepa ©   (2006-04-08 07:04) [2]

В SQL я не силен но может все таки добавить Select ИмяПоля или * from TableName WHERE .........


 
TimScorp ©   (2006-04-08 07:33) [3]


> balepa ©   (08.04.06 07:04) [2]
> В SQL я не силен но может все таки добавить Select ИмяПоля
> или * from TableName WHERE .........


Это все есть:

     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 "+ QuotedStr (MaskEdit1.Text) + "   AND " + QuotedStr(MaskEdit2.Text));
     DM.APQ.Active := true;


 
balepa ©   (2006-04-08 10:14) [4]

SELECT *
FROM Table1
WHERE (Date BETWEEN #12/12/2012# And #12/15/2012#);


 
Anatoly Podgoretsky ©   (2006-04-08 13:57) [5]

Используй параметры и все будет хорошо. А то постоянно или не тот тип, или еще что и что хуже результат не тот.


 
TimScorp ©   (2006-04-08 16:58) [6]


> Anatoly Podgoretsky ©   (08.04.06 13:57) [5]
> Используй параметры и все будет хорошо. А то постоянно или
> не тот тип, или еще что и что хуже результат не тот.


С параметрами тоже не получается, можно пример???

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


 
vovnuke ©   (2006-04-08 17:10) [7]

в каком формате база?


 
TimScorp ©   (2006-04-08 17:26) [8]


> vovnuke ©   (08.04.06 17:10) [7]
> в каком формате база?


Access


 
vovnuke ©   (2006-04-08 17:28) [9]

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


 
TimScorp ©   (2006-04-08 17:36) [10]

незнаю


 
vovnuke ©   (2006-04-08 17:38) [11]

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


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


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


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


 
Anatoly Podgoretsky ©   (2006-04-08 19:26) [13]

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


 
TimScorp ©   (2006-04-08 19:58) [14]

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 20:04) [15]

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


 
TimScorp ©   (2006-04-08 20:04) [16]

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


 
TimScorp ©   (2006-04-08 20:07) [17]

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

Ошибка та же.

С уважением TimScorp


 
Desdechado ©   (2006-04-08 21:22) [18]

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


 
TimScorp ©   (2006-04-08 22:59) [19]


> 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


 
TimScorp ©   (2006-04-09 04:00) [20]

ап


 
palva ©   (2006-04-09 09:19) [21]

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


 
TimScorp ©   (2006-04-09 16:38) [22]

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

 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.


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

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

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


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

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


 
Anatoly Podgoretsky ©   (2006-04-10 01:10) [24]

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


 
vovnuke ©   (2006-04-10 09:55) [25]

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


 
Desdechado ©   (2006-04-10 11:52) [26]

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

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


 
sniknik ©   (2006-04-10 12:15) [27]

> Но если написать так:
>  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]
> Убери время из дат


 
TimScorp ©   (2006-04-13 12:16) [28]

Попробую.

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



Страницы: 1 вся ветка

Текущий архив: 2006.04.30;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.028 c
15-1144358901
Суслик
2006-04-07 01:28
2006.04.30
Ищу перевод лицензии MPL 1.1 на рОдный язык.


3-1141647995
Клон
2006-03-06 15:26
2006.04.30
Blolb поля в Mysql используя DbExpress


2-1144753470
Eksell
2006-04-11 15:04
2006.04.30
Visual_Effects_in_Win_XP


15-1144410364
syte_ser78
2006-04-07 15:46
2006.04.30
Я пятницей, господа!


15-1144262820
Hover
2006-04-05 22:47
2006.04.30
Программы для PDA