Вопрос № 122928: Вопрос по FireBird 1.5 (1-ый диалект SQL). Подскажите, пожалуйста, надёжный способ округления значений типа Double Precision до второго знака после точки (в поле таблицы этого типа должны храниться денежные суммы от 0 до 50'000'000). Способ (cast((Fi...Вопрос № 122941: Здравствуйте уважаемые эксперты. Есть приложение клиент, которое использует SQL базу (MS SQL 2000). В большинстве случаев запись происходит в одну таблицу.
Проблема состоит в том что, это приложения и база должна быть установлена еще на нескольки...
Вопрос № 122.928
Вопрос по FireBird 1.5 (1-ый диалект SQL). Подскажите, пожалуйста, надёжный способ округления значений типа Double Precision до второго знака после точки (в поле таблицы этого типа должны храниться денежные суммы от 0 до 50'000'000). Способ (cast((Field1*100) as integer)/100) не подходит для больших значений, т.к. вызывает переполнение Integer, а тип Bigint отсутствует в 1-м диалекте.
Отправлен: 13.02.2008, 09:57
Вопрос задал: Pursuit (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 8)
Отвечает: Архангельский Андрей Германович
Здравствуйте, Pursuit!
НАдежного способа не существует.
Советую перейти на 3 диалект (это достаточно просто) и использовать Numeric(15,4) для денежных расчетов и Numeric(15,5) для соличества.
Дело в том что в 3-ем диалекте Numeric(15,x) храниться как Int64 и следовательно все операции с ними будут на порядок быстрее. С другой стороны 4 знака после запятой - это стандарт de-facto для бухгалтерских расчетов с целью исключить (уменьшить) ошибки округления.
И вообще забудьте про 1-ый диалект - избежите многих проблем.
--------- Если дело заслуживает быть сделаным, то оно заслуживает, чтобы его сделали ХОРОШО
Ответ отправил: Архангельский Андрей Германович (статус: Специалист)
Ответ отправлен: 13.02.2008, 10:09 Оценка за ответ: 5 Комментарий оценки: Спасибо за ответ, посмотрю, как переходить на другой диалект...
Вопрос № 122.941
Здравствуйте уважаемые эксперты. Есть приложение клиент, которое использует SQL базу (MS SQL 2000). В большинстве случаев запись происходит в одну таблицу.
Проблема состоит в том что, это приложения и база должна быть установлена еще на нескольких компьютерах, с которыми физически не возможно связаться чтоб подключить базу и работать в сетевом режиме. Есть ли способ переносить записи этой таблицы из нескольких периферийных баз в одну??? Т.е. выгрузить записи из табы за определенный период в кокой нибудь файл, и из этого файла загрузить их в другую базу???
Отправлен: 13.02.2008, 11:01
Вопрос задал: PaTiFoN (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Коровин Александр
Здравствуйте, PaTiFoN!
Это сделать можно, выгрузив данные таблицы в файл.
В SQL Server Enterprise Manager выберите нужную базу, правая кнопка мыши - все задачи - экспорт данных. Выбираете базу-источник, а далее при определении базы приемника в окошке "Destination" выбираете Текстовый файл.
Соответственно, обратные действия при переносе данных из файла в базу приемник.
Ответ отправил: Коровин Александр (статус: 1-ый класс)
Ответ отправлен: 13.02.2008, 11:21 Оценка за ответ: 5 Комментарий оценки: Спасибо за оперативность!!!