Hallo allerseits ich hab ein Miniproblemchen.
Mein Code sieht folgendermaßen aus:
Private Sub NavigationButton39_Click()
Dim WhereCl As Variant
WhereCl = [frm_eig_rechnung_liste].rechnung_mod Is Not Null
DoCmd.BrowseTo acBrowseToForm, "frm_eig_rechnung_liste", "frm_main_formular.unterformular", WhereCl
End Sub
Ich möchte das ein Unterformular geladen wird (funktioniert auch)
es handelt sich hierbei um ein Listenformular.
Und nun möchte ich ihm sagen, dass er mir nur die Datensätze anzeigt, die in der Spalte "rechnung_mod" einen Inhalt haben.
Macht er aber nicht :D
I need Help :D
Hallo,
warum verwendest du BrowseTo und nicht openForm? Dort kannst du auch die Where Condition übergeben - was sich aber nicht auf die Datenherkunft des Listenfeldes (das meinst du wohl) bezieht sondern auf die Datenbindung.
Ich würde einen entsprechenden Wert als OpenArgs übergeben und in dem aufgerufenem Formular die Datenherkunft des Listenfeldes manipulieren. (vorher prüfen ob OpenArgs Null ist!)
Gruß Andreas
Bei OpenForm öffnet er doch ein neues Fenster, oder irre ich mich gerade - soll er ja nicht. Ausserdem liegt das Problem ja nicht im BrowseTo sondern in der Tatsache, dass er mir alle Datensätze listet und dort wo "WhereCl" ist, ist ja der Platz für eine WhereCondition vorgesehen :D Müsste nur wissen, wie die zu formulieren ist.
Leider ist mir das mit OpenArgs noch ein wenig zu hoch :D
Bin mit meinem VBA Wissen noch relativ am Anfang :D
Aso, Unterformular.
Und mit Listenformular meinst du bestimmt ein Formular in Endlosansicht?
Dann geht das ziemlich einfach:
Private Sub NavigationButton39_Click()
Dim WhereCl As String
Dim RecSource As String
RecSource = Me.UfoControl.Form.RecordSource
WhereCl = " Where rechnung_mod Is Not Null"
Me.UfoControl.Form.Recordsource = Left(RecSource, Len(RecSource) - 2) & WhereCl
End Sub
Was hast du als Recordsource im Formular? eine Abfrage oder nur Tabellennamen?
Bei Abfragen musst du nachsehen ob wirklich 2 Stellen am Ende wegmüssen oder nur 1.
Bei eine Tabelle musst du das entsprechend umschreiben:
Me.UfoControl.Form.Recordsource = "Select * From " & RecSource & WhereCl
Nochwas, wenn du das SourceObject des UnterformularControls ändern möchtest, kannst du das auch ganz einfach:
Me.UfoControl.SourceObject = "frm_eig_rechnung_liste"
Gruß Andreas
ich hab dir mal ein Beispiel gemacht als AccDB.
Gruß Andreas
@Hondo:
es geht hier ganz offensichtlich um ein Navigationsformular, evtl. kennst du das noch nicht?
@Rockbiest:
ZitatWhereCl = [frm_eig_rechnung_liste].rechnung_mod Is Not Null
DoCmd.BrowseTo acBrowseToForm, "frm_eig_rechnung_liste", "frm_main_formular.unterformular", WhereCl
Ich vermute, hier gibt es ein Problem mit der Syntax.
Auszug aus der Access-Hilfe:
ZitatBrowseTo(ObjectType, ObjectName, PathtoSubformControl, WhereCondition, Page, DataMode)
Beispiel:
DoCmd.BrowseTo ObjectType:=acBrowseToForm, _
ObjectName:="EventDS", _
PathToSubformControl:="Main.NavigationSubform", _
WhereCondition:="", _
Page:="", _
DataMode:=acFormEditZumindest das Kriterium wird vermutlich falsch erstellt, versuche es mal hiermit:
WhereCl = "rechnung_mod Is Not Null"sofern "rechnung_mod" der Name eines Datenfeldes des zu filternden Formulars ist.
Hallo,
dieses Navigationsgedöns ist doch das gleiche wie angeordnete Buttons und ein UnterformularControl, und das Navigationsunterformular ist eigentlich nix anderes als ein UnterformularControl und lässt sich genauso bedienen:
Private Sub NavigationButton39_Click()
Me.Navigationsunterformular.SourceObject = "frmTest"
Dim RecSource As String
Dim WhereCl As String
RecSource = Me.Navigationsunterformular.Form.RecordSource
WhereCl = " Where rechnung_mod Is Not Null"
Me.Navigationsunterformular.Form.RecordSource = Left(RecSource, Len(RecSource) - 2) & WhereCl
End Sub
Vergiss DoCmd.BrowseTo, mit obiger Methode weisst du ganz genau was gemacht wird.
Gruß Andreas
BTW: vergleicht mal beide Codes von mir, ist doch haargenau das selbe.
Danke für die vielen Antworten :D
@MaggieMay
WhereCl = "rechnung_mod Is Not Null"
hat in der Tat funktioniert.....dabei hatte ich es schon einml auf die Weise probiert, keine Ahnung was ich damals falsch gemacht habe :)
Vielen Dank
Wenn das Thema erledigt ist bitte den gelöst-Link oben drücken.