Какой тип поля совместим с типом numeric в MS SQL Server

Вопросы программирования и использования среды Lazarus.

Модератор: Модераторы

Какой тип поля совместим с типом numeric в MS SQL Server

Сообщение jsa » 13.05.2019 14:40:12

Всем привет.
В селекте из таблицы берется поле типа numeric(20,6)
Какой тип нужно указывать для этого поля при создании объектов полей в объекте TSQLquery ?
Автоматически почему-то предлагается какой-то странный набор полей и приходится их создавать вручную.
Пробовал при создании ставить тип Currency и Float
В обоих случаях при Open возникает ошибка External:SIGSEGV по адресу ....
т.к. поля типа Money при этом совместимы с Currency для полей типа numeric приходится делать cast(FLD as money)
Но это в моем случае точности 4 после запятой, хватает. А какой тип правильно использовать?
jsa
постоялец
 
Сообщения: 261
Зарегистрирован: 28.11.2017 13:46:04

Re: Какой тип поля совместим с типом numeric в MS SQL Server

Сообщение alexs » 13.05.2019 16:40:02

jsa писал(а):Автоматически почему-то предлагается какой-то странный набор полей

Что именно?
jsa писал(а):Пробовал при создании ставить тип Currency и Float
В обоих случаях при Open возникает ошибка External:SIGSEGV по адресу ....

Скорее всего - так делать нельзя. Сам датасет не может разместить в твоих созданых полях данные от сервера.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4051
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Какой тип поля совместим с типом numeric в MS SQL Server

Сообщение jsa » 14.05.2019 07:15:01

alexs писал(а):Скорее всего - так делать нельзя. Сам датасет не может разместить в твоих созданых полях данные от сервера.

Вообще нельзя вручную создавать поля?
Почему?
С самого начала использования Lazarus так делать приходится. Т.к. часто из датасета ерунда какая-то подтягивается.
Я просто беру из select именя полей и копипастой их добавляю в новые поля, когда мало через IDE , а когда много и лень, то напрямую в *.lfm

alexs писал(а):Что именно?

вот
У вас нет необходимых прав для просмотра вложений в этом сообщении.
jsa
постоялец
 
Сообщения: 261
Зарегистрирован: 28.11.2017 13:46:04

Re: Какой тип поля совместим с типом numeric в MS SQL Server

Сообщение Снег Север » 14.05.2019 07:43:53

jsa, обрадовать вас нечем - этот серверный тип очень плохо конвертируется в паскалевские типы данных. :(
Никто это не исправлял, поскольку никому не надо.
Только конвертировать в самом запросе через серверные функции во что-то удобоваримое, как вы и делали.
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2990
Зарегистрирован: 27.11.2007 16:14:47

Re: Какой тип поля совместим с типом numeric в MS SQL Server

Сообщение jsa » 14.05.2019 14:23:31

Спс,
буду делать cast(FLD as float) FLD в запросе.
jsa
постоялец
 
Сообщения: 261
Зарегистрирован: 28.11.2017 13:46:04

Re: Какой тип поля совместим с типом numeric в MS SQL Server

Сообщение Снег Север » 14.05.2019 14:51:08

jsa, читал об этой проблеме еще в делфи, но там тоже ничего не исправили
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2990
Зарегистрирован: 27.11.2007 16:14:47

Re: Какой тип поля совместим с типом numeric в MS SQL Server

Сообщение Vadim » 14.05.2019 15:31:53

Снег Север
Когда-то NUMERIC был самым обычным текстовым полем... ;-)
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Какой тип поля совместим с типом numeric в MS SQL Server

Сообщение Снег Север » 14.05.2019 15:54:16

Vadim, мне не на чем проверить, но, может, и сейчас оно способно в строку правильно конвертироваться. В любом случае это - какой-то реликт ушедших эпох... :)
Аватара пользователя
Снег Север
долгожитель
 
Сообщения: 2990
Зарегистрирован: 27.11.2007 16:14:47

Re: Какой тип поля совместим с типом numeric в MS SQL Server

Сообщение Vadim » 14.05.2019 16:18:22

Снег Север
Да, это ещё конец 70-ых начало 80-ых. Овеянные веками пыльных бурь DBF-ки, в которых тогда не было ни целых чисел, ни дробных, а был один этот универсальный формат числа - NUMERIC... :-)
Vadim
долгожитель
 
Сообщения: 4112
Зарегистрирован: 05.10.2006 08:52:59
Откуда: Красноярск

Re: Какой тип поля совместим с типом numeric в MS SQL Server

Сообщение alexs » 14.05.2019 20:13:10

В принципе - если очень надо - то попробуйте исправить
Там на самом деле все достаточно просто. Исходники есть- исправлениям команда разработчиков только рада будет.
PS
Я бы и сам взялся - но у меня в принципе MS SQL нет нигде.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4051
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь

Re: Какой тип поля совместим с типом numeric в MS SQL Server

Сообщение jsa » 15.05.2019 07:59:01

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
jsa
постоялец
 
Сообщения: 261
Зарегистрирован: 28.11.2017 13:46:04

Re: Какой тип поля совместим с типом numeric в MS SQL Server

Сообщение alexs » 15.05.2019 10:42:13

В PostgreSQL всё нормально поддерживается.

Добавлено спустя 42 секунды:
Кстати - попробуй ZEOS - может там проблема уже решена?

Добавлено спустя 10 минут 40 секунд:
По SQLDB смотри файл MSSQLConn:
В функции
Код: Выделить всё
function TMSSQLConnection.LoadField

надо просто правильно обработать этот тип.
Аватара пользователя
alexs
долгожитель
 
Сообщения: 4051
Зарегистрирован: 15.05.2005 23:17:07
Откуда: г.Ставрополь


Вернуться в Lazarus

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 20

Рейтинг@Mail.ru