![]() |
|
|
|
|
#1
|
|||
|
|||
|
Помогите организовать SQL запрос для вывода отчета по движению товаров за период. Вот как я пытался но ничего не вышло:
SELECT ОрдерКод, ОрдерНомер, ОрдерСклад, ОрдерМОЛ, ОрдерДата, ОперацияКод FROM [Справочник Ордеров] WHERE (ОрдерДата>="'+Edit1.Text+'") and (ОрдерДата<="'+Edit2.Text+'")' |
|
#2
|
|||
|
|||
|
А ошибку-то какую выдает? В каком формате дата в Edit1 и Edit2?
Кстати проверку того, что дата попадает в заданный интервал, можно писать так: WHERE ОрдерДата BETWEEN Дата1 AND Дата2 |
|
#3
|
|||
|
|||
|
Формат. Например. 15.10.2007
|
|
#4
|
|||
|
|||
|
Мне необходимо вывести все ордера за данный период!
|
|
#5
|
|||
|
|||
|
Дату укажите в формате ГГГГ.ММ.ДД.
Вообще, проще всего такие коллизии решать с помощью параметров: Код:
var
Q: TQuery;
begin
Q := TQuery.Create(nil);
try
Q.SQL.Add('SELECT ОрдерКод, ОрдерНомер, ОрдерСклад, ОрдерМОЛ, ОрдерДата, ОперацияКод FROM [Справочник Ордеров]');
Q.SQL.Add('WHERE ОрдерДата BETWEEN :DStart AND :DEnd');
Q.ParamByName('DStart').AsDateTime := StrToDate(Edit1.Text);
Q.ParamByName('DEnd').AsDateTime := StrToDate(Edit2.Text);
Q.Open;
{ Тут делаем чего хотели с данными запроса }
finally
Q.Free;
end;
end; |
|
#6
|
|||
|
|||
|
А если прописать через ADOQuery! Я вот как пробовал но полученные значения почему то не выводятся!?
Код:
var
tmpStr : string;
begin
ADOQuery1.Active := False;
ADOQuery1.SQL.Clear;
tmpStr := 'SELECT ОрдерКод, ОрдерСклад, ОрдерМОЛ, ОрдерДата, ОперацияКод FROM [Справочник Ордеров] WHERE ОрдерДата BETWEEN :("'+Edit1.Text+'") and :("'+Edit2.Text+'")';
ADOQuery1.SQL.Add(tmpStr);
ADOQuery1.Active := True;
end;Модератор Не забываем использовать теги. |