powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / чем отличается функция от процедуры (разрушители легенд)
55 сообщений из 55, показаны все 3 страниц
чем отличается функция от процедуры (разрушители легенд)
    #39893175
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очень часто в последнее время на форумах по VBA попадаются скопипащенные ответы на тему "чем отличается функция Function от процедуры Sub". И количество ответов в стиле , дословно "процедура не может возвращать значение" просто зашкаливает.

Так подумать, а что же делали люди без Function то, в обычном Sub , на бейсике ,году этак в 1980м. Правильный ответ - возвращали значения из Sub и не парились))

И также не парились, если надо было из одной процедуры (да и из функции можно) получить 2,3,4,5,N значений на выходе. Без возврата данных в виде массива. Все гораздо проще, просто все уже забыли) В целях проекта "вспомнить всё" можно напомнить как это было))

Как вывести значение из процедуры:

Код: vbnet
1.
2.
3.
Public Sub ВывестиЗначение(byVal Значение1 as Integer, byRef Значение2)
Значение2=Значение1 + 2 ' или ещё какое либо действие
End Sub



Обращение и вывод Значения2 из процедуры Sub (к примеру на кнопку гденить):

Код: vbnet
1.
2.
3.
4.
Private Sub Кнопка1_Click()
call  ВывестиЗначение (10, Значение2)
msgbox Значение2' вот так и вывели и получили число 12. Можно подставить Значение2 куда угодно. Возвратить можно также что угодно, число,текст,объект
End Sub



Если заменить Sub на Function в примере выше, все также прекрасно будет работать.

Просто в какой то момент разработчики слегка проапгрейдили Sub, назвали его Function и дописали к нему возможность вывода значений путем присвоения по ее ссылке на имя, значение выводимой переменной.

Отличие Sub от Function для нас исключительно косметическое. Все можно вернуть, как из функции ,так и из Sub) Просто в функции ради удобства не надо дописывать какую именно переменную мы оттуда хотим вытащить. Можно сразу явно указать ИмяФункции=переменная. И сама функция сделает выбор нужной переменной и передаст по ссылке от своего имени)

И вот таких тем море, на киберфоруме, planetaExcel etc... люди забыли что такое byVal и byRef)
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893177
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов,

А никто и не парится по этому поводу и даже с массивами, я например, если нужно, вообще использую процедуры и функции без каких либо аргументов, просто использую в их теле глобальные переменные и массивы...
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893179
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag,

Так вы то еще застали наверное старую школу, c goto Sub и прочими, посмотрите как пишут сейчас, практически никто не использует byVal и byRef в коде)
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893181
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов
Отличие Sub от Function для нас исключительно косметическое.
Код: vbnet
1.
FirstWord = Split(Phrase)(0)

А будь Split процедурой - фиг бы оно уложилось в одну строку.

Т.е. как минимум экономия на (локальных) переменных.
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893187
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina
Сергей Лалов
Отличие Sub от Function для нас исключительно косметическое.
Код: vbnet
1.
FirstWord = Split(Phrase)(0)

А будь Split процедурой - фиг бы оно уложилось в одну строку.

Т.е. как минимум экономия на (локальных) переменных.

Да, + экономия на локальных переменных;
Но Split это встроенная процедура/функция (скорее всего может быть даже отдельный класс, со свойством, вы же обратились потом (0) и вывели первый элемент массива). Кстати вторая тема интересная,что String это по сути массив символов, и по нему также можно пробежаться. Это также народ, который учит VBA не догоняет сначала). И это не примитив типа byte,int.

Перевести текст в массив обычной процедурой тоже можно, но да, код не на одну строку. Придется покружится.
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893188
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов
Отличие Sub от Function для нас исключительно косметическое.
Для кого - "нас"? Какой-то неопределённый круг лиц. Для нас - нет.
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893190
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов
интересная,что String это по сути массив символов, и по нему также можно пробежаться. Это также народ, который учит VBA не догоняет сначала). И это не примитив типа byte,int.
чушь
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893191
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
закусывать нужно.
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893196
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург
закусывать нужно.


Нифига подобного, текстовая переменная это не примитив.

вы свободно можете сложить два числа к примеру 10+5 и получить 15.
а потом к примеру нам нужно сложить две текстовые переменные "A"+"B".
(Еще один момент из прошлого, раньше конкатенации не было, был один знак плюс)

