Главная страница
    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.041 c
6-1137077876
Fantom
2006-01-12 17:57
2006.04.30
Помогите решить проблему WebBrowser.


15-1144309289
Семен Сорокин
2006-04-06 11:41
2006.04.30
Телефонное мошенничество


3-1141957031
Exciter
2006-03-10 05:17
2006.04.30
Внести значения параметров TQuery


3-1141722439
Sergey Ivanov
2006-03-07 12:07
2006.04.30
Уникальный ключ позволяет добавить дублирующиеся значения


4-1139220699
Stas_Kalishenko
2006-02-06 13:11
2006.04.30
Toolbar-меню в чужом приложении





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский