Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

Formular-Sub in Modul auslagern

Begonnen von datekk, April 07, 2016, 21:53:35

⏪ vorheriges - nächstes ⏩

datekk

Hallo,

ich möchte in mehreren Formularen so ein ähnliche Sub nutzen:

Private Sub Form_Load()
Dim ctl As Control
For Each ctl In Me.Controls
ctl.Locked = True
Next
End Sub


Nun möchte ich aber sehr gern dies in ein Modul auslagern und beispielsweise einfach über den Call Befehl aufrufen. Mein Problem ist, dass ich mich mit den Variablentypen nicht auskenne und ich auch nirgends vernünftige Variabel-Programmbeispiele finde die man sich mal anschauen kann und die das erklären.

Problem bei den Modulen ist ja, dass hier der me.controls Befehl nicht ausgeübt werden kann. Dieses Me.Controls muss also sicher über eine öffenliche Variable an das Modul transferiert werden um dort als Variable ausgeführt werden zu können.

Ziel ist, dass ich einfach von beliebigen Formularen aus das Modul aufrufen möchte und dadurch alle Felder gesperrt werden sollen ohne jedesmal den gleichen Code in das Formular selbst schreiben zu müssen.

PS: Woher bekomme ich eine gute Anleitung, wie man mit Variablen umgeht. Man kann ja ganze Datenbanken in Variablen darstellen, aber ich brauche da eine gute Einführung..

Danke  :-*
datekk

Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

DF6GL

Hallo,

um diese lokale Prozedur "global" zur Verfügung zu stellen , muss der Code zunächst in ein Standard-Modul platziert und als Public (mit "vernünftigen" Namen) deklariert werden.

Die Prozeduren (Funktionen und Subs) haben Argumente (Variablen-Liste in der Kopfzeile mit Datentyp-Deklaration) , die als "Verbindungskanäle" zwischen dem Prozedurcode und der aufrufenden Codezeile fugieren (dort "Parameter" genannt).



ZitatPublic Sub LockControls(MyForm as Form)  ' Sub akzepiert  ein Form-Objekt
Dim ctl As Control
For Each ctl In MyForm.Controls
ctl.Locked = True
Next
End Sub


und Aufruf:

Sub Form_Load()
Call LockControls (Me)  ' hier wir das akt. Form-Objekt als Parameter mitgegeben
End Sub
In dieser Fu
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

MaggieMay

Hallo,

dazu möchte ich zu bedenken geben, dass nicht jedes Steuerelement die Eigenschaft "Locked" hat. Es müsste also entweder die Abfrage des ControlType oder eine Fehlerbehandlung hinzugefügt werden.
Freundliche Grüße
MaggieMay

datekk

Ok danke. Da komme ich erstmal weiter. Aber eine Frage, warum muss vor der Sub "Public" stehen. Wenn ich es weg lasse, funktioniert es auch.
Access 2016 mit SQL Server Backend. Bereits umgesetzt: Access mit MS SQL Backend,  ADODB Formularbindung, Streamen von Dateien zum SQL Server und zurück (Filestream), Drag&Drop Dateiupload zum Server, CTI / TAPI Integrierung in Access Anwendung - Nutzung auch über Remote Desktop, selbst aktualisierendes Access Frontend auf entfernten Rechnern (Upgrade). Berichte / Kreuztabellen mit SQL Server Backend, Mail Tagging, Outlook Steuerung über Access und umgekehrt // Grundwissen in .Net Core & Blazor Apps

MaggieMay

Hi,

Public ist die Default-Einstellung.
Freundliche Grüße
MaggieMay