Порядок сложения простых чисел и сложения текстовых переменных совершенно отличается по способу обработки значений и накоплению информации в стеке.

Не ,String не примитив,точно. Этому на первых занятиях учат на курсах по программированию.

PS. - не пью, от слова совсем))
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893209
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот кстати прекрасный пример у Акина со Split и текстовой переменной.
Панург попробуйте то же самое Split сделать с числом, к примеру Split (100500) (0) ну а потом к примеру Split (100500)(1)) и вы увидите как примитив типа целого числа отличается от текстовой переменной типа String. Стринг это не примитив и по умолчанию проявляет свойства массива.
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893214
Predeclared
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пятница перестает быть скучной.
:)
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893224
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов
Но Split это встроенная процедура/функция
Напиши я пользовательскую, пришлось бы расписывать что да куда... а так сразу всё ясно.

Сергей Лалов
String это по сути массив символов, и по нему также можно пробежаться
Оставаясь в рамках VBA, пробежаться как по Byte()? нетривиальная задачка-то...
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893273
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов,

Жги есчё (просвещай нас), а то скука здеся!
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893314
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов
посмотрите как пишут сейчас



Группу профессоров-инженеров пригласили полетать на самолете. После того как они удобно расселись, их
проинформировали, что самолет построили их студенты. Все, кроме одного, рванули к выходу в панике.
Оставшегося профессора, спокойно сидящего на своем месте, спросили: "Почему вы остались? " «Я полностью
уверен в своих студентах. Зная их, могу вас заверить, что этот кусок дерьма даже не взлетит».
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893335
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов

Что исчё новенького открыли для нас в VBA?
(начали рушить "легенды", дык не останавливайтесь )
Ждёмссс!
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893337
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ROI,

Уверен, что для тех кто здесь отписался и частый гость ветки access ничего нового не открыл . Потому что все кто отписался, средний стаж в vba 10++. А вот людям , которые задают подобные теме топика вопроса, есть шанс попасть сюда по ссылке и посмотреть как это работает. )
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893342
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
PS . Недавно показал одному человеку как параллельно из функции можно вывести значения ссылаясь на саму функцию и на аргументы передаваемые по рефу, у него был разрыв шаблона, по типу такого:

Код: vbnet
1.
2.
3.
4.
5.
Public Function MyFunct( znach as Integer,  byref summ, byref mult)
MyFunct= znach
summ=znach+1
mult = znach* 2
End function



И помимо вызова самой функции которая выводит значение сама, можно ещё дёрнуть параллельно по рефу два значения из сигнатуры функции. Шок контент практически. Очень удивился , потом прочитал что то, и стал отмазываться типа это устаревший метод использования итд итп)
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893343
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов
PS . Недавно показал одному человеку как параллельно из функции можно вывести значения ссылаясь на саму функцию и на аргументы передаваемые по рефу, у него был разрыв шаблона, по типу такого:

Код: vbnet
1.
2.
3.
4.
5.
Public Function MyFunct( znach as Integer,  byref summ, byref mult)
MyFunct= znach
summ=znach+1
mult = znach* 2
End function




И помимо вызова самой функции которая выводит значение сама, можно ещё дёрнуть параллельно по рефу два значения из сигнатуры функции. Шок контент практически. Очень удивился , потом прочитал что то, и стал отмазываться типа это устаревший метод использования итд итп)

Это мы проходили передача по ссылке и по значению byVal и byRef
ничего нового вы не открыли.
штука в неумелых руках "разрушительная"
по этому по умолчанию и стоит byVal
да и к стати (вы из функции значение не выводите ) вы меняете значение неявной переменной
в куче памяти, ну огребаете потом по полной.
Зы в функции ошибка
MyFunct= znach
Это как?
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893346
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ROI


MyFunct= znach
Это как?



В смысле как?)
Это пример функции, где она сама выводит вводимое в нее значение (просто как пример), а также параллельно,уже вызвав её можно еще
дернуть два других из сигнатуры)

К примеру:

Код: vbnet
1.
2.
3.
4.
msgbox MyFunct( 10, summ, mult) выведет просто 10 на экран
'и тут же, из самой функции можно получить еще два других значения по ссылке
msgbox summ
msgbox  mult



