powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Оччень интересный глюк (ASA, SaVCL, Delphi, кривые руки? :)
4 сообщений из 4, страница 1 из 1
Оччень интересный глюк (ASA, SaVCL, Delphi, кривые руки? :)
    #33426481
Jager
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Исходные данные:
- Sybase ASA v9.0.2.3207;
- Delphi 7;
- SaVCL v2.12 от 17.12.2004.

Выполняется запрос
Код: plaintext
1.
2.
SELECT dCA.RecordID AS dCA_RecordID, dCA.AttemptTime AS dCA_AttemptTime
from data_ContestAttempt dCA
JOIN data_ContestTaskStatistic dCTS ON dCA.TaskStatisticID = dCTS.RecordID
Я знаю, что JOIN в данном случае не нужен, он важен для дальнейшего происходящего.

Если этот запрос выполняется из ISQL, то запрос, как и должен, возвращает одну строчку. Если же этот запрос выполняется через SaVCL, то начинаются "чудеса в Решетове"... Сначала я подумал, что не возвращается ни одна строка - по крайней мере выглядело это именно так. Удалил JOIN - вернулась одна строка. Снова добавил JOIN - ничего нет. После долгих ковыряний выяснилось, что SaVCL таки вобзвращает результат (одна строка), но вот функция GetRecordCount работает ... неверно. Она возвращает результат "-1"! Попробовал добавить еще одну строчку в базу, стало выбираться 2 строки, результат функции = "-2"!!! А в други случаях функция возвращает "правильное" количество строк, без отрицательного знака. На данный момент решил эту проблему исправлением функции GetRecordCount - добавил функцию модуля - но хотелось бы разобраться, что к чему и откуда ноги растут :)
...
Рейтинг: 0 / 0
Оччень интересный глюк (ASA, SaVCL, Delphi, кривые руки? :)
    #33426523
Jager
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еще одна "странность" SaVCL (хотя, возможно, это не баг, а фича).

Сервер установлен на одной машине, попытки подключения идут с другой. На клиентской машине из протоколов - только Tcp/ip. В параметрах подключения устанавливаем:
Код: plaintext
ConnectParams.Links := [slTcpIP, slAll];

При попытке запуска из среды Delphi при попытке задать SaDb.Active := True получаем External Exception. Если ЭТОТ ЖЕ скомпилированный EXE запустить ВНЕ среды, то он прекрасно работает. Убирание slAll из Links либо добавление протокола NetBEUI решает проблемы, однако хотелось бы выяснить, так и задумывалось либо в поведении компонент есть что-то непредвиденное?
...
Рейтинг: 0 / 0
Оччень интересный глюк (ASA, SaVCL, Delphi, кривые руки? :)
    #33427413
По поводу RecordCount смотрим справку по SaVcl (savcl_ru.hlp), раздел TSaDs,RecordCount. А откуда ноги растут см. справку по sybase: Adaptive Server Anywhere Programming Guide, 6. Embedded SQL Programming, The SQL Communication Area (SQLCA), SQLCA fields, поле sqlerrd[2] (SQLCOUNT).

По второму вопросу: SaVcl по параметру ConnectParams.Links формирует строку с параметрами коннекта в части используемых протоколов. Далее строка просто передается в библиотеку sybase, где и возникает ошибка. Почему - вопрос. Если есть возможность, то проверьте систематичность ошибки на разных версиях sybase.

С уважением, Сергей Гарилов.
...
Рейтинг: 0 / 0
Оччень интересный глюк (ASA, SaVCL, Delphi, кривые руки? :)
    #33427901
Jager
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
По первому вопросу: как обычно, RTFM. Спасибо за ссылку :)

По второму вопросу: к сожалению, проверить систематичность ошибки на разных версих не могу - везде стоит 9-ка, последний билд. :(
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Оччень интересный глюк (ASA, SaVCL, Delphi, кривые руки? :)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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