Форум: "Начинающим";
Текущий архив: 2008.04.06;
Скачать: [xml.tar.bz2];
ВнизКак зделать выборку по дате??? Найти похожие ветки
← →
HITMAN (2008-03-11 21:07) [0]Нужно показать в таблице с даты по дату.
ADOQuery.SQL:= Что сюда вписать???
Мож есть у кого пример???
← →
sniknik © (2008-03-11 21:39) [1]> ADOQuery.SQL:= Что сюда вписать???
сюда. ничего не надо... "выкинуть" его надо, от греха...
а писать в ADODataSet.CommandText:= "все что угодно возвращающее данные (рекордсет)";
"все что угодно" зависит от сервера от которого собираемся получать результат... например какойто может и не поддерживает BETWEEN, а он тут "сам просится".
главное (раз уж даты), передавать значение в условие параметрами.
> Мож есть у кого пример???
а то как же, у когото наверняка есть пример!!! жди его...
← →
HITMAN (2008-03-11 21:40) [2]Очень нужно, 2 проекта стоит на месте...
← →
sniknik © (2008-03-11 21:41) [3]сочувствую...
← →
HITMAN (2008-03-11 21:45) [4]ADOQuery.SQL.text:=
Есть какие то стандартные функции выборки...
это не работает:
procedure TSKLAD.BitBtn18Click(Sender: TObject);
var // uses DateUtils;
Present: TDateTime;
EndOfWeek: TDateTime;
begin
Present:= Now; // Now - ôóíêöèÿ, âîçâðàùàåò òåêóùóþ äàòó è âðåìÿ
EndOfWeek := StartOfAWeek(YearOf(Present),WeekOf(Present)+1);
DM.Qvery.SQL.Text:=
"(Data >= """+ FormatDateTime("dd/mm/yyyy",Present)+""")" + "and"+
"(Data < """+ FormatDateTime("dd/mm/yyyy",EndOfWeek)+""")";
DM.Qvery.Open;
if DM.Qvery.RecordCount <> 0 then
DM.DataSource2.DataSet := DM.Qvery
else
ShowMessage("Íà ýòó íåäåëþ íè êàêèõ äåë íå çàïëàíèðîâàíî." );
end;
← →
HITMAN (2008-03-11 22:03) [5]Мож кому пригодятся примеры выборки:
http://www.microsoft.com/Rus/Msdn/Activ/MSVB/Archive/DataAccess/263.mspx
http://www.sql.ru/forum/actualthread.aspx?tid=526211
http://flasher.ru/forum/showthread.php?t=29620
http://forums.realcoding.net/index.php?s=538344da18e9bbcd4078b42afd9271f5&showtopic=2306&mode=threaded
← →
Sergey13 © (2008-03-12 09:14) [6]Кошмар!!!
> 2 проекта стоит на месте...
Интересно на какой стадии?
Программистов надо нанимать.
ЗЫ: Сори, не удержался.
← →
Ega23 © (2008-03-12 09:29) [7]
> Нужно показать в таблице с даты по дату.
> ADOQuery.SQL:= Что сюда вписать???ADOQuery.SQL.Text := "exec S_MySelectProc @DateIn=:DateIn, @DateOut=:DateOut";
← →
Ega23 © (2008-03-12 09:30) [8]Только есть подозрение, что тебе это вряд-ли поможет...
← →
Johnmen © (2008-03-12 09:30) [9]
> > 2 проекта стоит на месте...
Ага, две лабы по информатике на первом курсе.
← →
Rubin (2008-03-12 20:06) [10]Почему если что-то пишешь, то нужно знать всё обсалютно, раньше никогда не сталкивался с базами данных. а моими програми пользуются многие.
← →
Johnmen © (2008-03-12 21:37) [11]
> Rubin (12.03.08 20:06) [10]
> Почему если что-то пишешь, то нужно знать всё обсалютно,
Это где такое утверждение?
← →
Simpson (2008-03-12 21:56) [12]select * from table where id > 0 order by datefield asc
← →
Johnmen © (2008-03-13 09:08) [13]
> Simpson (12.03.08 21:56) [12]
Перед тем, как что-то запостить, желательно ознакомиться с темой ветки.
← →
Simpson (2008-03-13 09:14) [14]select * from table where datefield between date1 and date2
Johnmen © (13.03.08 09:08) [13]
А я тут первый день ))
зы
буду внимательней
← →
Rubin (2008-03-13 21:47) [15]Использую ADOQuery и базу формата mdb (ацессовскую)
похоже, что причина именно в этом, потому как просто в Query и с базой DB работает.
Пишу запрос вот так:
SELECT * FROM A_JUR_PRIH_NAK_
WHERE Data >= "06/02/2008" and Data < "07/02/2008"
ORDER BY label
Даже если даты ставлю так:"06.02.2008"
Ошибка вылетает одна и таже:
!!! Несоответствие типов данных в выражении условия отбора !!!
Замучился уже в 0! мож кто знает в чём мулька???
← →
Simpson (2008-03-13 22:05) [16]Посмотри какой формат даты принят, еще может быть что ты пытаешся Timestamp таким образом найти. Основная проблема у тебя формат записи даты.
← →
Rubin (2008-03-13 22:18) [17]Перебрал все возможные варианты.
В структуре таблицы установлен !!краткий формат даты!! то есть допустим 01.01.2008
и вот так тоже самое...
SELECT * FROM A_JUR_PRIH_NAK_
WHERE Data >= "06.02.2008" and Data < "07.02.2008"
ORDER BY label
чем вычеслить требуемый формат???
и по этому примеру пробовал:
DM.Qvery.SQL.Text:=
"(Data >= """+ FormatDateTime("dd/mm/yyyy",Present)+""")" + "and"+
"(Data < """+ FormatDateTime("dd/mm/yyyy",EndOfWeek)+""")";
то есть формат задаётся на ходу.
(этот пример работает на Query и с базой DB)
← →
sniknik © (2008-03-13 22:27) [18]> Перебрал все возможные варианты.
не ври. правильного, всегда советуемого варианта (здесь с первого поста) с параметрами ты не пробовал (т.е. уже не все).
> чем вычеслить требуемый формат???
он не нужен. но вообще, если задаться целью писать дату строкой в запросе то хелпом по движку вычисли...
← →
Rubin (2008-03-13 22:39) [19]
> sniknik ©
если описывать то, что я попробовал по этой теме за последние 4 дня, то тут будет книга. Модераторам это не понравится.
← →
Simpson (2008-03-13 23:01) [20]ADOQuery1.Close;
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.add("SELECT * FROM A_JUR_PRIH_NAK_ "+
" WHERE Data between :data1 and :data2 "+
"ORDER BY label asc");
ADOQuery1.Parameters.ParamByName(":data1").Value := Now;
ADOQuery1.Parameters.ParamByName(":data2").Value := Now;
ADOQuery1.Open;
← →
Rubin (2008-03-13 23:37) [21]
> ADOQuery1.Parameters.ParamByName(":data1").Value := Now;
> ADOQuery1.Parameters.ParamByName(":data2").Value := Now;
Ругается: Parameter ":data1" not found ???????????
← →
Ega23 © (2008-03-13 23:39) [22]
> ADOQuery1.SQL.Clear;
> ADOQuery1.SQL.add("
Заменить на ADOQuery1.SQL.Text := "...."
> DOQuery1.Parameters.ParamByName(":data1").Value := Now;
> ADOQuery1.Parameters.ParamByName(":data2").Value := Now;
А прикинь, у тебя ParamCheck=false?
← →
Ega23 © (2008-03-13 23:39) [23]
> Ругается: Parameter ":data1" not found ??????????
Вот-вот.
← →
Simpson (2008-03-13 23:46) [24]Rubin (13.03.08 23:37) [21]
Я по памяти писал, ты попробуй нажми F1 и погугли немного...
← →
Rubin (2008-03-13 23:59) [25]Я так понял, что нужно создать этот параметр:
DOQuery1.Parameters.CreateParameter(,,,":data1",,,);
CreateParameter(const Name: WideString; DataType: TDataType; Direction: TParameterDirection; Size: Integer; Value: OleVariant): TParameter;
только застрял на этом ^^^^^^
> Ega23 ©
Как быть в этой ситуации???
← →
Simpson (2008-03-14 00:07) [26]ADOQuery1.Parameters.ParamByName("data1").Value := Now;
ADOQuery1.Parameters.ParamByName("data2").Value := Now;
← →
Rubin (2008-03-14 00:29) [27]ADOQuery1.Parameters.ParamByName("data1").Value := strtodate("05.02.2008");
ADOQuery1.Parameters.ParamByName("data2").Value := strtodate("08.02.2008");
Вот так работает в идеале, только чтобы выловить число 06 и 07 нужно задовать 05 и 08
В благодарность сброшу исходники на программу которую пишу, мож пригодится кому...
Программа по работе со складом для частного предпринемателя, приход, расход, корзины клиента, списки клиентов журналы и прочее, всё работает, осталось дописать выборку по датам и распечатку журналов. остальное вылизанно и исправленны всевозможные ошибки.
Есть перспектива для работы со сканером штрих кодов, но не писал ещё.
заявки на KvORubin@mail.ru
1,64 МБ (1 728 512 байт)
← →
Германн © (2008-03-14 01:06) [28]
> Ega23 © (13.03.08 23:39) [22]
> Ega23 © (13.03.08 23:39) [23]
Я не считаю себя знатоком английского, но и не считаю себя незнающим оного. Но справку по ParamCheck так и не смог понять.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.04.06;
Скачать: [xml.tar.bz2];
Память: 0.51 MB
Время: 0.007 c