powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Informix [игнор отключен] [закрыт для гостей] / Тип значения параметра ХП
16 сообщений из 16, страница 1 из 1
Тип значения параметра ХП
    #36513457
Юрий Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите пожалуйста, если сталкивались с проблемой.
Используется Informix 10 и CBuilder 6 + dbExpress в качестве клиента.
Есть ХП, у которой есть входные параметры с типом Money.
В описании компонента SQLStoredProc свойство DataType этих параметров трактуется как ftBCD.
Не могу правильно подобрать тип конкретных значений для таких параметров.
Приложение выводит ошибку "BCD overflow". Например:

присваиваем параметру значение
Код: plaintext
1.
SQLStoredProc1->ParamByName("PPARAM1")->AsCurrency=StrToCurr("20,0300");
затем вызываем ХП (процедура добавляет записи в таблицу)
Код: plaintext
1.
SQLStoredProc1->ExecProc();
и получаем ошибку "BCD overflow". Как сделать правильно?
...
Рейтинг: 0 / 0
Тип значения параметра ХП
    #36513911
Юрий Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Подскажите хотя бы можно ли проконтролировать значение параметра в момент вызова ХП непосредственно в Informix и как это сделать.
...
Рейтинг: 0 / 0
Тип значения параметра ХП
    #36513945
Ikir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юрий Р.,

А если задать целое число, то есть ошибка?
...
Рейтинг: 0 / 0
Тип значения параметра ХП
    #36514144
Юрий Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ikir,

С параметрами целого и строкового типа проблем нет.
...
Рейтинг: 0 / 0
Тип значения параметра ХП
    #36514163
Ikir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юрий Р.
С параметрами целого и строкового типа проблем нет.

Скорей всего опять пресловутая проблема с разделителем дробной части: точка или запятая.
...
Рейтинг: 0 / 0
Тип значения параметра ХП
    #36514266
Фотография TmpFile()
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поменять тип параметра в ручную на ftFloat или ftCurrency
...
Рейтинг: 0 / 0
Тип значения параметра ХП
    #36514311
Юрий Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
TmpFile(),

На ftCurrency менял - без изменений, поэтому на ftFloat думаю нет смысла.
...
Рейтинг: 0 / 0
Тип значения параметра ХП
    #36514733
Фотография Daugava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ikir
Скорей всего опять пресловутая проблема с разделителем дробной части: точка или запятая.
+1
в особенности если так отработает
Код: plaintext
1.
2.
SQLStoredProc1->ParamByName("PPARAM1")->AsCurrency=StrToCurr("20.0300");

...
Рейтинг: 0 / 0
Тип значения параметра ХП
    #36516065
Юрий Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Daugava,

Нет, проблема не в разделителе. Если использовать точку, получаем ошибку.
...
Рейтинг: 0 / 0
Тип значения параметра ХП
    #36516921
В.К.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что за драйвер dbExpress используется? Может, это его баг драйвера... А если этот, http://sourceforge.net/projects/open-dbexpress/, попробовать?
...
Рейтинг: 0 / 0
Тип значения параметра ХП
    #36517134
Юрий Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В.К.А что за драйвер dbExpress используется? Может, это его баг драйвера... А если этот, http://sourceforge.net/projects/open-dbexpress/, попробовать?

Я понял, что этот драйвер только для ODBC, а я пытаюсь использовать для Informix. Через ODBC я пробовал ADO, но уж больно долго запрос идет.
...
Рейтинг: 0 / 0
Тип значения параметра ХП
    #36517749
bk0010
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я понял, что этот драйвер только для ODBC, а я пытаюсь использовать для Informix.
Более-менее рабочим dbexpress для Informix стал в Delphi 2010 ( http://www.sql.ru/forum/actualthread.aspx?tid=707999#7864909 ). Перейдите на нее. В качестве альтенативы можете попробовать скачать и собрать dbexpress от Luxena, он недавно стал Open source ( http://www.sql.ru/forum/actualthread.aspx?tid=738143 ).
Через ODBC я пробовал ADO, но уж больно долго запрос идет.
Это скорее всего проблема ADO, а не ODBC. Попробуйте работать с ODBC через AnyDAC - резльтат может вас приятно удивить.
...
Рейтинг: 0 / 0
Тип значения параметра ХП
    #36518053
Фотография TmpFile()
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Исключение EConvertError вызывает StrToCurr
hlp Delphi
The DecimalSeparator global variable defines the character that is used as a decimal point. Thousand separators and currency symbols are not allowed in the string. If the string doesn't contain a valid value, StrToCurr raises an EConvertError exception.


В Делфи, не думаю, что билдер чем-то отличается.
hlp Delphi
var CurrencyString: string;
var CurrencyFormat: Byte;
var NegCurrFormat: Byte;
var ThousandSeparator: Char;
var DecimalSeparator: Char;
var CurrencyDecimals: Byte;
var DateSeparator: Char;
var ShortDateFormat: string;
var LongDateFormat: string;
var TimeSeparator: Char;
var TimeAMString: string;
var TimePMString: string;
var ShortTimeFormat: string;
var LongTimeFormat: string;
var ShortMonthNames: array[1..12] of string;
var LongMonthNames: array[1..12] of string;
var ShortDayNames: array[1..7] of string;
var LongDayNames: array[1..7] of string;
var SysLocale: TSysLocale;
var EraNames: array[1..7] of string;
var EraYearOffsets: array[1..7] of Integer;
var TwoDigitYearCenturyWindow: Word = 50;
var TListSeparator: Char;


Разделе инициализации модуля
Код: plaintext
1.
2.
3.
Initialization
  ShortDateFormat := 'dd.mm.yyyy';
  Decimalseparator := '.' ;
...
Рейтинг: 0 / 0
Тип значения параметра ХП
    #36518057
Фотография TmpFile()
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
1.
2.
3.
SQLStoredProc1->ParamByName("PPARAM1")->AsFloat =  20 . 0300 ; 
SQLStoredProc1->ParamByName("PPARAM1")->AsString = "20.0300"; 
SQLStoredProc1->ParamByName("PPARAM1")->AsString = "20,0300"; 
какую ошибку так выдаст?
И кто собственно выдавал ошибку "BCD overflow"?
посмотреть лог (смотреть на TSQLMonitor), того что передается на сервер, и какие значения привязываются к параметрам процедуры.
...
Рейтинг: 0 / 0
Тип значения параметра ХП
    #36518610
В.К.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юрий Р.В.К.А что за драйвер dbExpress используется? Может, это его баг драйвера... А если этот, http://sourceforge.net/projects/open-dbexpress/, попробовать?

Я понял, что этот драйвер только для ODBC, а я пытаюсь использовать для Informix. Через ODBC я пробовал ADO, но уж больно долго запрос идет.

Вопрос пока не в скорости. Если другой драйвер при тех же данных, настройках среды Informix и том же приложении не вернет ошибки - проблема, вероятно, в используемом сейчас драйвере :)
...
Рейтинг: 0 / 0
Тип значения параметра ХП
    #36528990
Юрий Р.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Решил проблему через компонент SQLQuery. Т.е.:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
{
  AnsiString SQLText;
  ...

  SQLText = "execute procedure insert_record(pparam1=1, ... , pparamN=M);";
  SQLQuery1->SQL->Add(SQLText);
  SQLQuery1->ExecSQL();
  SQLQuery1->SQL->Clear();
  ...
}
Понимаю, что не совсем "красиво" решил, но другим способом не получилось.
Всем спасибо.
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Informix [игнор отключен] [закрыт для гостей] / Тип значения параметра ХП
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]