MS-Office-Forum

Zurück   MS-Office-Forum > Microsoft Access & Datenbanken > Microsoft Access
Registrieren Forum Hilfe Alle Foren als gelesen markieren

Banner und Co.

Antworten
Ads
Themen-Optionen Ansicht
Alt 11.01.2019, 12:53   #1
hipfzwirgel
Neuer Benutzer
Neuer Benutzer
Standard Acc2016 - per VBA zugewiesener Wert in KombiFeld wird nicht aktiviert

Hallo VBA-Profis,
zunächst ein gutes neues Jahr. Ich habe folgende Frage:

in meiner HW-Verwaltung gibt es das Formular Artikelerfassung. Dieses ist gleichzeitig das zentrale Formular zur Verwaltung der erfassten Hardware.
Hier gibt es u.a. das Texfeld Kategorie. Nun möchte ich per VBA(Buttonclick) die dort angezeigte Kategorie(z.B. Lenovo ThinkCentre) dem Kombinationfeld KombiKategorie auf dem Formular Suche_nach_Kategorie zuweisen. Das habe ich bereits gecodet und geht. Wenn das Formular dann per VBA(vorher angeführter Buttonklick) geöffnet wird, steht die Kategorie(Lenovo ThinkCentre) schon im Kombifeld drin.

Wie kann ich nun die Abfrage, auf die das Kombifeld verweist aktualisieren, dass mit dem zugewiesenen Wert die Tabelle auf Suche_nach_Kategorie mit allen Geräten der Kategorie(Lenovo ThinkCentre) gefüllt wird.

Zur weiteren Erklärung sei hier angemerkt, dass wenn ich das Formular Suche_nach_Kategorie manuell öffne und eine Kategorie manuell im Kombinationsfeld auswähle(ist dann Kriterium in der Abfrage), die Abfrage per

Private Sub KombiKategorie_Change()

Me.Requery

End Sub


neu eingelesen/ausgeführt wird und die genannte Tabelle im Formular gefüllt wird. Im Grunde will ich also den manuellen Vorgang "Kategorie im Kombifeld auswählen > anklicken > alle Geräte werden angezeigt" automatisieren.

Geändert von hipfzwirgel (11.01.2019 um 12:58 Uhr).
hipfzwirgel ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.01.2019, 13:21   #2
LuUe
Neuer Benutzer
Neuer Benutzer
Standard

Meines Wissens wird die Change Prozedur nicht aufgerufen, wenn Inhalte per VBA geändert werden. Sprich du müsstest die Schritte entsprechend nach der Änderung selber ausführen.

Füg in deine Prozeduren mal Debug.Print *Formularname:Prozedurname* ein, dann kannst du besser nachvollziehen was aufgerufen wird.
LuUe ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.01.2019, 14:02   #3
hipfzwirgel
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo LuUe,

vielen Dank für deine Antwort. Ich habe 2 Fragen hierzu:

1. gibt es eine VBA-Möglichkeit die Change-Prozedur aufzurufen
2. Das mit dem Debug.Print bewirkt nichts. Wie genau muss ich das einfügen. Leider kenne ich den Befehl nicht.
hipfzwirgel ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.01.2019, 15:29   #4
LuUe
Neuer Benutzer
Neuer Benutzer
Standard

Zitat:

1. gibt es eine VBA-Möglichkeit die Change-Prozedur aufzurufen

Naja, du könntest dir eine sub anlegen, die du sowohl in der Change Prozedur aufrufst als auch in der Prozedur, die deine Werte ändert

Zitat:

2. Das mit dem Debug.Print bewirkt nichts. Wie genau muss ich das einfügen. Leider kenne ich den Befehl nicht.

Hast du den Direktbereich Strg+G bzw. Ansicht->Direktfenster geöffnet?
Ohne den sieht man nix, bzw. wenn man nix sieht wird die sub nicht aufgerufen in der dein Debug.Print steht.

Grundsätzlich empfiehlt es sich imho immer bei jeder sub/function ein Debug.Print mit Formname:Prozedurname einzufügen, dann kann man ganz gut mitlesen was passiert (oder halt auch nicht )
LuUe ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 11.01.2019, 15:48   #5
gpswanderer
MOF Guru
MOF Guru
Standard

