Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

string conversion error [D7, IB6.x, Yaffil,FB]


Maxim_____ ©   (2004-09-29 11:01:00) 

пишу:
select * from zakazes where (DATASDACHI >= '01.10.2004') and (DATASDACHI <= '31.10.2004')

-всё ок

пишу:
select * from zakazes where (DATASDACHI >= '01.09.2004') and (DATASDACHI <= '31.09.2004')

получаю string conversion error

(и в дельфи м в ibexpert - один результат)


kaif   (2004-10-01 13:15:00) [1]

Дату следует передавать параметром, чтобы не зависеть от региональных настроек даты. Это правильный путь. Но есть и простой способ, если хочется дату указать явно в тексте запроса:
 select * from zakazes where (DATASDACHI >= '2004-09-01') and (DATASDACHI <= '2004-09-31').
 Однако сдается мне, что такой даты, как 31 сентября не бывает. Поэтому это работать не будет ни при каком подходе. Предлагаю гораздо более простое решение (если в лом разбираться с тем, какие даты бывают, а какие - нет)
 select * from zakazes where (DATASDACHI >= '2004-09-01') and (DATASDACHI < '2004-10-01')
 То есть брать в качестве правой даты не конец месяца, а начало следующего, а вместо "меньше или равно" использовать условие "меньше".


Maxim_____   (2004-10-01 05:30:00) [2]

Romkin ©   (29.09.04 12:50) [12]
там очень много всего, куда именно предлагаете заглянуть?
.....
код неправильный и вообще позорный, забудьте про него


Romkin   (2004-09-29 12:50:00) [3]

А в каталог Demos не судьба глянуть?


Maxim_____   (2004-09-29 11:55:00) [4]

Спасибо всем!
Пойду искать по сети
что-нибудь про параметры,
в какие компоненты их сувать,
и т.п.


Maxim_____   (2004-09-29 11:51:00) [5]

слышал краем уха, что это пишется как-то так:  
=:
но что мне толку от них?
объясните пожалуйста.


stud   (2004-09-29 11:49:00) [6]

а последнее число - daysinmonth - unit datautils
и лучше всетаки как тебе говорят использовать параметры:
DATASDACHI between :d1 and :d2


Maxim_____   (2004-09-29 11:48:00) [7]

dsOrders.SelectSQL.text :='select * from zakazes where (datasdachi >=' +QuotedStr('01.'+ tv.Items[i].Text)
+') and (datasdachi <= '+quotedstr('31.' + tv.Items[i].Text)+')';

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


Vlad   (2004-09-29 11:47:00) [8]


> Maxim_____   (29.09.04 11:39) [6]

Еще раз - ты про параметры в SQL запросах слышал?
ну на худой конец пиши не так:
(DATASDACHI <= '+QuotedStr('31.'+'09.2004')+.....
а так:
(DATASDACHI < '+QuotedStr('01.'+'10.2004')+.....

уж первое-то число у любого месяца существует


Maxim_____   (2004-09-29 11:39:00) [9]

я пишу treeView:
mainDb.Open;
   dsOrders.Active := true;
   str := tstringlist.Create;
   dsOrders.First;
   str.Sorted := true;
   str.Duplicates := dupIgnore;

   while not dsOrders.Eof do begin
       DateTimeToString(s, 'mm.yyyy', dsOrdersDATASDACHI.Value);
       was := str.Count;
       str.Add(s);
       if str.Count - was = 1 then begin
           currentMY := tv.Items.Add(tv.TopItem, str.strings[str.count - 1]);
           currentMY.ImageIndex := 0;
       end;
       dsOrders.Next;
   end;

   for i := 0 to tv.Items.Count do begin

       if tv.Items[i].Level = 0 then
       begin
           dsOrders.Close;

        MonthYear:=tv.Items[i].Text;
        dsOrders.SelectSQL.text :=' select * from zakazes where (DATASDACHI >= '+QuotedStr('01.'+MonthYear)+') and (DATASDACHI <= '+QuotedStr('31.'+'09.2004')+')';

           dsOrders.open;
           dsOrders.First;
           while not dsOrders.Eof do begin
               DateTimeToString(s, 'dd', dsOrdersDATASDACHI.Value);
               tv.Items.AddChild(tv.Items[i], s);
               dsOrders.Next;
           end;
       end;
   end;

может всё это бред
и есть более простой способ,
с помощью sql сделать всё это?


Romkin   (2004-09-29 11:36:00) [10]

А последний день месяца получить легко: взять первый день следующего и вычесть один день. Всегда и везде проходит :))


Romkin   (2004-09-29 11:35:00) [11]

А ты параметры используй. params видел?


Maxim_____   (2004-09-29 11:33:00) [12]

ок, т.е для каждого месяца мне надо писать отдельную процедуру?
какое ему дело сколько где дней?

как ещё можно получить все дни месяца?


Romkin   (2004-09-29 11:03:00) [13]

И что? Посылают тебя. Ты бы еще 31 февраля заказал...


Наталия   (2004-09-29 11:02:00) [14]

Потому что нет такого числа 31.09.2004


Наверх

Титульная страница Поиск, карта сайта Написать письмо