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