powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / что нужно prc? особенность Access
16 сообщений из 16, страница 1 из 1
что нужно prc? особенность Access
    #39787273
Фотография Ганов Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всем знатокам и любителям 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
что нужно prc? особенность Access
    #39787282
Фотография Ганов Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
немножко неверно указал, так
Код: 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
что нужно prc? особенность Access
    #39787324
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
без call - не нужно аргумент заключать в скобки.
...
Рейтинг: 0 / 0
что нужно prc? особенность Access
    #39787327
Фотография Ганов Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alecko, все верно. во втором посте я как раз поправился по этому поводу, но сути вопроса это не решает. при прямом указании функции в качестве аргумента процедуры access дает ошибку
...
Рейтинг: 0 / 0
что нужно prc? особенность Access
    #39787330
NBjHCBrc6KlSObm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ганов Александр, вы не указали ни как декларируете функции, ни как объявляете переменные, возможно где-то что-то не совпадает.
...
Рейтинг: 0 / 0
что нужно prc? особенность Access
    #39787343
alecko
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ганов Александр, функция с нулями что возвращает? в функции prcЗаполнитьКлючевыеПоля какого типа аргумент на входе? неизвестно. делать такие выводы можно только имея все данные.
...
Рейтинг: 0 / 0
что нужно prc? особенность Access
    #39787494
Фотография Ганов Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
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
что нужно prc? особенность Access
    #39787500
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ганов Александрпроцедура также принимает массив
Код: 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
что нужно prc? особенность Access
    #39787501
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то как-то...
...
Рейтинг: 0 / 0
что нужно prc? особенность Access
    #39787502
Фотография Ганов Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург, косяк свой понял. Спасибо за подсказку. Сам бы на эту "мелочь" внимание не обратил. Все отлично работает
...
Рейтинг: 0 / 0
что нужно prc? особенность Access
    #39787503
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поправил...
ПанургДобавь скобки типу возвращаемому функцией, либо у параметра процедуры убери скобки и внутри процедуры проверяй, что пришёл массив.
...
Рейтинг: 0 / 0
что нужно prc? особенность Access
    #39787504
Фотография Ганов Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург, я именно так все и сделал. благодарствую за подсказку :-)
...
Рейтинг: 0 / 0
что нужно prc? особенность Access
    #39787505
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ганов Александр, у вас там полночь (Петропавловск-Камчатский)?
...
Рейтинг: 0 / 0
что нужно prc? особенность Access
    #39787506
Фотография Ганов Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ПанургГанов Александр, у вас там полночь (Петропавловск-Камчатский)?
не уже день в самом разгаре 13.50
...
Рейтинг: 0 / 0
что нужно prc? особенность Access
    #39787507
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ганов Александр, фуф, а то по радио как слышу точное время, так в Петропавловске-Камчатском полночь. Уж думаю - как они там в темноте-то живут?
...
Рейтинг: 0 / 0
что нужно prc? особенность Access
    #39787508
Фотография Ганов Александр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург,

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


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