Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.10.31;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.035 c
1-1097824953
Dionnis
2004-10-15 11:22
2004.10.31
Закрыть все формы приложения


1-1097598954
Чувак
2004-10-12 20:35
2004.10.31
Защита информации.


1-1097788614
Zahar
2004-10-15 01:16
2004.10.31
Как текст из Memo "запихать" в array [0..2000] of Char


14-1097317987
Kerk
2004-10-09 14:33
2004.10.31
Аптека


14-1097237652
Ищу
2004-10-08 16:14
2004.10.31
Сумма прописью в excel





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