Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / что нужно prc? особенность Access / 16 сообщений из 16, страница 1 из 1
17.03.2019, 10:28
    #39787273
Ганов Александр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что нужно prc? особенность Access
всем знатокам и любителям vba добрый день.
заинтересовал вот какой момент, может кто сталкивался в практике

есть глобальная функция fncКл1113000000000000000000, которая считает 5 параметров и возвращает их в виде одномерного массива, эти данные опять же в виде массива передаются в приватную процедуру prcЗаполнитьКлючевыеПоля, которая заполняет нужные поля на форме. Все работает, вопрос больше из интереса.
Если записать вот так
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
РасчетДанных:
'----------------------
Select Case [fldТарифКлассификатор].Value
     Case "1113000000000000000000"
          arrКлючевыеПоля = fncКл1113000000000000000000([fldВкладСрок].Value, [fldСтавкаМакс].Value)
          prcЗаполнитьКлючевыеПоля(arrКлючевыеПоля)
End Select


то все отличное работает, а если вот так
Код: vbnet
1.
2.
3.
4.
5.
6.
РасчетДанных:
'----------------------
Select Case [fldТарифКлассификатор].Value
     Case "1113000000000000000000"
          prcЗаполнитьКлючевыеПоля (fncКл1113000000000000000000([fldВкладСрок].Value, [fldСтавкаМакс].Value))
End Select

то система выдает ошибку: type mismatch: array or user-defined type expected.
По мне так эта та же самая запись, то есть система сначала считает функцию, а потом передает ее в качестве аргумента уже в процедуру. Или я в синтаксисе косячу где-то, что vba ругается?
Заранее благодарствую за ответы
...
Рейтинг: 0 / 0
17.03.2019, 11:51
    #39787282
Ганов Александр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что нужно prc? особенность Access
немножко неверно указал, так
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
РасчетДанных:
'----------------------
Select Case [fldТарифКлассификатор].Value
     Case "1113000000000000000000"
          arrКлючевыеПоля = fncКл1113000000000000000000([fldВкладСрок].Value, [fldСтавкаМакс].Value)
          prcЗаполнитьКлючевыеПоля arrКлючевыеПоля
End Select


или так
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
РасчетДанных:
'----------------------
Select Case [fldТарифКлассификатор].Value
     Case "1113000000000000000000"
          arrКлючевыеПоля = fncКл1113000000000000000000([fldВкладСрок].Value, [fldСтавкаМакс].Value)
          call prcЗаполнитьКлючевыеПоля(arrКлючевыеПоля)
End Select

работает, а если сразу функцию вместо аргумента подставить, то ругается
...
Рейтинг: 0 / 0
17.03.2019, 15:08
    #39787324
alecko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что нужно prc? особенность Access
без call - не нужно аргумент заключать в скобки.
...
Рейтинг: 0 / 0
17.03.2019, 15:29
    #39787327
Ганов Александр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что нужно prc? особенность Access
alecko, все верно. во втором посте я как раз поправился по этому поводу, но сути вопроса это не решает. при прямом указании функции в качестве аргумента процедуры access дает ошибку
...
Рейтинг: 0 / 0
17.03.2019, 15:44
    #39787330
NBjHCBrc6KlSObm
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что нужно prc? особенность Access
Ганов Александр, вы не указали ни как декларируете функции, ни как объявляете переменные, возможно где-то что-то не совпадает.
...
Рейтинг: 0 / 0
17.03.2019, 17:05
    #39787343
alecko
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что нужно prc? особенность Access
Ганов Александр, функция с нулями что возвращает? в функции prcЗаполнитьКлючевыеПоля какого типа аргумент на входе? неизвестно. делать такие выводы можно только имея все данные.
...
Рейтинг: 0 / 0
18.03.2019, 01:33
    #39787494
Ганов Александр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что нужно prc? особенность Access
NBjHCBrc6KlSObm, в том то и дело что все совпадает - функция возвращает массив типа Variant
Код: vbnet
1.
Public Function fncКл1111000000000000000000(lngТарифСрок As Long, sngСтавкаМакс As Single) As Variant


переменная тоже массив типа Variant
Код: vbnet
1.
Dim arrКлючевыеПоля() As Variant


процедура также принимает массив
Код: vbnet
1.
Private Sub prcЗаполнитьКлючевыеПоля(arrКлючевыеПоля() As Variant)


то есть все эти вещи проверил сразу перед тем как написать вопрос, почему и озадачился почему так происходит. сегодня еще раз проверю совпадение всех типов, но что-то мне подсказывает что дело не в этом
...
Рейтинг: 0 / 0
18.03.2019, 04:22
    #39787500
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что нужно prc? особенность Access
Ганов Александрпроцедура также принимает массив
Код: vbnet
1.
2.
Public Function fncКл1111000000000000000000(lngТарифСрок As Long, sngСтавкаМакс As Single) As Variant() ' либо тут добавь
Private Sub prcЗаполнитьКлючевыеПоля(arrКлючевыеПоля() As Variant)'либо тут убери

Убери эти скобки, либо тут добавь, и внутри процедуры проверяй, что пришёл массив.
Код: vbnet
1.
If VarType(arrКлючевыеПоля) And vbArray Then

ИМХО, вариант убрать скобки лучше - пустой массив не проскочит.
...
Рейтинг: 0 / 0
18.03.2019, 04:35
    #39787501
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что нужно prc? особенность Access
Что-то как-то...
...
Рейтинг: 0 / 0
18.03.2019, 04:40
    #39787502
Ганов Александр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что нужно prc? особенность Access
Панург, косяк свой понял. Спасибо за подсказку. Сам бы на эту "мелочь" внимание не обратил. Все отлично работает
...
Рейтинг: 0 / 0
18.03.2019, 04:42
    #39787503
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что нужно prc? особенность Access
Поправил...
ПанургДобавь скобки типу возвращаемому функцией, либо у параметра процедуры убери скобки и внутри процедуры проверяй, что пришёл массив.
...
Рейтинг: 0 / 0
18.03.2019, 04:50
    #39787504
Ганов Александр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что нужно prc? особенность Access
Панург, я именно так все и сделал. благодарствую за подсказку :-)
...
Рейтинг: 0 / 0
18.03.2019, 04:50
    #39787505
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что нужно prc? особенность Access
Ганов Александр, у вас там полночь (Петропавловск-Камчатский)?
...
Рейтинг: 0 / 0
18.03.2019, 04:51
    #39787506
Ганов Александр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что нужно prc? особенность Access
ПанургГанов Александр, у вас там полночь (Петропавловск-Камчатский)?
не уже день в самом разгаре 13.50
...
Рейтинг: 0 / 0
18.03.2019, 04:53
    #39787507
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что нужно prc? особенность Access
Ганов Александр, фуф, а то по радио как слышу точное время, так в Петропавловске-Камчатском полночь. Уж думаю - как они там в темноте-то живут?
...
Рейтинг: 0 / 0
18.03.2019, 04:56
    #39787508
Ганов Александр
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
что нужно prc? особенность Access
Панург,

нормально у нас тут живется. дороговато местами, а так все ОК
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / что нужно prc? особенность Access / 16 сообщений из 16, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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