powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / DataWindow.NET
7 сообщений из 7, страница 1 из 1
DataWindow.NET
    #39049466
Фотография Ikar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Коллеги, приветствую!

Образовался тут вопросец. Есть приложение, созданное на C# + DW.NET v 1.5.1 Build 9004, база - MS SQL 2005.
Логика реализована на процедурах/функциях в БД.

Проблема обнаружилась в том, что при расчетах в очень многих местах используется float. И вот, "поймали" место, в котором этот самый float сыграл злую шутку - выдает ошибку деления на ноль. Но выдает ее только если запрос выполняется из DW в приложении или из дезайнера. При выполнении того же запроса через студию - все отлично! :(

Сам запрос делается из функции, если что:
Код: sql
1.
2.
SELECT col_1, col_2, ... col_n
FROM user_function (param_1, param_2, ... param_m)


Функция возвращает таблицу.

Коннект осуществляется вот так:
Код: c#
1.
2.
3.
System.Data.OleDb.OleDbConnection oleDbConn = new System.Data.OleDb.OleDbConnection();
                    oleDbConn.ConnectionString = "Data Source=" + lsServer + ";Provider=SQLOLEDB;Initial Catalog=" + lsDatabase + ";User ID=" + ls_login + ";Password=" + ls_pass + ";";
                    oleDbConn.Open();



В дизайнере профайл настроен вот так:
Код: c#
1.
2.
3.
4.
5.
6.
SQLCA.Dbms = Sybase.DataWindow.DbmsType.OleDb;
SQLCA.Password = <**********>;
SQLCA.UserID = <**********>;
SQLCA.Lock = "RC";
SQLCA.AutoCommit = false;
SQLCA.DbParameter = "PROVIDER='SQLOLEDB',DATASOURCE='SERVER',PROVIDERSTRING='Database=DATABASE'";



Собственно, решение понятно - избавляться от float. Но это достаточно долго, а ошибку надо пофиксить быстро. Хоть "костылем", но быстро. А потом уже и по уму переделывать можно.

Собственно, в том и вопрос: что можно сделать? Может, какие настройки коннекта применить, какой-нибудь параметр в каком DW.NET'ном ini-шнике поправить, еще какие танцы с бубном предпринять?

------------
С уважением, IKAR

IkarHomeCenter ........ Детский Дворик ........ ГавГав.Инфо
.................................. Винтовка.ру ..................................
Портал русскоязычной группы пользователей Sybase
...
Рейтинг: 0 / 0
DataWindow.NET
    #39049499
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще конечно нехорошо так делать, но в принципе в функцию попробовать написать
SET ARITHABORT OFF и SET ANSI_WARNINGS OFF.
Хотя этот путь ведет в никуда:)
...
Рейтинг: 0 / 0
DataWindow.NET
    #39050278
Фотография Raven A
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ikar,
ради эксперимента, попробуйте ODBC. Есть некоторые косвенные соображения.
...
Рейтинг: 0 / 0
DataWindow.NET
    #39050574
Фотография Ikar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблема продолжает "баловать шаманизмом" - сегодня она не воспроизводится. Будем ждать - то ли воспроизведется и снова искать, как выкрутиться, то ли спокойно успеем исправить причину и забудем об этом.

spas2001Вообще конечно нехорошо так делать, но в принципе в функцию попробовать написать
SET ARITHABORT OFF и SET ANSI_WARNINGS OFF.
Хотя этот путь ведет в никуда:)

Влад, привет!
Ну, во первых, внутри функций SET'ы нельзя делать, так что, только если для всей базы отключать. А это, да, действительно путь в никуда... :(
Хотя, если ничего другого придумать не удастся, то, на время исправлений, наверное, придется...

Raven AIkar,
ради эксперимента, попробуйте ODBC. Есть некоторые косвенные соображения.
А можно подробнее о соображениях?
Пока пробовать бессмысленно, как я писал выше, воспроизводиться ошибка перестала, но если (тьфу-тьфу-тьфу) снова проявится, попробую, из дизайнера DW.

Влад, Raven, спасибо за ответы!
...
Рейтинг: 0 / 0
DataWindow.NET
    #39050936
Фотография Raven A
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Hi, Ikar

Это не совет, а именно предложение попробовать другой драйвер // потёртый бубен, а вдруг :)
Просто несколько раз была ситуация, когда, в зависимости от драйвера (MSS, OLE DB, ODBC) или среды( PB or VS), запрос возвращал разный recordset.
Это не Ваш случай, но возникла цепочка ассоциаций: база - запрос - среда выполнения - баг ... бубен.
...
Рейтинг: 0 / 0
DataWindow.NET
    #39050979
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще, я думаю везде где деление пока case с -1 написать, чтобы сразу было видно где делится на 0
А среда где дизайнер открывался одинаковая?
...
Рейтинг: 0 / 0
DataWindow.NET
    #39058895
VanoR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
заменить в запросах select value1 / value2
на
select value1 / (case isnull(value2 , 0) when 0 then null else value2 end)

у меня так на float-ах... и особо даже тормозов не наблюдается.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / DataWindow.NET
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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