powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите с длинными полями.
6 сообщений из 6, страница 1 из 1
Помогите с длинными полями.
    #34543165
Glad_r
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем доброе время суток. Подскажите уважаемые, на серваке есть база, которая создана в Ingrese, я её выкачиваю и мне нужно обработать несколько таблиц из неё. И тут как раз проблемма там числовые поля, размерностью DECIMAL 30, а в Фоксе только Numeric имеет максимальное значение 18 с учётом точки и знака. Подскажите, как подороть эту проблемму, чтобы не переписывать несколько рабочих проектов(они просто перестали работать после того, как размерность полей изменили с money на decimal 30).
...
Рейтинг: 0 / 0
Помогите с длинными полями.
    #34543340
Glad_r
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может не совсем понятно написал, но если какое либо ЧИСЛОВОЕ поле в Фоксе, чтобы его размерность была не менее 25 символов.
Иначе как я думаю либо переводить из базы поля в символьные и потом работать с ними через преобразование типов данных
Либо же разделять поле 30 на 2 поля длинной по 15 символов и потом их склеивать.
...
Рейтинг: 0 / 0
Помогите с длинными полями.
    #34546753
Фотография ВладимирМ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы хотел уточнить, что именно Вы хотите получить в результате? Вас интересует точность до 30 значащих цифр или размерность?

Под точностью, в данном случае понимается следующее - если в число записали 30 значащих цифр, то все 30 цифр будут отображены именно так, как и были записаны. Если это было 30 единиц, то и прочитано будет 30 единиц.

Размерность - это количество знаков или, для числовых данных, максимально возможное значение, которое в принципе можно записать в поле. При этом точность уже особой роли не играет.

Так вот, системным ограничением FoxPro является точность до 16 значащих цифр. Точнее, чуть меньше. Поэтому, с практической точки зрения можно говорить о точности до 15 значащих цифр.

Это значит, что даже если Вы запишете в какое-либо числовое поле более 15 значащих цифра (Numeric - до 20, Double - до 307), но доверять Вы сможете только первым 15 из них.

Простейшая проверка

Код: plaintext
? 1234567890123456789 

Это команда вернет значение, округленное до 16 значащих цифр. Это системное ограничение FoxPro и обойти это невозможно.

Если требуется более высокая точность расчетов, то необходимо хранить все числа в символьном представлении и писать собственные функции производящие расчет с такими данными. Либо в том же FoxPro, либо в языках, более приспособленных для расчетов с высокой точностью.
...
Рейтинг: 0 / 0
Помогите с длинными полями.
    #34548231
Glad_r
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМ - Спасибо ВАМ.
В результате нужно было получить именно поле с 30 значащими цифрами, но т.к. фокс такое не может, по сначала 30-тизначное числовое поле из БД я просто перевожу в символ, а потом его разбиваю на два поля по 15 знаков и перевожу формат из символьного в числовой. Но тут же встал вопрос, как я смогу обработать такое число, если фокс воспринимает только 16 знаков, а больше он уже начинает округлять???

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

Это единственное поле, которое хранит данные с такой высокой точностью? Т.е. такая высокая точность - это исключительная ситуация для приложения или же ВСЕ приложение должно работать с такой высокой точностью?

Как считать в FoxPro? Ну, просто вспомнить школьные уроки математики, как складывали и умножали столбиком и перевести этот алгоритм в FoxPro при работе с такими числами в символьном представлении.

Можно написать собственные библиотеки на C, и выполнять расчет с такими числами из FoxPro через эти библиотеки.
...
Рейтинг: 0 / 0
Помогите с длинными полями.
    #34549343
Glad_r
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ВладимирМПрежде, чем что-то советовать, опять же надо уточнить постановку задачи.

Это единственное поле, которое хранит данные с такой высокой точностью? Т.е. такая высокая точность - это исключительная ситуация для приложения или же ВСЕ приложение должно работать с такой высокой точностью?

Как считать в FoxPro? Ну, просто вспомнить школьные уроки математики, как складывали и умножали столбиком и перевести этот алгоритм в FoxPro при работе с такими числами в символьном представлении.

Можно написать собственные библиотеки на C, и выполнять расчет с такими числами из FoxPro через эти библиотеки.

Это поле является на самом деле единственным. Ранее тип поля БД на сервере был money и размерность его не превышала 16-18 знаков и всё решалось само собой, потому как всё умещалось в N(20.0) в Фоксе. После того, как тип поля БД на сервере был изменён на decimal 30 появилась базы, у которых размерность поля стала 25-26 знаков. Все знаки значащие и округление просто недопустимо. Вот и встал вопрос, что с этим делать, потому как все приложения просто не могут работать, Ошибка, переполнение поля. Счас в кротчайшие сроки нужно переделать приложения, чтобы они могли обрабатывать такие большие поля. Сейчас пока что выходим из положения тем, что выгружаем всё в символьном виде, потом его делим на два поля по 15 знаков(поля уже числовые), написали отдельные процедуры сложения, вычитания, умножения и деления . Но пока что это только так, работает на пробной таблице. А нужно все переделать на БД.
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Помогите с длинными полями.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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