Zum Inhalt springen

[ACCESS] Endlosformular per VBA


Pittiplatsch

Empfohlene Beiträge

Auf ein neues!

Ich habe ein Formular mit 2 Dropdown-Feldern. In diesen werden erst der Nachname und dann der Vorname des gewünschten Mitarbeiters ausgewählt. Die meisten Mitarbeiter bei uns haben mehrere Vorgänge (Jahresverträge, MAE, ...).

Meine Frage ist:

Wie stelle ich es an, daß nach der Auswahl des Mitarbeiters ein Endlosformular erstellt und angezeigt wird, in welchem die einzelnen Daten angegeben sind?

Link zu diesem Kommentar
Auf anderen Seiten teilen

also ich würd mal so versuchen:

ein formular erstellen mit einer drop-down list die die name der mitarbeiter enthält (tabellenhinhalt)

und einen button oder so... wenn du den drückst fügst du einfach neue elemente hinzu und passt die länge/breite des forumlars an...

also so

/* pseudo code */

onButtonClick ()

name = getdata(sqlstring('select info1 from tabelle1 where ...')

for each c in name

mynameobj = createlabel()

mynameobj.inhalt = c.value

mynameobj.xpos = ...

mynameobj.ypos = ...

....

irgendwie so... oder du erstellst einen bericht ... wenn du nicht unbedingt ein endlosforumar brauchst...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hab es jetzt anders versucht.

Alserstes hab ich ein Endlosformular erstellt, in dem alle Datensätze enthalten sind.

Dann hab ich über VBA folgenden Code verwendet


Private Sub ma_vorname_AfterUpdate()

Dim sqlstr As String
Dim db As DAO.Database
Dim liste As DAO.Recordset

Set db = CurrentDb

Set liste = db.OpenRecordset("SELECT Personalnummer FROM tbl_Personal WHERE Name='" & nachname & "' AND Vorname='" & ma_vorname & "'", dbOpenForwardOnly)

Forms("Vorgangsdaten").Controls("ufrm_Vorgangsdaten.Personalnummer").Form.Filter = liste
Forms("Vorgangsdaten").Controls("ufrm_Vorgangsdaten.Personalnummer").Form.FilterOn
ufrm_Vorgangsdaten.Visible = True

End Sub[/PHP]

Aber genau hier hänge ich schon wieder.

Ich bekomme die Meldung:

Laufzeitfehler 2465

Microsoft Access kann das in Ihrem Ausdruck angesprochene Feld "ufrm_Vorgangsdaten.Personalnummer" nicht finden.

Das Feld existiert aber !!!!!!!!

Was ist nun schon wieder falsch ????? :mod:

Link zu diesem Kommentar
Auf anderen Seiten teilen

Voraussetzungen:

eine Tabelle mit den Mitarbeitern drin, Schlüsselfeld heißt id (AutoWert). Ich hab nur ein Kombinationsfeld verwendet, in dem Name+Leerzeichen+Vorname aus der Tabelle Mitarbeiter angezeigt wird. Schlüsselspalte ist das Feld id der Tabelle Mitarbeiter.

Wenn Du es mit zwei Kombinationsfeldern machen willst, musst Du beim ersten in der AfterUpdate-Funktion die Datenherkunft für das zweite ändern, das war mir jetzt auf die schnelle zu umständlich.

Folgende Lösung:

Beim Auswählen des Namens aus der Liste wird eine in einem extra Modul geparkte Funktion ausgeführt. Die Mitarbeiter-id wird als Parameter übergeben.


Private Sub Kombinationsfeld1_AfterUpdate()

form_auftraege_aktualisieren (Kombinationsfeld1)

End Sub

Die Funktion schließt das Formular und ruft es mit einem entsprechenden Kriterium neu auf. Das Formular zeigt Daten aus der Tabelle auftraege an, wobei die Tabelle auftraege über das Feld mitarbeiter mit dem Feld id der Tabelle mitarbeiter verknüpft ist.

Public Sub form_auftraege_aktualisieren(form_auftraege_where)

DoCmd.Close acForm, "auftraege", acSaveNo

DoCmd.OpenForm "auftraege", , , "mitarbeiter=" & Trim(Str(form_auftraege_where))

End Sub

Vielleicht geht's auch eleganter, aber es funktioniert.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Das im Unterfromular (ufrm_Vorgangsdaten) angesprochene Steuerelement trägt den Namen Personalnummer.

Selbst wenn ich jetzt schreibe

Forms("Vorgangsdaten").Controls("ufrm_Vorgangsdaten.Personalnummer").Form.Filter = liste 
Forms("Vorgangsdaten").Controls("ufrm_Vorgangsdaten.Personalnummer").Form.FilterO[/PHP]

bringt mir das Programm die Fehlermeldung mit dem Fehlercode 2465.

Also an der Namensvergabe liegt es nicht,wäre auch zu schön gewesen.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hi, Maulwurf_der_Schlaue

wäre es dann nicht so :

Forms("Vorgangsdaten").Controls("Personalnummer").Form.Filter

So einfach ist das nicht.

Mein Hauptformular heist Vorgangsdaten.

Das darin enthaltene Unterformular heißt ufrm_vorgangsdaten.

Die Dropdownfelder befinden sich im Hauptformular.

Sobald Name und Vorname in diesen DropDownfeldern ausgewählt wurden, soll im Unterformular ein Filter angewendet werden, d.h. es sollen alle Vorgänge zu dieser einen Person selektiert und angezeigt werden.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...