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

Вниз

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

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

Наверх





Память: 0.46 MB
Время: 0.009 c
8-59284
Jo
2002-07-12 13:43
2002.11.18
Графика


14-59359
Veronika
2002-10-29 08:42
2002.11.18
Как защитить книгу Excel от просмотра?


1-59106
jcrush
2002-11-08 06:15
2002.11.18
RichEdit - прозрачным?


6-59321
der
2002-09-16 20:29
2002.11.18
Как сделать FIREWALL?


6-59299
Aralekin
2002-09-20 17:58
2002.11.18
Широковещательный пакет





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