powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Разные результаты запроса на разных машинах
6 сообщений из 6, страница 1 из 1
Разные результаты запроса на разных машинах
    #35448390
kobasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Привет!

Моя программулина, используя jdbc-odbc мост, делает выборку из .dbf файлов (база 1с) с помощью драйвера foxpro. до вчерашнего дня всё работало нормально. после небольших доработок, на домашнем компе (с локальной копией базы) всё по-прежнему работает, а на рабочей машине - как-то странно: один запрос отрабатывает, а второй возвращает пустой ResultSet, как будто в таблице ничего нет. смущает именно то, что дома всё хорошо работает, select возвращает правильные результаты, а та же версия проги на рабочей работает криво. причем, теперь и бэкап программы, старая версия, которая нормально работала, так же возвращает пустой результат.
Пробовал оттрейсить драйвер через "Источники данных ODBC", но, почему-то, лог файл не создаётся.
Была мысль, что имеется какое-то ограничение на длину строки запроса, но ведь на одной машине это всё работает, да и страрая версия (запрос был на четыре столбца короче) теперь не работает.
Подскажите, пожалуйста, куда вообще нужно смотреть и как можно с этим разобраться? А то вообще уже никаких мыслей не осталось.

На всякий случай, приведу куски кода:
URL драйвера:
Код: plaintext
dbURL=jdbc:odbc:Driver={Microsoft Visual FoxPro Driver};SourceType=DBF;SourceDB=d:\public\base\xxx\1SBDB;Collate=Machine

Запрос, который работает:
Код: plaintext
SELECT ID, SP57797 FROM SC208 WHERE SP56504 = "XXX-XXX-XXX"

Запрос, который не работает (но работает дома) :
43 taxiserver.DbHandler getOrders
Код: plaintext
SELECT o.IDDOC, VAL(j.DOCNO), c.DESCR, j.DATE, o.SP54268, o.SP54322, o.SP54256, o.SP57304, o.SP54257, o.SP57305, o.SP54269, o.SP54255, o.SP54329 FROM DH54251 o, 1SJOURN j, SC133 c WHERE ALLTRIM(o.SP54262) = '2S' AND ALLTRIM(j.IDDOC) = ALLTRIM(o.IDDOC) AND ALLTRIM(c.ID) = ALLTRIM(o.SP54254) ORDER BY j.DATE DESC, o.SP54268 DESC, j.DOCNO DESC
...
Рейтинг: 0 / 0
Разные результаты запроса на разных машинах
    #35448557
Фотография Hel!Riser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
при машинном коллейте нижний и верхний регистры неравны. Попробуй в связках поставить UPPER(ALLTIM(...)) Если пройдет, то дома просто русский коллейт выставлен
...
Рейтинг: 0 / 0
Разные результаты запроса на разных машинах
    #35448622
kobasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так ведь стоит же "Collate=Machine", или этого не достаточно?
...
Рейтинг: 0 / 0
Разные результаты запроса на разных машинах
    #35448683
PaulWist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Значит изменились данные, возможно была переиндексация с русским коллейтом, естественно Rushmore по индексному файлу стал неправильным.
...
Рейтинг: 0 / 0
Разные результаты запроса на разных машинах
    #35449307
kobasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Хорошо, тогда сегодня вечером проверю и отпишусь, как что.
Спасибо!
...
Рейтинг: 0 / 0
Разные результаты запроса на разных машинах
    #35454275
kobasad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Еху!!! Проблема разрешилась!
Если кому интересно, то вот причина:
В 1с строки неограниченой длины хранятся в отдельной таблице. Если же длина ограничена, то эти строки хранятся в таблице документа, которому они принадлежат. Чтобы упростить доступ к ним, я в локальной копии базы ограничил длину этих строк до 200 символов. А на рабочей машине длину поменяли на 300 символов. Из-за этого и возникло разное поведение программы на домашней и рабочей машины: для драйвера foxpro ограничение на длину строки (char) - 255 символов. Для 1с, видимо, этого ограничения нет, или оно больше, чем 255. Странно, что драйвер не выдавал ни эксепшенов, ни предупреждений, а тупо выдавал пустой результат, не смотря на то, что в select'е были и другие данные.
Кстати, не знает ли кто-нибудь, каким образом организован доступ к базе в 1с? Видимо, драйвер 1с - это не полный эквивалент. Или просто есть какие-то нюансы?
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Разные результаты запроса на разных машинах
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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