То есть она передала значения и в классическом для нее виде и еще 2 передала по ссылке)
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893348
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ROI
по этому по умолчанию и стоит byVal
?
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893350
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По умолчанию в VBA по идее вроде должен стоят byRef , потому что он и переменную обычного типа и объект может передать( сослаться имею ввиду)

Панург первым успел))
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893409
ГостьPRST
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сергей Лалов,

То, что осветил тему - молодец, новичкам из твоего первого письма действительно будет полезно освежить знания по теме топика. Уровень знаний (мое субъективное мнение) со временем действительно падает. Может это связано с нашими инновациями в области образвательной системы, или то, что VB не развивается - не знаю, наблюдения именно такие.

Мне больше понравилась такая твоя конструкция, судя по всему она взорвала мозг не только вашему другу, но и глубокоуважаемому ROI, а потом и мне:
Код: vbnet
1.
2.
3.
4.
5.
Public Function MyFunct( znach as Integer,  byref summ, byref mult)
MyFunct= znach
summ=znach+1
mult = znach* 2
End function



Думал, что это ты косякнул,и на выходе выбьет ошибку, но это работает и как вообще это можно =)) . Пришлось перетряхнуть своё понимание function и sub еще разок. Для самоуспокоения.
Работаю уже достаточно давно ,преподом , в т.ч. консультирую по VBA, пару учебных занятий точно перепишу с оглядкой на этот пример. Нашел полезной информацию именно из дискуссий, по первому письму все и так ясно.
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893412
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ГостьPRST
...
Работаю уже достаточно давно ,преподом , в т.ч. консультирую по VBA, пару учебных занятий точно перепишу с оглядкой на этот пример. Нашел полезной информацию именно из дискуссий, по первому письму все и так ясно.


ой-ёй-ёй, какой кошмар.
Раньше мир устроен был так, что учили те, кто не умеет работать.
А теперь, оказывается, уже учат те, кто даже приблизительного представления не должен
иметь о том, чему учит...
....
И как сумел мир докатиться до откровений этого топика с первого поста начиная...
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893447
ГостьPRST
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
booby

ой-ёй-ёй, какой кошмар.
Раньше мир устроен был так, что учили те, кто не умеет работать.
А теперь, оказывается, уже учат те, кто даже приблизительного представления не должен
иметь о том, чему учит...
....
И как сумел мир докатиться до откровений этого топика с первого поста начиная...


Как педагог со стажем, могу предположить, что у Вас в какой то момент в силу жизненных обстоятельств произошла корреляция влево (см. картинку)
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893449
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ГостьPRST,
Педолог ты (в лучшем случае), а не педагог, раз такими картинками сыпешь.

А так ясно, что ты дурачок ты со стажем, раз сам на количество лет напираешь.

Перетряхивай своё понимание.
Да и не надо ни педологу, ни педагогу, лезть в темы в оценками по предметам, в которых у него отсутствует начальное образование.

Проблема не в том, что ты лично себя позоришь.
Показывая на тебя пальцем, люди могут оказаться склонными судить о преподавателях вообще, ссылаясь на твой пример.
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893451
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ГостьPRST
корреляция влево
Да наш мир вообще не склонен баловать мёдом... не хочешь сдохнуть с голоду - рули влево.
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893453
ГостьPRST
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
booby
ГостьPRST,
Педолог ты (в лучшем случае), а не педагог, раз такими картинками сыпешь.


Как сторонник корреляции в правую сторону не знаком с данным термином. Вам видней, видимо у таких образование и получали.
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893454
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Модератор: Во избежание последующих взаимных комплиментов топик закрывается на сутки
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893691
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Топик открыт
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893697
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina
...

Сергей Лалов
String это по сути массив символов, и по нему также можно пробежаться
Оставаясь в рамках VBA, пробежаться как по Byte()? нетривиальная задачка-то...


Конечно тривиальная, исходно зашитая в синтаксис языка:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Sub test()  
  Dim a() As Byte
  a = "моя любимая строка"  

  Debug.Print "бежим по байтам скопированной строки:"

  Dim i&  
  For i = LBound(a) To UBound(a)
    Debug.Print "i=" & i; " a(" & i & ")=" & a(i)
  Next
