Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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("&#205;&#224; &#253;&#242;&#243; &#237;&#229;&#228;&#229;&#235;&#254; &#237;&#232; &#234;&#224;&#234;&#232;&#245; &#228;&#229;&#235; &#237;&#229; &#231;&#224;&#239;&#235;&#224;&#237;&#232;&#240;&#238;&#226;&#224;&#237;&#238;." );
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
2-1205315387
Ega23
2008-03-12 12:49
2008.04.06
Нахождение первого символа из множества в строке


9-1168517407
akaValerius
2007-01-11 15:10
2008.04.06
Посмотреть на верх.


2-1205258821
HITMAN
2008-03-11 21:07
2008.04.06
Как зделать выборку по дате???


2-1205404397
Ivan
2008-03-13 13:33
2008.04.06
Explorer+SendMessage


2-1205171900
k@te4ka
2008-03-10 20:58
2008.04.06
Общение между формами





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