Hall,
das Change Ereignis scheint mir da eher ungeeignet. Ich würde "Nach Aktualisierung verwenden.
Code:

Private Sub KombiKategorie_AfterUpdate()
   Me.Requery
End Sub
Man kann dann auch aus einem andern VBA Code diesen Ereigniscode auch anstoßen, einfach durch die Zeile:
Code:

KombiKategorie_AfterUpdate
Ohne das Klammerpaar.
Eine extra Funktion braucht es da nicht.

__________________

Gruß
Klaus
Office2016, Win10
gpswanderer ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 14.01.2019, 11:14   #6
LuUe
Neuer Benutzer
Neuer Benutzer
Standard

Zitat:

Eine extra Funktion braucht es da nicht.

Funktionieren tut das, ich kenn es jetzt nur aus anderen Programmiersprachen, dass es eher als schlechter Stil gesehen wird, wenn man EventHandler direkt aufruft und nicht über das Event.

Vielleicht aber auch deshalb, weil bei den meisten Sprachen immer das Event mit übergeben wird?!
LuUe ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.01.2019, 16:28   #7
hipfzwirgel
Threadstarter Threadstarter
Neuer Benutzer
Neuer Benutzer
Standard

Hallo GPSWanderer,

ich habe das eben mal versucht. Im Formular "Suche_nach_Kategorie"
die Sub KombiKategorie_AfterUpdate() eingefügt und im Formular Artikelerfassung
beim ButtonClick die Zeile KombiKategorie_AfterUpdate(auch mit Forms!Suche_nach_Kategorie.KombiKategorie_AfterUpdate getestet).

Es erscheint der Fehler Sub oder Function nicht definiert, bzw.
Laufzeitfehler 2465: Anwendungs- oder objectdefinierter Fehler.

Was mache ich denn da falsch?
hipfzwirgel ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.01.2019, 16:45   #8
maikek
MOF Guru
MOF Guru
Standard

Wenn du die Sub aus einem anderen Formular aufrufst, musst du sie als Public deklarieren (also statt "Private Sub ... " "Public Sub ... ").
maike

__________________

Bitte dein Thema auf erledigt setzen, wenn's durch ist!
MOF Access Stammtisch in Bremen
maikek ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Alt 15.01.2019, 16:52   #9
Ohrkester
MOF Koryphäe
MOF Koryphäe
Standard

Servus,
• eine Private Sub innerhalb eines Formularmodules:
Code:

 Call SubName
• eine Public Sub in einem anderen geöffneten Formular:
Code:

Call Forms("Formularname").SubName
Ungeprüft auch
Code:

Call Forms("Formularname").combiFeld_AfterUpdate()
oder
Code:

Call Forms("Formularname").combiFeld_AfterUpdate
• eine Public Sub in einem globalen Modul:
Code:

    Call SubName
• Evtl erforderliche nicht optionale Argumente müssen natürlich beim Aufruf mit übergeben werden!

Geändert von Ohrkester (15.01.2019 um 17:03 Uhr).
Ohrkester ist offline  
verlinken auf Del.icio.us Diese Seite zu Mister Wong hinzufügen
Antworten Auf Beitrag antworten
Ads
Antworten


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Besucher: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge anzufügen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

vB Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.
Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:17 Uhr.


Partner und Co.
Access-Paradies -Alles rund um die Datenbank Microsoft Access -Code -Programme-Tools -Tipps   Kostenlose Tipps & Tricks, Downloads und Programme   www.kulpa-online.com - Tipps - Tricks - Tutorials - Meinungen - Downloads uvm...   vb@rchiv · Willkommen in der Welt der VB Programmierung   Access-Garhammer - Hier finden Sie jede Menge Beispiel-Datenbanken zu Access und mehr ...   mcseboard.de   Die Top Seite für Excel-VBA-Makros uvm.

Powered by: vBulletin Version 3.6.2 (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.

Copyright ©2000-2018 MS-Office-Forum. Alle Rechte vorbehalten.
Copyright ©Design: Manuela Kulpa ©Rechte: Günter Kramer
Eine Verwendung der Inhalte in anderen Publikationen, auch auszugsweise,
ist ohne ausdrückliche Zustimmung der Autoren nicht gestattet.