Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Почему округляются значения полей ?  [new]
megaline
Member

Откуда:
Сообщений: 5
Для копирования полей из одной таблицы в другую,
я использую REPLACE, но конечные значения округляются.
При том формат полей у обоих таблиц совпадает.
Подскажите пожалуйста, как это можно исправить.
Заранее благодарен.
22 ноя 06, 22:34    [3438385]     Ответить | Цитировать Сообщить модератору
 Re: Почему округляются значения полей ?  [new]
Burn
Member

Откуда: Днепропетровск, Украина
Сообщений: 1167
Для начала смотреть какой SET DECIMAL
А ваще информации явно не хватает - какой формат полей?
22 ноя 06, 22:39    [3438400]     Ответить | Цитировать Сообщить модератору
 Re: Почему округляются значения полей ?  [new]
megaline
Member

Откуда:
Сообщений: 5
Burn
Для начала смотреть какой SET DECIMAL
А ваще информации явно не хватает - какой формат полей?


Не формат а тип, ...запарился :-)
Все поля в таблицах Numeric ( 12, 2 )
22 ноя 06, 23:23    [3438464]     Ответить | Цитировать Сообщить модератору
 Re: Почему округляются значения полей ?  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Давай пример кода копирования. При таком формате полей по умолчанию ничего округляться не должно.

На всякий случай, что возвращают настройки

?SET("FIXED")
?SET("DECIMALS")

Как была заполнена исходная таблица? В ней точно данные БЕЗ округления? Причем не в окне BROWSE, а при прямом чтении значения полей командой вроде

?MyTable.MyField

Или если в окне BROWSE встать на соответсвующую ячейку? При определенных способах формирования и заполнения таблицы, могут быть глюки: отображается одно, но читается другое.
22 ноя 06, 23:32    [3438476]     Ответить | Цитировать Сообщить модератору
 Re: Почему округляются значения полей ?  [new]
megaline
Member

Откуда:
Сообщений: 5
// === пример кода ====

PROCEDURE face_user

LOCAL NameStreet
LOCAL NumHouse
LOCAL NumApartament

NameStreet = ALLTRIM( улица )
NumHouse = дом
NumApartament = квартира

LOCAL ARRAY lsl[12] as Integer && массив содержит входящие сальдо на нач.
&& следующего месяца

CLOSE TABLES && закрыть все таблицы

IF !FILE( ALLTRIM( STR ( BaseName - 1 ) ) + "\декабрь.dbf" )
lsl[1] = 0.0
ELSE
USE DataDir + ALLTRIM( STR( BaseName - 1 ) ) + "\декабрь.dbf"
AbonentSeek( NameStreet, NumHouse, NumApartament )
lsl[1] = ЛастСальдо
CLOSE TABLES
ENDIF

FOR i = 1 TO MONTH( DATE() )
USE DataDir + ALLTRIM( STR( BaseName ) )+ "\" + m( i ) + ".dbf"
AbonentSeek( NameStreet, NumHouse, NumApartament )
lsl[i + 1] = ЛастСальдо
ENDFOR

CLOSE TABLES

CREATE TABLE "data\faseuser.dbf" ;
( in_saldo N ( 12, 2 ), ;
nach N ( 12, 2 ), ;
k_oplate N ( 12, 2 ), ;
korr N ( 12, 2 ), ;
schet_441 N ( 12, 2 ), ;
schet_451 N ( 12, 2 ), ;
schet_334 N ( 12, 2 ), ;
schet_681 N ( 12, 2 ), ;
saldo N ( 12, 2 ))


* ----- отладка массива -----
*FOR i = 1 TO 12
* MESSAGEBOX( lsl )
*ENDFOR

*MESSAGEBOX( ALIAS() )

FOR i = 1 TO MONTH( DATE() )
USE DataDir + ALLTRIM( STR( BaseName ) ) + "\" + m( i ) + ".dbf" ALIAS alias_t IN 2
SELECT FASEUSER
APPEND BLANK
REPLACE in_saldo WITH lsl( i )
REPLACE nach WITH alias_t.начислено
REPLACE k_oplate WITH alias_t.к_оплате
REPLACE korr WITH alias_t.коррекция
ENDFOR

CLOSE TABLES
22 ноя 06, 23:42    [3438489]     Ответить | Цитировать Сообщить модератору
 Re: Почему округляются значения полей ?  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Проверь исходные данные. Не таблицу faseuser.dbf, а те таблицы ИЗ которых копируешь. Сам процесс копирования никакого "криминала" не содержит. А вот вопрос заполнения исходных таблиц - непонятен.

Может, у исходных таблиц друга размерность. Может, в процессе расчета сальдо происходит округление.
22 ноя 06, 23:52    [3438501]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить