Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Результат выборки на разных машинах разный
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! Помогите кто может. Есть две таблицы, делаю связь между ними при помощи 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} что сделать, подскажите пожалуйста? за ранее благодарю ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2004, 13:06 |
|
||
|
Результат выборки на разных машинах разный
|
|||
|---|---|---|---|
|
#18+
А вопрос-то в чем? Как оптимизировать такой корявый запрос или почему разные результаты? Причины разных выборок на разных машинах могут быть: 1) Если используются разные базы данных -) Сами данные разные -) Поврежден индекс. Дай REINDEX на обоих машинах 2) Не имеет значения общая база или раздельная. Разные настройки среды окружения у разных клиентов -) SET DELETED -) SET ANSI Ну и для более полного ответа неплохо бы знать, что делают функции YearMonth() и cNumber() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2004, 13:21 |
|
||
|
Результат выборки на разных машинах разный
|
|||
|---|---|---|---|
|
#18+
Сразу углядел where SUBSTR(ALLTRIM(y.n_chet),1,3)="155" При разных настройках SET ANSI и SET EXACT может быть "15"="155" и "15"<>"155" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2004, 13:27 |
|
||
|
Результат выборки на разных машинах разный
|
|||
|---|---|---|---|
|
#18+
Попробовал set ansi, SET EXACT, переиндексацию, строку substr вообще убрал, данные выбираются из сетевых таблиц, так-что они одни и ничего не помогло. Вообщем если я запускаю этот select из по VFP8.0 SP1 win 2000 sp4 то все работает нормально и выбирает то что нужно, а вот если я его строю (BUILD) и запускаю (на своей же машине) созданный EXE файл, то результат выборки содержит меньше записей. Ну подскажите еще. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2004, 14:37 |
|
||
|
Результат выборки на разных машинах разный
|
|||
|---|---|---|---|
|
#18+
SET DATE глянь на всякий случай. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.02.2004, 15:02 |
|
||
|
Результат выборки на разных машинах разный
|
|||
|---|---|---|---|
|
#18+
Файл CONFIG.FPW (обычный текстовый файл) со строкой CODEPAGE=1251 Положи его рядом с EXE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2004, 10:17 |
|
||
|
Результат выборки на разных машинах разный
|
|||
|---|---|---|---|
|
#18+
Ура, добился. Оказывается сумма полей 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)) Большое спасибо за советы. (Может кто может по-другому) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.02.2004, 20:00 |
|
||
|
Результат выборки на разных машинах разный
|
|||
|---|---|---|---|
|
#18+
Что значит "по разному считают"? Разные суммы получаются? С какой стати? Ответь на следующие вопросы: 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") ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.02.2004, 14:49 |
|
||
|
Результат выборки на разных машинах разный
|
|||
|---|---|---|---|
|
#18+
Все правильно - при вычислениях тип Numeric приводится к "машинному" double, поэтому сравнения типа f1+f2+f3 = f4 в общем случае не правомерно. используй f1+f2+f3-f4 меньше 0.000001 по модулю (в твоем случае меньше копейки 0.01 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.02.2004, 04:30 |
|
||
|
|

start [/forum/topic.php?fid=41&fpage=396&tid=1597214]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
40ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
| others: | 277ms |
| total: | 409ms |

| 0 / 0 |
