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

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

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

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

Почему так может быть?
...
Рейтинг: 0 / 0
27.06.2020, 13:42
    #39973742
Nebo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO не видит тип NUMERIC (PostgreSQL) ?
Добавлю, что в запросе приходится NUMERIC значение оборачивать с помощью NZ(price,0)+0, тогда в DAO recordset значение поля есть.
...
Рейтинг: 0 / 0
27.06.2020, 15:10
    #39973754
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO не видит тип NUMERIC (PostgreSQL) ?
Nebo,
А значение этого поля не используется в выражении результатом которого будет стринг?
...
Рейтинг: 0 / 0
27.06.2020, 15:23
    #39973755
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO не видит тип NUMERIC (PostgreSQL) ?
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
29.06.2020, 12:52
    #39974144
Nebo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
DAO не видит тип NUMERIC (PostgreSQL) ?
sdku,

Спасибо)

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

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


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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

А вот так:

Me.price = rst("price")

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

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

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

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



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

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

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

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


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