powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / DAO не видит тип NUMERIC (PostgreSQL) ?
25 сообщений из 46, страница 1 из 2
DAO не видит тип NUMERIC (PostgreSQL) ?
    #39973738
Nebo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть в PostgreSQL поле price тип данных NUMERIC

Есть Accecc запрос, который выводит успешно значение этого поля price типа NUMERIC. если просто запустить этот запрос.

Если же этот запрос использовать в VBA через DAO, то значение NUMERIC не возвращается. Вместо него пустое значение.

Тоесть DAO не видит NUMERIC

Почему так может быть?
...
Рейтинг: 0 / 0
DAO не видит тип NUMERIC (PostgreSQL) ?
    #39973742
Nebo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добавлю, что в запросе приходится NUMERIC значение оборачивать с помощью NZ(price,0)+0, тогда в DAO recordset значение поля есть.
...
Рейтинг: 0 / 0
DAO не видит тип NUMERIC (PostgreSQL) ?
    #39973754
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nebo,
А значение этого поля не используется в выражении результатом которого будет стринг?
...
Рейтинг: 0 / 0
DAO не видит тип NUMERIC (PostgreSQL) ?
    #39973755
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
4.1.2.6. Числовые константы

Числовые константы могут быть заданы в следующем общем виде:

цифры
цифры.[цифры][e[+-]цифры]
[цифры].цифры[e[+-]цифры]
цифрыe[+-]цифры

где цифры — это одна или несколько десятичных цифр (0..9). До или после десятичной точки (при её наличии) должна быть минимум одна цифра. Как минимум одна цифра должна следовать за обозначением экспоненты (e), если оно присутствует. В числовой константе не может быть пробелов или других символов. Заметьте, что любой знак минус или плюс в начале строки не считается частью числа; это оператор, применённый к константе.

Несколько примеров допустимых числовых констант:


42
3.5
4.
.001
5e2
1.925e-3

Числовая константа, не содержащая точки и экспоненты, изначально рассматривается как константа типа integer, если её значение умещается в 32-битный тип integer; затем как константа типа bigint, если её значение умещается в 64-битный bigint; в противном случае она принимает тип numeric. Константы, содержащие десятичные точки и/или экспоненты, всегда считаются константами типа numeric.

Изначально назначенный тип данных числовой константы это только отправная точка для алгоритмов определения типа. В большинстве случаев константа будет автоматически приведена к наиболее подходящему типу для данного контекста. При необходимости вы можете принудительно интерпретировать числовое значение как значение определённого типа, приведя его тип к нужному. Например, вы можете сделать, чтобы числовое значение рассматривалось как имеющее тип real (float4), написав:

REAL '1.23' -- строковый стиль
1.23::REAL -- стиль PostgreSQL (исторический)

На самом деле это только частные случаи синтаксиса приведения типов, который будет рассматриваться далее.
...
Рейтинг: 0 / 0
DAO не видит тип NUMERIC (PostgreSQL) ?
    #39974144
Nebo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku,

Спасибо)

Проблему не смог решить. Точнее использую Nz функцию.
Получается что DAO не может работать с numeric типом Postgres.

https://www.sql.ru/forum/1326822/vba-dao-ne-vidit-tip-numeric-postgresql
...
Рейтинг: 0 / 0
DAO не видит тип NUMERIC (PostgreSQL) ?
    #39974236
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nebo
Получается что DAO не может работать с numeric типом Postgres.
У меня работает, тип DAO dbDecimal
...
Рейтинг: 0 / 0
DAO не видит тип NUMERIC (PostgreSQL) ?
    #39974237
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
только что попробовал
версия сервера 10.4, драйвер стандартный под версию
...
Рейтинг: 0 / 0
DAO не видит тип NUMERIC (PostgreSQL) ?
    #39974341
Nebo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург
Nebo
Получается что DAO не может работать с numeric типом Postgres.
У меня работает, тип DAO dbDecimal


Мдааа. Постом ниже Вы пишите, что попробовали. А что именно попробовали?

dbDecimal откуда это взято? Какой код примерно ? Покажите пожалуйста?

Охотно верю, что у Вас всё работает.

У меня в Постгресе numeric(10,2)

Таблица связана с Аксесс. Есть обычный статический запрос.

Дальше обычный DAO recordset на базе этого запроса.

А дальше проблема в DAO с полем numeric(10,2). Оно пустое.
Если к нем обратиться типа rst("price") то Аксесс вообще аварийно завершается.
...
Рейтинг: 0 / 0
DAO не видит тип NUMERIC (PostgreSQL) ?
    #39974343
Nebo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург
только что попробовал
версия сервера 10.4, драйвер стандартный под версию


Использую версию 12.1.3
...
Рейтинг: 0 / 0
DAO не видит тип NUMERIC (PostgreSQL) ?
    #39974345
Nebo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати в ADODB работает все нормально.
...
Рейтинг: 0 / 0
DAO не видит тип NUMERIC (PostgreSQL) ?
    #39974359
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nebo
Кстати в ADODB работает все нормально.
да, работает

Nebo
Мдааа. Постом ниже Вы пишите, что попробовали. А что именно попробовали?

dbDecimal откуда это взято? Какой код примерно ? Покажите пожалуйста?

Охотно верю, что у Вас всё работает.

У меня в Постгресе numeric(10,2)

Таблица связана с Аксесс. Есть обычный статический запрос.