End Sub



К "нетривиальному" немного другое относится...

2 mds_world я бы не открывал.
Для кого вообще все эти саморазоблачения и обсуждение лично для себя любимого выдуманных легенд.
В целом - стыдобень, а не топик...
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893705
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby,

Тебе надо успокоиться прост, с одного письма подпалили дюзы. Уже попкорн кончился ))
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893707
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов,

Лучше бы ты ещё пару каких легенд разрушил, что-ли...
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893710
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby,

Обидишься, если разрушу, или забанят)
Я понимаю что на обсуждение собрались те, кто шарят в vba. Материал действительно элементарный.
По программированию убедить или удивить мне тебя нечем.
Но просветить могу ,то что ты поверхностно знаешь.
Это твой ник. Я не педагог как чувак сверху, я мореходку закончил, и всю жизнь занимаюсь перевозками, и международными отношениями. Я рекомендую тебе его сменить ,если форум позволяет.

Потому что booby на восточном побережье США на слэнге у цветных ребят значит уменьшительно ласкательное название женской груди, ну и так они своих подружек называют. Это не оскорбительное выражение, просто дословный перевод my booby это примерно переводиться как "мой сосочек", моя дурашка" Ничего не имею против мулаток из Бостона к примеру
, но надеюсь что на LinkedIn ты не зафорсился под этим никнеймом. И это пруфы, так же как ты разобрал бинарник чуть выше.
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893711
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов,

я тебе вежливо отвечу - мой ник - не твоё собачье дело .

Давай-ка лучше простым русским языком расскажи - о чём твой топик,
и почему свой бестолковый стартовый пост ты сокрушённо завершил фразой:
Сергей Лаловлюди забыли что такое byVal и byRef

Что ты хотел этим сказать в контексте возврата значений через параметры?
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893719
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург
ROI
по этому по умолчанию и стоит byVal
?

Да заметил свою ошибку.
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893720
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов
PS . Недавно показал одному человеку как параллельно из функции можно вывести значения ссылаясь на саму функцию и на аргументы передаваемые по рефу, у него был разрыв шаблона, по типу такого:

Код: vbnet
1.
2.
3.
4.
5.
Public Function MyFunct( znach as Integer,  byref summ, byref mult)
MyFunct= znach
summ=znach+1
mult = znach* 2
End function




И помимо вызова самой функции которая выводит значение сама, можно ещё дёрнуть параллельно по рефу два значения из сигнатуры функции. Шок контент практически. Очень удивился , потом прочитал что то, и стал отмазываться типа это устаревший метод использования итд итп)

Вы столкнулись с фишкой VBA (неявное преобразование типов)
штука очень нетривиальная, для начинающих вредная
в вашей функции к яблокам можно прибавить сыр и вычесть копыта
и она это попытается сделать!
функция по умолчанию всегда возвращает значение типа (Variant)
И вообще с типом (Variant) вам начинающим надо поосторожнее.
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893721
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ROI
Панург
пропущено...
?

Да заметил свою ошибку.


Я видно имел в ввиду:
"Общие переменные (объявленные как Public) в модулях класса
всегда передаются по значению, вне зависимости от объявленного способа передачи аргумента"
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893724
ROI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов,

Откройте для себя Функцию Eval.
Такие фокусы будете показывать другим (у них глаза вылезут)
В VBA много интересных фишек.
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893731
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ROI
"Общие переменные (объявленные как Public) в модулях класса
всегда передаются по значению, вне зависимости от объявленного способа передачи аргумента"
Что такое "Общие переменные"? И куда они передаются?
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893732
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и с кем они общие?
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893733
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург
и с кем они общие?


Это раньше так public переменные называли, общие в смысле область видимости у них общая.
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893735
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов
Это раньше так public переменные называли, общие в смысле область видимости у них общая.
Когда раньше?
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893736
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург, не знаю
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893738
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов
Это раньше так public переменные называли, общие в смысле область видимости у них общая.
публичная переменная класса = свойство.
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893739
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург
Сергей Лалов
Это раньше так public переменные называли, общие в смысле область видимости у них общая.
публичная переменная класса = свойство.


Нет:
https://docs.microsoft.com/ru-ru/dotnet/visual-basic/programming-guide/language-features/procedures/differences-between-properties-and-variables

