Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.04.30;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.51 MB
Время: 0.009 c
1-1143456131
DelphiLexx
2006-03-27 14:42
2006.04.30
C эмулировать нажатие Ctrl+A


1-1143212389
TSM
2006-03-24 17:59
2006.04.30
Rave Report Anchor и растяжка рамки


2-1144819651
Leshas
2006-04-12 09:27
2006.04.30
Обработка ошибок


2-1145028230
elfebet
2006-04-14 19:23
2006.04.30
как при помощи IdHTTP запустить браузер по умолчанию?


2-1144770126
ViktorZ
2006-04-11 19:42
2006.04.30
сложить два столбца...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский