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

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

translate error. value out of bounds - не могу забороть. [D6, IB6.x]


yurez ©   (2003-09-01 15:43:00) 

вот такая штука есть
with dmCB.qCommon do begin
SQl.Clear;
SQL.Add("select max(Rec_Num) from Record_List (:DateB, :DateE) where Mark is NULL");
if DCMode = dcmDebit then SQL.Add("and Rec_Sum > 0")
else SQL.Add("and Rec_Sum < 0");
Params[0].asDate := Settings.Period.DateB;
Params[1].asDate := Settings.Period.DateE;
Close; Open;
end;

ошибка вылетает после OPEN.
ставил watcher на Settings.Period.DateB и Settings.Period.DateА, говорит, что там (не мопню но примерно так) 37446 и 37332.
в запрос передаются 2 даты,исходя из которых берется промежуток, в котором ищется максимальное значение по полю.

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

в жисть не трогал этих дельфей, да жисть заставляет


starik30   (2003-09-01 17:19:00) [1]

может Close надо после Clear, а не перед Open (или это очепатка)?...


yurez   (2003-09-01 16:43:00) [2]

сделал все, как вы говорите
не помогает

рассказываю. звонит бухгалтер . говорит - спасибо что починил. я в шоке. я не перекомпиливал программу. тем более ей не давал обновленный ЕХЕшник.

с мего компутера не запукается
с сервера запускается. (и у меня, и на сервере вин2000 сервер англ)
у бухгалтера вин2000 рус.

копировал себе idapi32.cfg от бухгалтера - не помогло. ещебы, я же ей свой отдавал :)
> Record_List (DateB, DateE) - это хранимая процедура?

да, в базе болтается

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

везде на машинах формат даты одинаковый стоит...


Nikolay M.   (2003-09-01 16:32:00) [3]

4) да, и лучше сделай Close ДО, а Open ПОСЛЕ манипуляций с текстом запроса. А то нелогично как-то получается: правишь запрос, закрываешь его, открываешь...


Nikolay M.   (2003-09-01 16:30:00) [4]

1) SQL.Add("and Rec_Sum > 0") - поставь пробел перед and.
2) тип параметра Params[0].ParamType (так, кажется) попробуй указать, все-таки запрос на лету генеришь.
3) Record_List (DateB, DateE) - это хранимая процедура?


DenK_vrtz   (2003-09-01 16:26:00) [5]

stone ©, согласен с тобой. Хотя я и не спец в IB, станно все это!


yurez   (2003-09-01 16:14:00) [6]


> что эти параметры делают в этом месте?

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


GRAND   (2003-09-01 16:10:00) [7]

>yurez (01.09.03 15:59) [5]

Значит, у тебя дата сервером в нашем национальном виде не хавается... Надо тогда глобальной переменной ShortDateFormat присвоить строку "mm/dd/yy", типа такого. Такой формат даты сервер должен понять.


stone   (2003-09-01 16:07:00) [8]

Что это за конструкция такая?

... from Record_List (:DateB, :DateE) where ...

что эти параметры делают в этом месте?


yurez   (2003-09-01 16:01:00) [9]

это был ответ на
> Params[0].asString := QuotedStr(DateToStr(Settings.Period.DateB));
> Params[1].asString := QuotedStr(DateToStr(Settings.Period.DateE));

а по поводу

> ParamByName("DateB").AsDate := Settings.Period.DateB;
> ParamByName("DateE").AsDate := Settings.Period.DateE;

та же ошибка


yurez   (2003-09-01 15:59:00) [10]

general sql error
conversion error from string """30.09.2003"""


DenK_vrtz   (2003-09-01 15:55:00) [11]

ParamByName("DateB").AsDate := Settings.Period.DateB;
ParamByName("DateE").AsDate := Settings.Period.DateE;


GRAND   (2003-09-01 15:53:00) [12]

Упс, прогнал я...

Params[0].asString := QuotedStr(DateToStr(Settings.Period.DateB));
Params[1].asString := QuotedStr(DateToStr(Settings.Period.DateE));

Вот так должно покатить!


Mike Kouzmine   (2003-09-01 15:51:00) [13]

prepare?


GRAND   (2003-09-01 15:50:00) [14]

А зря не трогал, рулезная это штука, должен сказать! :)
Ладно, это все лирика...

Попробуй вот так написать:

Params[0].asDate := QuotedStr(DateToStr(Settings.Period.DateB));
Params[1].asDate := QuotedStr(DateToStr(Settings.Period.DateE));

А потом скажи, проедет иль нет...


Наверх

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