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

Помогите кто может. Есть две таблицы, делаю связь между ними при помощи WHERE


{SELECT y.kpr as Код_предприятия, y.mes as Дата_оплаты,;
y.npp as N_платежного_документа, y.summa as Сумма_по_платежному_документу,;
f_com.nzs as N_заявления, f_com.dzs as Дата_заявления, f_com.ss as Сумма_без_НДС,;
f_com.pen as НДС, f_com.p23 as Налог_с_продаж, '111/2' as Счет_оплаты,;
f_com.ss+ f_com.pen+ f_com.p23 as Сумма_по_заявлению;
FROM f_com, bank y;
WHERE (((SUBSTR(ALLTRIM(y.n_chet),1,3)="155" AND y.dohod=.T. AND f_com.prz=(.T.));
AND (yearMonth(f_com.dww)=lnDataOrdera AND f_com.nzs = y.nd1);
AND YearMonth(y.mes)<lnDataOrdera);
AND (f_com.kpr=y.kpr AND f_com.ss+ f_com.pen+ f_com.p23=y.summa);
AND (f_com.kpr>=cNumber(lnKN,5) AND f_com.kpr<=cNumber(lnKK,5)));
ORDER BY f_com.dzs INTO CURSOR cDohodBankOplataProshl}

что сделать, подскажите пожалуйста?
за ранее благодарю
...
Рейтинг: 0 / 0
Результат выборки на разных машинах разный
    #32399258
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вопрос-то в чем? Как оптимизировать такой корявый запрос или почему разные результаты?

Причины разных выборок на разных машинах могут быть:

1) Если используются разные базы данных

-) Сами данные разные
-) Поврежден индекс. Дай REINDEX на обоих машинах

2) Не имеет значения общая база или раздельная. Разные настройки среды окружения у разных клиентов

-) SET DELETED
-) SET ANSI

Ну и для более полного ответа неплохо бы знать, что делают функции YearMonth() и cNumber()
...
Рейтинг: 0 / 0
Результат выборки на разных машинах разный
    #32399274
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сразу углядел where SUBSTR(ALLTRIM(y.n_chet),1,3)="155"

При разных настройках SET ANSI и SET EXACT может быть "15"="155" и "15"<>"155"
...
Рейтинг: 0 / 0
Результат выборки на разных машинах разный
    #32399433
Василий Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Попробовал set ansi, SET EXACT, переиндексацию, строку substr вообще убрал, данные выбираются из сетевых таблиц, так-что они одни и ничего не помогло.

Вообщем если я запускаю этот select из по VFP8.0 SP1 win 2000 sp4 то все работает нормально и выбирает то что нужно, а вот если я его строю (BUILD) и запускаю (на своей же машине) созданный EXE файл, то результат выборки содержит меньше записей.

Ну подскажите еще.
...
Рейтинг: 0 / 0
Результат выборки на разных машинах разный
    #32399498
Por
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Por
Гость
SET DATE глянь на всякий случай.
...
Рейтинг: 0 / 0
Результат выборки на разных машинах разный
    #32400336
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Файл CONFIG.FPW (обычный текстовый файл) со строкой

CODEPAGE=1251

Положи его рядом с EXE
...
Рейтинг: 0 / 0
Результат выборки на разных машинах разный
    #32401341
Василий Л
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ура, добился. Оказывается сумма полей f_com.ss+ f_com.pen+ f_com.p23 и сумма y.summa при компиляции приложения по разному воспринимается. Проблему решил заменой на строку val(str(f_com.ss+ f_com.pen+ f_com.p23,15,2)=val(str(y.summa15,2))

Большое спасибо за советы. (Может кто может по-другому)
...
Рейтинг: 0 / 0
Результат выборки на разных машинах разный
    #32402857
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что значит "по разному считают"? Разные суммы получаются? С какой стати?

Ответь на следующие вопросы:

1) Какого типа поля: f_com.ss,f_com.pen,f_com.p23,y.summa - Numeric или Currency?

2) Допустимы ли в них значение NULL. И если "Да", то нет ли таких значений?

3) Какая текущая настройка SET COLLATE на момент выполнения запроса? Проверить можно по SET("COLLATE")

4) Существует ли файл конфигурации CONFIG.FPW со строкой CODEPAGE=1251? И виден ли он из EXE? По SYS(2019) можно проверить какой именно файл конфигурации используется.

5) Используются действительно одни и те же таблицы или все-таки разные. Проверить можно по DBF("bank")
...
Рейтинг: 0 / 0
Результат выборки на разных машинах разный
    #32403501
golsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все правильно - при вычислениях тип Numeric приводится к "машинному" double, поэтому сравнения типа f1+f2+f3 = f4 в общем случае не правомерно.
используй f1+f2+f3-f4 меньше 0.000001 по модулю (в твоем случае меньше копейки 0.01
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Результат выборки на разных машинах разный
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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