Хотя может чего и не догоняю
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893762
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сергей Лалов
Хотя может чего и не догоняю
да. Это совершенно другой ЯП
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893774
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург
Сергей Лалов
Хотя может чего и не догоняю
да. Это совершенно другой ЯП


Слишком простое решение для MS, подозрительно
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893869
studieren
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В MS Access есть одна существенная разница между процедурой и функцией:
если Вы, находясь в элементе управления какой-либо формы или отчёта, хотите запустить процедуру (не для возвращения какого-либо значения, а просто для совершения каких-либо действий типа открыть / закрыть таблицу / запрос / форму и т.д.), то ничего не получиться с процедурой, нужна именно функция. Конечно можно ещё на событие повесить то или иное действие, я сейчас не об этом. Допустим, хотим создать форму без модуля и повесить на свойства элементов управления совершение каких-либо действий.
В принципе все процедуры (кроме событий) в MS Access можно превратить в функцию, которая не возвращает ничего. Функция более универсальная на мой взгляд.
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893876
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
studieren
функцию, которая не возвращает ничего.
если мы не забираем то что возвращает функция, это не означает что она ничего не вернула. В любом случае возвращается что-то, хотя бы Variant=Empty
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893887
studieren
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург,

Ну я имел ввиду вот что:
Код: vbnet
1.
2.
3.
Function Труляля()
  ' тут совершаем какие-либо действия
End Function


По сути такая функция мало чем отличается от процедуры. Да, конечно же можно проверить и убедиться, что функция возвращает Variant в любом случае, если явно не указано иное. Функция более гибкая и универсальная чем процедура.
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893914
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
studieren
Функция более универсальная на мой взгляд

studieren
В MS Access


+
- её ещё можно использовать в запросах (и в виде значения и в виде условия отбора) ибо она возвращает значение.
- а больше всего мне нравится использовать конструкцию типа этой:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Function Труляля() As Integer 'ну или нужное
Труляля = 0 ' если такое вернется, значит ошибка (мало вероятно, но лучше остановить основную программу для разбора полетов)
On Error GoTo er1
  ' тут совершаем какие-либо действия
  ' возможно тут будет Труляля = 1 или 2 или 100 или искомое в общем...
Exit Function
er1:
Msgbox "Сообщение о причине ошибки"
End Function
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39893978
Фотография Сергей Лалов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag
studieren
Функция более универсальная на мой взгляд

studieren
В MS Access


+
- её ещё можно использовать в запросах (и в виде значения и в виде условия отбора) ибо она возвращает значение.
- а больше всего мне нравится использовать конструкцию типа этой:
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
Function Труляля() As Integer 'ну или нужное
Труляля = 0 ' если такое вернется, значит ошибка (мало вероятно, но лучше остановить основную программу для разбора полетов)
On Error GoTo er1
  ' тут совершаем какие-либо действия
  ' возможно тут будет Труляля = 1 или 2 или 100 или искомое в общем...
Exit Function
er1:
Msgbox "Сообщение о причине ошибки"
End Function



Точно, прикольно, этот момент я действительно пропустил, обращения и ссылки из таких объектов аксесса, как запросы и отчеты.
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39894090
Фотография Панург
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
vmag
Код: vbnet
1.
Труляля = 0 ' если такое вернется, значит ошибка (мало вероятно, но лучше остановить основную программу для разбора полетов)

излишне, там и так 0
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39894109
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Панург
vmag
Код: vbnet
1.
Труляля = 0 ' если такое вернется, значит ошибка (мало вероятно, но лучше остановить основную программу для разбора полетов)

излишне, там и так 0

ну, от того, что масло дополнительно помаслено - ещё никто не умирал.

А вот msgbox - уж как хорош, и особенно для функции используемой в запросах.
Красота, аж звёзды в глазах.
...
Рейтинг: 0 / 0
чем отличается функция от процедуры (разрушители легенд)
    #39894158
Фотография vmag
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby
А вот msgbox - уж как хорош, и особенно для функции используемой в запросах.


Да это так, общий случай, в запросах то и коню понятно, что ни к чему...
...
Рейтинг: 0 / 0
55 сообщений из 55, показаны все 3 страниц
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / чем отличается функция от процедуры (разрушители легенд)
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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