Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Результат выборки на разных машинах разный / 9 сообщений из 9, страница 1 из 1
05.02.2004, 13:06
    #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
05.02.2004, 13:21
    #32399258
ВладимирМ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат выборки на разных машинах разный
А вопрос-то в чем? Как оптимизировать такой корявый запрос или почему разные результаты?

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

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

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

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

-) SET DELETED
-) SET ANSI

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

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

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

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

CODEPAGE=1251

Положи его рядом с EXE
...
Рейтинг: 0 / 0
06.02.2004, 20:00
    #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
09.02.2004, 14:49
    #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
10.02.2004, 04:30
    #32403501
golsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Результат выборки на разных машинах разный
Все правильно - при вычислениях тип Numeric приводится к "машинному" double, поэтому сравнения типа f1+f2+f3 = f4 в общем случае не правомерно.
используй f1+f2+f3-f4 меньше 0.000001 по модулю (в твоем случае меньше копейки 0.01
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Результат выборки на разных машинах разный / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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