Какой тип поля совместим с типом numeric в MS SQL Server
Модератор: Модераторы
Какой тип поля совместим с типом numeric в MS SQL Server
Всем привет.
В селекте из таблицы берется поле типа numeric(20,6)
Какой тип нужно указывать для этого поля при создании объектов полей в объекте TSQLquery ?
Автоматически почему-то предлагается какой-то странный набор полей и приходится их создавать вручную.
Пробовал при создании ставить тип Currency и Float
В обоих случаях при Open возникает ошибка External:SIGSEGV по адресу ....
т.к. поля типа Money при этом совместимы с Currency для полей типа numeric приходится делать cast(FLD as money)
Но это в моем случае точности 4 после запятой, хватает. А какой тип правильно использовать?
В селекте из таблицы берется поле типа numeric(20,6)
Какой тип нужно указывать для этого поля при создании объектов полей в объекте TSQLquery ?
Автоматически почему-то предлагается какой-то странный набор полей и приходится их создавать вручную.
Пробовал при создании ставить тип Currency и Float
В обоих случаях при Open возникает ошибка External:SIGSEGV по адресу ....
т.к. поля типа Money при этом совместимы с Currency для полей типа numeric приходится делать cast(FLD as money)
Но это в моем случае точности 4 после запятой, хватает. А какой тип правильно использовать?
- alexs
- долгожитель
- Сообщения: 4066
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
jsa писал(а):Автоматически почему-то предлагается какой-то странный набор полей
Что именно?
jsa писал(а):Пробовал при создании ставить тип Currency и Float
В обоих случаях при Open возникает ошибка External:SIGSEGV по адресу ....
Скорее всего - так делать нельзя. Сам датасет не может разместить в твоих созданых полях данные от сервера.
alexs писал(а):Скорее всего - так делать нельзя. Сам датасет не может разместить в твоих созданых полях данные от сервера.
Вообще нельзя вручную создавать поля?
Почему?
С самого начала использования Lazarus так делать приходится. Т.к. часто из датасета ерунда какая-то подтягивается.
Я просто беру из select именя полей и копипастой их добавляю в новые поля, когда мало через IDE , а когда много и лень, то напрямую в *.lfm
alexs писал(а):Что именно?
вот
У вас нет необходимых прав для просмотра вложений в этом сообщении.
- Снег Север
- долгожитель
- Сообщения: 3067
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
jsa, обрадовать вас нечем - этот серверный тип очень плохо конвертируется в паскалевские типы данных.
Никто это не исправлял, поскольку никому не надо.
Только конвертировать в самом запросе через серверные функции во что-то удобоваримое, как вы и делали.
Никто это не исправлял, поскольку никому не надо.
Только конвертировать в самом запросе через серверные функции во что-то удобоваримое, как вы и делали.
Спс,
буду делать cast(FLD as float) FLD в запросе.
буду делать cast(FLD as float) FLD в запросе.
- Снег Север
- долгожитель
- Сообщения: 3067
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
jsa, читал об этой проблеме еще в делфи, но там тоже ничего не исправили
Снег Север
Когда-то NUMERIC был самым обычным текстовым полем...
Когда-то NUMERIC был самым обычным текстовым полем...
- Снег Север
- долгожитель
- Сообщения: 3067
- Зарегистрирован: 27.11.2007 15:14:47
- Контактная информация:
Vadim, мне не на чем проверить, но, может, и сейчас оно способно в строку правильно конвертироваться. В любом случае это - какой-то реликт ушедших эпох... 
Снег Север
Да, это ещё конец 70-ых начало 80-ых. Овеянные веками пыльных бурь DBF-ки, в которых тогда не было ни целых чисел, ни дробных, а был один этот универсальный формат числа - NUMERIC...
Да, это ещё конец 70-ых начало 80-ых. Овеянные веками пыльных бурь DBF-ки, в которых тогда не было ни целых чисел, ни дробных, а был один этот универсальный формат числа - NUMERIC...
- alexs
- долгожитель
- Сообщения: 4066
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
В принципе - если очень надо - то попробуйте исправить
Там на самом деле все достаточно просто. Исходники есть- исправлениям команда разработчиков только рада будет.
PS
Я бы и сам взялся - но у меня в принципе MS SQL нет нигде.
Там на самом деле все достаточно просто. Исходники есть- исправлениям команда разработчиков только рада будет.
PS
Я бы и сам взялся - но у меня в принципе MS SQL нет нигде.
alexs писал(а):PS
Я бы и сам взялся - но у меня в принципе MS SQL нет нигде.
Поставить MS SQL Server Express бесплатный не проблема,
и под Win https://www.microsoft.com/ru-RU/downloa ... x?id=55994
и под Linux https://docs.microsoft.com/ru-ru/sql/li ... erver-2017
К тому же не обязательно MS SQL, в PostgreSQL тоже есть такой тип
http://postgresql.ru.net/manual/datatype-numeric.html
- alexs
- долгожитель
- Сообщения: 4066
- Зарегистрирован: 15.05.2005 23:17:07
- Откуда: г.Ставрополь
- Контактная информация:
В PostgreSQL всё нормально поддерживается.
Добавлено спустя 42 секунды:
Кстати - попробуй ZEOS - может там проблема уже решена?
Добавлено спустя 10 минут 40 секунд:
По SQLDB смотри файл MSSQLConn:
В функции
надо просто правильно обработать этот тип.
Добавлено спустя 42 секунды:
Кстати - попробуй ZEOS - может там проблема уже решена?
Добавлено спустя 10 минут 40 секунд:
По SQLDB смотри файл MSSQLConn:
В функции
Код: Выделить всё
function TMSSQLConnection.LoadFieldнадо просто правильно обработать этот тип.
