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

Вниз

string conversion error   Найти похожие ветки 

 
Maxim_____   (2004-09-29 11:01) [0]

пишу:
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 - один результат)


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

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


 
Romkin ©   (2004-09-29 11:03) [2]

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


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

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

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


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

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


 
Romkin ©   (2004-09-29 11:36) [5]

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


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

я пишу 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 сделать всё это?


 
Vlad ©   (2004-09-29 11:47) [7]


> Maxim_____   (29.09.04 11:39) [6]

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

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


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

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

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


 
stud ©   (2004-09-29 11:49) [9]

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


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

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


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

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


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

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


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

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


 
kaif ©   (2004-10-01 13:15) [14]

Дату следует передавать параметром, чтобы не зависеть от региональных настроек даты. Это правильный путь. Но есть и простой способ, если хочется дату указать явно в тексте запроса:
 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")
 То есть брать в качестве правой даты не конец месяца, а начало следующего, а вместо "меньше или равно" использовать условие "меньше".



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

Форум: "Базы";
Текущий архив: 2004.10.31;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.031 c
14-1096930070
NiceManiac
2004-10-05 02:47
2004.10.31
Ламоразмы и обшибки.


3-1096644359
SH
2004-10-01 19:25
2004.10.31
Лимит на количество подключений к одному серверу


1-1097669725
bober
2004-10-13 16:15
2004.10.31
объявление функции


14-1097557906
RavenD
2004-10-12 09:11
2004.10.31
кто юзал TdxDBTreeList ?


1-1098072922
md5 hash
2004-10-18 08:15
2004.10.31
Объекты в StringGrid





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