powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Type mismatch при работе с хранимой процедурой
6 сообщений из 6, страница 1 из 1
Type mismatch при работе с хранимой процедурой
    #32725353
roman10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Запускаю хранимую процедуру и пытаюсь извлечь результат ее работы. Сначала создал запрос qryCalcContractObjectSum:

EXEC my_procedure тут параметры...

Процедура возвращает рекордест из единственного столбца типа double.
Далее пишу вот такой вот код:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
    Dim cnnLocal As New ADODB.Connection
    Dim rstCurr  As New ADODB.Recordset
    Dim dblVal As Double    
   
    Set cnnLocal = CurrentProject.Connection
        rstCurr.Open "SELECT * FROM qryCalcContractObjectSum", cnnLocal, adOpenStatic, adLockReadOnly
    dblVal = rstCurr("sum_price")  ' <--- тут вылезает Type Mismatch 
    rstCurr.Close
    
    Set cnnLocal = Nothing


И если rstCurr("sum_price") обернуть в CDbl, тоже не работает. Такая вот бяка. Может кто сталкивался раньше? Где тут грабли...
...
Рейтинг: 0 / 0
Type mismatch при работе с хранимой процедурой
    #32725383
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как вариант

rstCurr("sum_price") - может иметь значение Null (по определению T-SQL)
А вот тип Double в VBA не может иметь значение Null

Делаем вывод
Код: plaintext
Dim dblVal As Variant
...
Рейтинг: 0 / 0
Type mismatch при работе с хранимой процедурой
    #32725389
Фотография Лох Позорный
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
чем гадать - лучше поглядеть в отладчике, какого же оно типа
...
Рейтинг: 0 / 0
Type mismatch при работе с хранимой процедурой
    #32725407
roman10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, в отладчике rstCurr("sum_price") видится как текстовая строчка почему-то.

Что касается NULL, то его гарантированно не может быть по логике работы процедуры.
...
Рейтинг: 0 / 0
Type mismatch при работе с хранимой процедурой
    #32725479
roman10
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мдя, методом тыка нашлись грабли. Если кому интересно...

Первоначально хр. процедура имела вид обычныго запроса (речь идет о SQL Server естественно):
Код: plaintext
1.
2.
3.
4.
SELECT SUM(...) AS sum_price
...
далее куча джойнов
....

Потом переделал так:
Код: plaintext
1.
2.
3.
4.
5.
6.
DECALARE @res NUMERIC(9,4)

SELECT @res = SUM(...)
...куча джойнов...

SELECT @res AS sum_price

Вот тут все запахало.

Короче, похоже что Acces и SQL Server не всегда могут договориться, какому типу принадлежит то или иное поле. Или SQL Server переделывает все в String, если тип не задан явно, что помоему странно. Чудеса, однако.
...
Рейтинг: 0 / 0
Type mismatch при работе с хранимой процедурой
    #32725530
Фотография paparome
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не совсем так - есть некоторые типы в SQL, у которых нет аналогов Аксе
(например bigint )
В таких случаях Акс приводит эти типы к стрингам и не парится :)
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Type mismatch при работе с хранимой процедурой
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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