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

Вниз

Вывести значения, ограниченные датами   Найти похожие ветки 

 
Dbrf   (2002-10-28 16:17) [0]

В edit1 значение начальной даты, в edit2 - конечной.

procedure TForm1.Button1Click(Sender: TObject);
begin
with query1 do begin
sql.clear;
sql.Add("select*from main ");
sql.Add("where datB between "" + edit1.text + """);
sql.Add("and "" + edit2.text + """);
execSQL; end;
end;

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


 
stone ©   (2002-10-28 16:20) [1]

первой строкой в запросе должна быть
SET DATEFORMAT DMY (где D-day, M-month, Y-year)


 
3JIA9I CyKA ©   (2002-10-28 17:00) [2]

Передавай в формате yyyymmdd hh:nn:ss.zzz


 
Darts   (2002-10-28 17:11) [3]

1. Переменные, отвечающие за даты, формируй отдельно. После этого закидывай в тнело формируемого запроса. Легче отлаживать.
2. Записывай, к примеру так, Query1.SQL.SaveToFile("d:\3.sql"); Не открывай запрос Query1.Open. Затем открываешь 3.sql, вырезаешь код и вставляешь в SQL Explore (найдешь в меню Дельфи). Отладишь - закомментируй вывод в файл и открывай запрос. Сэкономишь кучу времени.
3. Заключай запрос в try...except...end. Мало чтоли будет?


 
3JIA9I CyKA ©   (2002-10-28 18:06) [4]

>> 2. .......
?


 
Darts   (2002-10-28 18:19) [5]

Вот реальный код.


s1 := FormatDateTime("mm"/"dd"/"yyyy", DateTimePicker1.Date);
s1 := Chr(34) + s1 + Chr(34);
s2 := FormatDateTime("mm"/"dd"/"yyyy", DateTimePicker2.Date);
s2 := Chr(34) + s2 + Chr(34);

with DataModule2.QueryReport1 do begin
Close;
SQL.Clear;
SQL.Add(" SELECT orderdate FROM orders");
SQL.Add(" WHERE (orderdate >= " + s1 );
SQL.Add(" AND orderdate <= " + s2 + ")");
SQL.Add(" ORDER BY orderdate");
SQL.SaveToFile("d:\3.sql");
//Open;
end;


Заметь, что я сначала формирую текстовой файл 3.sql, затем я открываю данный файл, копирую содержимое в буфер, вставляю в SQL Explore (там есть окно SQL) для данной таблицы и проверяю. Если все OK, закорачиваю строку с SQL.SaveToFile("d:\3.sql") и расскоментариваю Open.


 
Snake ©   (2002-10-29 05:45) [6]

Это железно работает для Access через ADO, возможно и для MS SQl сработает:


function DateToSQL(ADate : TDate) : string;
begin
DateSeparator:="/";
DateTimeToString(Result, "mm/dd/yyyy", ADate);
Result:="#"+Result+"#"
end;

procedure TMainForm.RepAbonPaidsActExecute(Sender: TObject);
var SQL, DF, DT : string;
DateFrom, DateTo : TDateTime;
begin
DF:=DateToSQL(DateFrom);
DT:=DateToSQL(DateTo);
SQL:="SELECT * FROM AbonPaids WHERE (AbonPaids.Dat BETWEEN "+DF+" AND "+DT+")";
ADOQuery.SQL.Add(SQL);
ADOQuery.Open;
end;


 
Victor_Cr ©   (2002-10-29 09:29) [7]

Да не мучай себе голову создай два параметра типа TDateTime и передавай их запросу:

// DF - начальная дата;
// DT - конечная дата;
SQL:="SELECT * FROM AbonPaids WHERE "+
"YOURdate >= :Start and YOURdate <= :End";
ADOQuery.SQL.Add(SQL);
ADOQuery.ParamByName("Start").AsDateTime := DF;
ADOQuery.ParamByName("End").AsDateTime := DT;
ADOQuery.Open;



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

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

Наверх




Память: 0.48 MB
Время: 0.019 c
7-59463
sergn
2002-09-15 16:28
2002.11.18
Два CDROM и MCI


14-59381
Эльф
2002-10-30 12:53
2002.11.18
SUIPack


7-59449
ППавел
2002-08-07 04:55
2002.11.18
Модем


1-59211
MsGuns
2002-11-06 11:51
2002.11.18
2 экземпляра TIniFile


1-59270
Геннадий
2002-11-05 16:10
2002.11.18
Научите работать с шаблонами в MS Word...