Модераторы: Akina
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> получить в переменную название формы 
:(
    Опции темы
Dmitriy9
Дата 1.7.2013, 15:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 31.5.2013

Репутация: нет
Всего: нет



Здравствуйте, подскажите как мне получить при запуске формы ее название в переменную для последующей работы с этой переменной (в VBA только разбираюсь!)


Код

Private Sub Form_Load()
M Me
End Sub
 так пытаюсь обратиться к функции


Код

Public Function M()
Dim MyForm As Form
For Each MyForm In Forms
My = MyForm.Name
Next MyForm
End Function
  эта функция находится в общем модуле

Подскажите что не так делаю и как получить переменную, что бы потом ее использовать в любой части проекта 
PM MAIL   Вверх
Михайло
Дата 1.7.2013, 20:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 1
Регистрация: 25.10.2011

Репутация: нет
Всего: нет



Для внутренней переменной достаточно написать так:

Dim s As string

Private Sub Form_Load()
  s=Me.Name
End Sub

Если нужна глобальная переменная, то на закладке "Модули" окна "база данных" создайте модуль с любым именем и таким содержимым:

Public s As string
PM MAIL   Вверх
SkCom
Дата 1.7.2013, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 10.2.2009

Репутация: нет
Всего: нет



Назначить глобальную открытую переменную на уровне модуля.

Код

Public frmName As String

Private Sub Form_Load()
frmName = Form_Name(Me)
End Sub


Создать общедоступную Функцию.
Код

Public Functuion Form_Name(ByVal frm As Form)
Return frm.Name
End Function



Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
Akina
Дата 2.7.2013, 07:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(SkCom @  1.7.2013,  22:05 Найти цитируемый пост)
Назначить глобальную открытую переменную на уровне модуля.

Ага... и определил её в модуле класса... молодец, блин!

Цитата(SkCom @  1.7.2013,  22:05 Найти цитируемый пост)
Создать общедоступную Функцию.

Ну тут ты вообще отличился! Одна строка в теле функции - зато какая!

Не лезь ты туда, где НИЧЕГО не смыслишь...

Добавлено через 1 минуту и 23 секунды
Dmitriy9, для определения переменных уровня проекта создайте ОТДЕЛЬНЫЙ модуль. 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Dmitriy9
Дата 2.7.2013, 07:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 31.5.2013

Репутация: нет
Всего: нет




SkCom, Сделал все как вы сказали
 
Код

Public Functuion Form_Name(ByVal frm As Form)
 Return frm.Name
End Function
Выдает ошибку в строке  Return frm.Name 

Это сообщение отредактировал(а) Dmitriy9 - 2.7.2013, 07:35
PM MAIL   Вверх
Akina
Дата 2.7.2013, 07:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Dmitriy9, не надо бездумно переписывать всякий бред. 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Dmitriy9
Дата 2.7.2013, 07:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 31.5.2013

Репутация: нет
Всего: нет



я в vba разбираюсь только , по этому и пробую что подсказывают, так сказать по принципу проб и ошибок
PM MAIL   Вверх
Akina
Дата 2.7.2013, 07:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Dmitriy9, не надо бездумно переписывать всякий бред.  

Вы посмотрели, где и для чего используется в VBA ключевое слово Return? 


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Dmitriy9
Дата 2.7.2013, 07:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 31.5.2013

Репутация: нет
Всего: нет



Это находится в общем модуле, переменная и функция
Код

Public frmName 

Public Function Form_Name(ByVal frm As Form)
For Each MyForm In Forms
frmName = MyForm.Name
Next MyForm
End Function


Так обращаюсь к функции
Код

Private Sub Form_Load()
frmName = Form_Name(Me)
End Sub
 в переменную выдает пустое значение
PM MAIL   Вверх
Akina
Дата 2.7.2013, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(Dmitriy9 @  2.7.2013,  08:56 Найти цитируемый пост)
Это находится в общем модуле, переменная и функция

1) Русским по белому ж говорил - "для определения переменных уровня проекта создайте ОТДЕЛЬНЫЙ модуль".
2) Почему не определён тип переменной?
3) Что, по твоему мнению, делает эта функция? почему именно это и как именно? ПОДРОБНО!

Цитата(Dmitriy9 @  2.7.2013,  08:56 Найти цитируемый пост)
Так обращаюсь к функции

