Hallo zusammen,
ich hoffe Ihr könnt mir weiter helfen da ich leider noch nicht viel Erfahrung mit Access gemacht habe.
Ich habe 2 Formulare ein Hauptformular (frmMenue) und ein Unterformular (ufrmBenutzer) . Jetzt bekomme ich immer den Fehler Parameterwert eingeben. Diesen möchte ich natürlich, das er diesen automatisch übergibt. Wenn ich meine Eingaben im Unterformular mache, funktioniert alles.
Meine Abfrage :
SELECT tblBenutzergruppen.BenutzergruppeID, tblBenutzergruppen.Benutzergruppe
FROM tblBenutzergruppen
WHERE (((tblBenutzergruppen.BenutzergruppeID) Not In (SELECT tblBenutzergruppen.BenutzergruppeID FROM tblBenutzergruppen INNER JOIN tblGruppenzuordnungen ON tblBenutzergruppen.BenutzergruppeID = tblGruppenzuordnungen.BenutzergruppeID WHERE (((tblGruppenzuordnungen.BenutzerID)=[Formulare]![ufrmBenutzer]![BenutzerID])))));
Wie kann ich die Abfrage ändern damit es auch im Hauptformular funktioniert.
Hallo,
die Referenz in der Where-Condition muss sich auf das Unterformular im Hauptformular beziehen, etwa so:
...=[Forms]![Hauptformular]![ufrmBenutzer]![BenutzerID]...
wenn "ufrmBenutzer" der Name des UFO-Steuerelementes im Hauptformular ist, das das Formular "ufrmBenutzer" anzeigt.
siehe: http://www.donkarl.com/?FAQ4.2
Hi DF6GL,
Leider bekomme ich es trotzdem nicht hin.
Ich versuche es mal besser zu beschreiben
In meinen Hauptformular frmMenue möchte ich mehrere Unterformulare mit dem ActivX Treeview Steuerelement öffnen. Der Code hierfür:
Private Sub ctlTreeview_NodeClick(ByVal Node As Object)
With ctlTreeview
Select Case .SelectedItem
Case "Benutzer"
Me.ufrmContainer.SourceObject = "ufrmBenutzer"
Dabei heißt das Unterformular Steuerelement ufrmContainer.
Jetzt möchte ich das "Formular" ufrmBenutzer in Unterformularsteuerelement ufrmContainer laden.
Im "Formular" ufrmBenutzer habe ich zwei Listenfelder
Einmal istZugewiesen und IstNichtZugewiesen nach dem Bsp Access im Unternehmen "Benutzer Verwaltung mit verschlüsselten Kennwörtern" (http://access-im-unternehmen.de/Benutzerverwaltung_mit_verschluesselten_Kennwoertern/)
ist zugewiesen:
SELECT tblBenutzergruppen.BenutzergruppeID, tblBenutzergruppen.Benutzergruppe, tblGruppenzuordnungen.BenutzerID
FROM tblBenutzergruppen INNER JOIN tblGruppenzuordnungen ON tblBenutzergruppen.BenutzergruppeID = tblGruppenzuordnungen.BenutzergruppeID
WHERE (((tblGruppenzuordnungen.BenutzerID)=[Forms]![ufrmBenutzer]![BenutzerID]));
istNichtZugewiesen:
SELECT tblBenutzergruppen.BenutzergruppeID, tblBenutzergruppen.Benutzergruppe
FROM tblBenutzergruppen
WHERE (((tblBenutzergruppen.BenutzergruppeID) Not In (SELECT tblBenutzergruppen.BenutzergruppeID FROM tblBenutzergruppen INNER JOIN tblGruppenzuordnungen ON tblBenutzergruppen.BenutzergruppeID = tblGruppenzuordnungen.BenutzergruppeID WHERE (((tblGruppenzuordnungen.BenutzerID)=[Forms]![ufrmBenutzer]![BenutzerID])))));
Mit einen dritten Listenfeld (LisBenutzerAuswaehlen) wähle ich den Benutzer aus
Abfrage :
(LisBenutzerAuswaehlen)
SELECT tblBenutzer.BenutzerID, [Nachname] & ", " & [Vorname] AS Benutzer
FROM tblBenutzer
ORDER BY [Nachname] & ", " & [Vorname];
Der Code für das Formular ufrmBenutzer:
'===============================================================================================================
' Doppelklick auf IstZugewiesen Listenfeld
'===============================================================================================================
Private Sub lstZugewiesen_DblClick(Cancel As Integer)
Dim db As DAO.Database
Set db = CurrentDb
If Not IsNull(Me!BenutzerID) And Not IsNull(Me!lstZugewiesen) Then
db.Execute "DELETE FROM tblGruppenzuordnungen WHERE BenutzerID = " & Me!BenutzerID & " AND BenutzergruppeID = " & Me!lstZugewiesen, dbFailOnError
Me!lstZugewiesen.Requery
Me!lstNichtZugewiesen.Requery
End If
End Sub
'===============================================================================================================
' Doppelklick auf IstNichtZugewiesen Listenfeld
'===============================================================================================================
Private Sub lstNichtZugewiesen_DblClick(Cancel As Integer)
Dim db As DAO.Database
Set db = CurrentDb
If Not IsNull(Me!BenutzerID) And Not IsNull(Me!lstNichtZugewiesen) Then
db.Execute "INSERT INTO tblGruppenzuordnungen(BenutzerID, BenutzergruppeID) VALUES(" & Me!BenutzerID & ", " & Me!lstNichtZugewiesen & ")", dbFailOnError
Me!lstZugewiesen.Requery
Me!lstNichtZugewiesen.Requery
End If
End Sub
Private Sub Form_Load()
Me!LisBenutzerAuswaehlen = Me!LisBenutzerAuswaehlen.ItemData(0)
Me.Recordset.FindFirst "BenutzerID = " & Me!LisBenutzerAuswaehlen
End Sub
'===============================================================================================================
' Aktualisieren des Datensatz im Textfeld nach Listenfeld
'===============================================================================================================
Private Sub LisBenutzerAuswaehlen_AfterUpdate()
Me.Recordset.FindFirst "BenutzerID = " & Me!LisBenutzerAuswaehlen
End Sub
'===============================================================================================================
' Beim Anzeigen
'===============================================================================================================
Private Sub Form_Current()
Me!lstNichtZugewiesen.Requery
Me!lstZugewiesen.Requery
End Sub
Danke für deine Unterstützung !!!
Hallo,
wie gesagt, der UFO-Steuerelementname muss verwendet werden:
ZitatDabei heißt das Unterformular Steuerelement ufrmContainer.
Zitat
....WHERE (((tblGruppenzuordnungen.BenutzerID)=[Forms]!frmMenue!ufrmContainer![BenutzerID]));
ZitatMit einen dritten Listenfeld (LisBenutzerAuswaehlen) wähle ich den Benutzer aus
Wenn ich dies aber lese, befindet sich die BenutzerID im UFO im Listenfeld "LisBenutzerAuswaehlen", dadurch sollte es so lauten:
....WHERE (((tblGruppenzuordnungen.BenutzerID)=[Forms]!frmMenue!ufrmContainer![LisBenutzerAuswaehlen]));
Insgesamt würde ich keine Abfragen mit Referenzen auf Formular-Steuerelemente an Listenfelder zuweisen.
Die Zuweisung von zusammengebauten SQL-Strings an die Rowsource-Eigenschaft würde eher einer Kapselung dienen und unabhängig von Formularinstanzen machen. Dazu bedarf es aber einer weiteren Anpassung des Code in Bezug auf die Listenfelder.
ZitatJetzt möchte ich das "Formular" ufrmBenutzer in Unterformularsteuerelement ufrmContainer laden.
Das passiert doch schon hier:
Zitat
Me.ufrmContainer.SourceObject = "ufrmBenutzer"
Hi DF6GL,
also ich habe heute den ganzen Tag versucht mit deiner Lösung zu Probieren aber es funktioniert nicht.
Es kommt nach wie vor die Meldung. Parameterwert BenutzerID.
Auch mit deinen Ersten Lösungsvorschlag Me.Parent hat es nicht geklappt.
Kann ich dir vielleicht mal die aktuelle Datei per Email senden. Leider kann ich die Datei hier im Forum nicht anhängen.
Funktioniert doch mit deiner Lösung
Vielen Dank !!!