Условия отбора!!!
От: TimScorp  
Дата: 07.04.06 17:35
Оценка:
Доброго времени суток!!!

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

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

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

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

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



10.04.06 11:37: Перенесено модератором из 'Delphi & Builder' — Odi$$ey
Re: Условия отбора!!!
От: TimScorp  
Дата: 07.04.06 17:39
Оценка:
Пишу так:
DM.APQ.SQL.Add('WHERE Date BETWEEN '+ MaskEdit1.Text + ' AND ' + MaskEdit2.Text);

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

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

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

P.S. Пришлось разбить целое не грузится
Re: Условия отбора!!!
От: akasoft Россия  
Дата: 07.04.06 19:28
Оценка:
Здравствуйте, TimScorp, Вы писали:

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


Надо указывать дату в американском формате, как то:

      S := Format('UPDATE Клиенты SET Дата = %s WHERE (Дата BETWEEN %s AND %s);',
        [FormatDateTime('#m-d-yyyy#', DateEdit5.Date),
        FormatDateTime('#m-d-yyyy#', DateEdit3.Date),
        FormatDateTime('#m-d-yyyy#', DateEdit4.Date)]);
... << RSDN@Home 1.2.0 alpha rev. 648>> SQL Express 2005
Re: Условия отбора!!!
От: Hеmul  
Дата: 07.04.06 21:17
Оценка:
Здравствуйте, TimScorp, Вы писали:

TS>Имеем таблицу в Access в ней есть Поле: Date тип — Дата/время

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

1) Date — это функция в акцесе, поэтому поле Date заключаем в квадратные скобки (а лучше — переименовываем)
2) Пользуемся параметрами
DM.APQ.SQL.Add('WHERE [Date] BETWEEN :DateFrom AND :DateTo');
DM.APQ.ParamByName( 'DateFrom' ).asDateTime := StrToDate( MaskEdit1.Text );
DM.APQ.ParamByName( 'DateTo').asDateTime := StrToDate( MaskEdit2.Text );

3) Зачем MaskEdit? Есть же куча контролов для ввода даты, TDateTimePicker например
Re[2]: Условия отбора!!!
От: TimScorp  
Дата: 08.04.06 12:55
Оценка:
Здравствуйте, Hеmul, Вы писали:

H>DM.APQ.SQL.Add('WHERE [Date] BETWEEN :DateFrom AND :DateTo');

H>DM.APQ.ParamByName( 'DateFrom' ).asDateTime := StrToDate( MaskEdit1.Text );
H>DM.APQ.ParamByName( 'DateTo').asDateTime := StrToDate( MaskEdit2.Text );

Так ваще не получается! Токо так могу написать: DM.APQ.Parameters.ParamByName('DateFrom') и добавить asDateTime не можу.

В чем проблем???

С уважением TimScorp.
Re: Условия отбора!!!
От: TimScorp  
Дата: 08.04.06 16:05
Оценка:
Пишу так:

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.
Re[3]: Условия отбора!!!
От: Anton Batenev Россия https://github.com/abbat
Дата: 09.04.06 18:24
Оценка:
Здравствуйте, TimScorp, Вы писали:

H>>DM.APQ.SQL.Add('WHERE [Date] BETWEEN :DateFrom AND :DateTo');

H>>DM.APQ.ParamByName( 'DateFrom' ).asDateTime := StrToDate( MaskEdit1.Text );
H>>DM.APQ.ParamByName( 'DateTo').asDateTime := StrToDate( MaskEdit2.Text );
TS>Так ваще не получается! Токо так могу написать: DM.APQ.Parameters.ParamByName('DateFrom') и добавить asDateTime не можу.
TS>В чем проблем???

Вероятно, все же так:

DM.APQ.ParamByName('DateFrom').Value := DateTimePicker1.Date;
DM.APQ.ParamByName('DateTo').Value := DateTimePicker2.Date;

Ну и [Date], конечно же, в квадратные скобки.
Re[3]: Условия отбора!!!
От: Hеmul  
Дата: 10.04.06 08:01
Оценка:
Здравствуйте, TimScorp, Вы писали:

TS>Здравствуйте, Hеmul, Вы писали:


H>>DM.APQ.SQL.Add('WHERE [Date] BETWEEN :DateFrom AND :DateTo');

H>>DM.APQ.ParamByName( 'DateFrom' ).asDateTime := StrToDate( MaskEdit1.Text );
H>>DM.APQ.ParamByName( 'DateTo').asDateTime := StrToDate( MaskEdit2.Text );

TS>Так ваще не получается! Токо так могу написать: DM.APQ.Parameters.ParamByName('DateFrom') и добавить asDateTime не можу.


DM.APQ это что такое? ADODataSet? Тогда так:
DM.APQ.Parameters.ParamByName('DateFrom').Value := DateTimePicker1.Date;
Re: Условия отбора!!!
От: Лекс Россия  
Дата: 10.04.06 13:37
Оценка:
Здравствуйте, TimScorp, Вы писали:

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


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


TS>Имеем таблицу в Access в ней есть Поле: Date тип — Дата/время

TS>Хранятся в этом поле даты.

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


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


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




DM.APQ.SQL.Add('WHERE Date BETWEEN #'+ QuotedStr (MaskEdit1.Text) + '# AND #' + QuotedStr(MaskEdit2.Text)) + '#';
C Уважением,
Андрей.
Re: Условия отбора!!!
От: Liris Россия http://lifeondvd.narod.ru/
Дата: 11.04.06 07:06
Оценка:
Доброго дня, TimScorp, Вы спросили:
TS>пишу запрос типа:
TS>DM.APQ.SQL.Add('WHERE Date BETWEEN '+ QuotedStr (MaskEdit1.Text) + ' AND ' + QuotedStr(MaskEdit2.Text));
TS>Выдает ошибку: Несоответствие типов данных в выражении условия отбора.
Отвечаю, как я пишу:
... WHERE  (S.ID=T.SOTR) And ((T.DATE_WORK>=:DAYNACH) And (T.DATE_WORK<=:DAYKON))

DAYNACH — Начало периода
DAYKON — Конец периода
    ...
            tReportData: TADODataSet;
    ...
                with tReportData.Parameters do
                begin
                    Clear;
                    AddParameter.Name := 'DAYNACH';
                    AddParameter.Name := 'DAYKON';
                    ParamValues['DAYNACH'] := eFirstDay.Value;
                    ParamValues['DAYKON'] := eEndDay.Value;
                end;

Есть пример для TADOQuery. Если нужно — подскажу.
Удачи!
... << LifeOnDVD — память в цифре >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.