А вот сфига бы ты решил, что на момент события Form_Load форма уже Loaded, а? ну надо же хоть немного головой-то думать?


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Dmitriy9
Дата 2.7.2013, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 31.5.2013

Репутация: нет
Всего: нет



Цитата
1) Русским по белому ж говорил - "для определения переменных уровня проекта создайте ОТДЕЛЬНЫЙ модуль".
 я и делаю это в отдельном модуле , просто назвал его общий
Цитата
2) Почему не определён тип переменной?
Код

Public frmName As String
 я и определяя и не определяя пробовал делать
Цитата
3) Что, по твоему мнению, делает эта функция? почему именно это и как именно? ПОДРОБНО!
 Функцию я нашел в интернете, она вроде возвращает название текущей формы....
Цитата
ПОДРОБНО!
 если бы я знал как правильно писать функции и все остальное, я бы не задавал здесь вопросов,...так как я на начальном этапе изучения VBA то я не знаю всех тонкостей языка.  По этому и прошу подсказок, что бы исправляться на начальном этапе

Цитата

А вот сфига бы ты решил, что на момент события Form_Load форма уже Loaded, а? ну надо же хоть немного головой-то думать?
 Это я решил потому что, вроде как форма нчала загружаться, и в этот момент я могу получить ее название. И если это не так ,то не обязательно было писать то что вы написали, лучше бы было если бы вы подсказали в каком событиии это лучше делать, я бы учел это на будущее. Я прошу помощи в объяснение, а не  критики
PM MAIL   Вверх
Akina
Дата 2.7.2013, 09:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



Цитата(Dmitriy9 @  2.7.2013,  10:21 Найти цитируемый пост)
я и делаю это в отдельном модуле , просто назвал его общий

Кто пишет - 
Цитата(Dmitriy9 @  2.7.2013,  08:56 Найти цитируемый пост)
Это находится в общем модуле, переменная и функция

Не жадничайте на этапе разработки. Потом, когда всё зашуршит, соберёте в кучу.

Цитата(Dmitriy9 @  2.7.2013,  10:21 Найти цитируемый пост)
Функцию я нашел в интернете, она вроде возвращает название текущей формы....

Нет.
Функция перебирает все открытые формы (причём в случайном по большому счёту порядке - хотя обычно получается, что в порядке загрузки), и запоминает имя каждой очередной формы (забывая при этом имя только что полученной предыдущей). Индус писАл...

Цитата(Dmitriy9 @  2.7.2013,  10:21 Найти цитируемый пост)
Я прошу помощи в объяснение, а не  критики 

А я вот хочу видеть самостоятельную работу. Попытки понять, что делает код, который скопипастен ХЗ откуда. Имею право, верно? а что вижу? скопировал, запустил, не работает, а-а-а-а!!! Описания функций - не смотрел, логику работы - не разбирал...

Помогать можно тому, кто работает. А кто сидит и  ждёт ответа - на того можно только лить ушаты критики и прочих субстанций.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Dmitriy9
Дата 3.7.2013, 08:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 17
Регистрация: 31.5.2013

Репутация: нет
Всего: нет



А вообще существует ли вообще эта функция что бы узнать имя формы, или я зря время трачу? После прочтения кучи статей и боли в глазах я начал сомневаться в ее существовании.

Это сообщение отредактировал(а) Dmitriy9 - 3.7.2013, 08:02
PM MAIL   Вверх
Akina
Дата 3.7.2013, 08:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 30
Всего: 454



У любого объекта есть куча свойств - в т.ч. и свойство Name.
А насчёт функции - вряд ли.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
bopoha
Дата 4.7.2013, 00:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1283
Регистрация: 10.5.2006
Где: Беларусь, Минск

Репутация: 21
Всего: 21



Dmitriy9, в Access есть такая штука, как CodeContextObject, при помощи которого можно узнать в рамках какого объекта выполняется данный метод/функция/процедура:
Код

...
    Dim frm     As Form
    Dim obj     As Object
    
    Set obj = CodeContextObject
    If obj Is Nothing Then Exit Function
    If Not TypeName(obj) Like "Form*" Then Exit Function
    
    Set frm = obj

    ... = frm.Name
....


Мне кажется, что если бы вы начали с конца, т.е. зачем это нужно, было бы проще.
PM MAIL WWW ICQ Skype GTalk   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "MS Access"
Akina
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] и [code=sql][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MS Access | Следующая тема »


 




[ Время генерации скрипта: 0.0923 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.