![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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