Дальше обычный DAO recordset на базе этого запроса.

А дальше проблема в DAO с полем numeric(10,2). Оно пустое.
Если к нем обратиться типа rst("price") то Аксесс вообще аварийно завершается.
...
Рейтинг: 0 / 0
DAO не видит тип NUMERIC (PostgreSQL) ?
    #39974822
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а в VBA:
10,2-текст
10.2-число
...
Рейтинг: 0 / 0
DAO не видит тип NUMERIC (PostgreSQL) ?
    #39974861
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku
а в VBA:
10,2-текст
10.2-число
Это ты о чём?
...
Рейтинг: 0 / 0
DAO не видит тип NUMERIC (PostgreSQL) ?
    #39974872
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nebo
....Если же этот запрос использовать в VBA через DAO, то значение NUMERIC не возвращается...
Уважаемый Панург честно говоря я и сам не понял о чем-может ты разъяснишь мне как это значение "NUMERIC" (не понял от слова совсем),любого поля,любого типа, может "не возвращаться"
...
Рейтинг: 0 / 0
DAO не видит тип NUMERIC (PostgreSQL) ?
    #39974901
Nebo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург,

спасибо большое за картинки.)

Я попозже подготовлю свой код и покажу картинки.

Надеюсь проблема никуда не исчезла.
...
Рейтинг: 0 / 0
DAO не видит тип NUMERIC (PostgreSQL) ?
    #39974902
Nebo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku
Nebo
....Если же этот запрос использовать в VBA через DAO, то значение NUMERIC не возвращается...
Уважаемый Панург честно говоря я и сам не понял о чем-может ты разъяснишь мне как это значение "NUMERIC" (не понял от слова совсем),любого поля,любого типа, может "не возвращаться"


Я просто покажу картинки.

Это очень просто.
Есть DAO recordset.
Все поля не numeric имеют значение.

А поля numeric уже без значений.

Как вообще проблема выяснилась?

А вот так:

Me.price = rst("price")

Аксесс аварийно завершался. Полез в рекордсет, стал смотреть эти numeric поля, а они пустые.

Почему пока незвестно.
...
Рейтинг: 0 / 0
DAO не видит тип NUMERIC (PostgreSQL) ?
    #39974906
Nebo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо за помощь)
...
Рейтинг: 0 / 0
DAO не видит тип NUMERIC (PostgreSQL) ?
    #39974916
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Nebo

...А вот так:
Me.price = rst("price")..
а я думаю так:
Код: vbnet
1.
2.
Set RS=CurrentDb.OpenRecordset("price")
Me.price=RS(1)
...
Рейтинг: 0 / 0
DAO не видит тип NUMERIC (PostgreSQL) ?
    #39974918
Nebo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku
Nebo

...А вот так:
Me.price = rst("price")..
а я думаю так:
Код: vbnet
1.
2.
Set RS=CurrentDb.OpenRecordset("price")
Me.price=RS(1)



Посмотрим попозже картинки мои, тогда видно будет что и как )

У меня версия сервера выше, может из-за этого.
...
Рейтинг: 0 / 0
DAO не видит тип NUMERIC (PostgreSQL) ?
    #39974924
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku
Nebo
....Если же этот запрос использовать в VBA через DAO, то значение NUMERIC не возвращается...
Уважаемый Панург честно говоря я и сам не понял о чем-может ты разъяснишь мне как это значение "NUMERIC" (не понял от слова совсем),любого поля,любого типа, может "не возвращаться"
что-то ты меня вконец запутал...

NUMERIC - тип данных (поля) в PgSQL, хранит вещественное число с указанной точностью. У Nebo в наборе записей ( DAO.Recordset ) который он получает в Access поля этого типа пустые.

ежели ты про 10.2 , то это всего лишь точность и масштаб - 8 цифр до запятой и 2 после.
...
Рейтинг: 0 / 0
DAO не видит тип NUMERIC (PostgreSQL) ?
    #39974942
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В PostgreSQL тип NUMERIC хранит числа с фиксированной точностью, которые могут иметь до 131072 знаков в целой части и до 16383 знаков после запятой.
А в VBA такого типа нет.А как работать с тем чего нет(есть функция IsNumeric)
...
Рейтинг: 0 / 0
DAO не видит тип NUMERIC (PostgreSQL) ?
    #39974959
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku
А в VBA такого типа нет.А как работать с тем чего нет(есть функция IsNumeric)
соответствует до определённого предела, я же показал на картинках
Панург
тип DAO dbDecimal
...
Рейтинг: 0 / 0
DAO не видит тип NUMERIC (PostgreSQL) ?
    #39974960
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku
которые могут иметь
а могут и не иметь. в данном случае всего 10 цифер
...
Рейтинг: 0 / 0
DAO не видит тип NUMERIC (PostgreSQL) ?
    #39974982
Фотография sdku
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А какая разница сколько цифр если такого типа нет
Может имеет смысл выбрать тип который есть в обоих случаях
...
Рейтинг: 0 / 0
DAO не видит тип NUMERIC (PostgreSQL) ?
    #39974990
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sdku
А какая разница сколько цифр если такого типа нет
И что дальше?
sdku
Может имеет смысл выбрать тип который есть в обоих случаях
Нет, и так работает, я показал.
...
Рейтинг: 0 / 0
25 сообщений из 46, страница 1 из 2
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / DAO не видит тип NUMERIC (PostgreSQL) ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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