Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: -Rockbiest- am Mai 01, 2015, 12:49:38

Titel: WhereCondition in DoCmd.BrowseTo acBrowseToForm
Beitrag von: -Rockbiest- am Mai 01, 2015, 12:49:38
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
Titel: Re: WhereCondition in DoCmd.BrowseTo acBrowseToForm
Beitrag von: Hondo am Mai 01, 2015, 19:16:38
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
Titel: Re: WhereCondition in DoCmd.BrowseTo acBrowseToForm
Beitrag von: -Rockbiest- am Mai 01, 2015, 19:54:15
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
Titel: Re: WhereCondition in DoCmd.BrowseTo acBrowseToForm
Beitrag von: Hondo am Mai 01, 2015, 20:25:48
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
Titel: Re: WhereCondition in DoCmd.BrowseTo acBrowseToForm
Beitrag von: Hondo am Mai 01, 2015, 20:41:54
ich hab dir mal ein Beispiel gemacht als AccDB.
Gruß Andreas
Titel: Re: WhereCondition in DoCmd.BrowseTo acBrowseToForm
Beitrag von: MaggieMay am Mai 01, 2015, 23:55:12
@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:=acFormEdit


Zumindest 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.
Titel: Re: WhereCondition in DoCmd.BrowseTo acBrowseToForm
Beitrag von: Hondo am Mai 02, 2015, 08:22:22
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
Titel: Re: WhereCondition in DoCmd.BrowseTo acBrowseToForm
Beitrag von: Hondo am Mai 02, 2015, 08:23:23
BTW: vergleicht mal beide Codes von mir, ist doch haargenau das selbe.
Titel: Re: WhereCondition in DoCmd.BrowseTo acBrowseToForm
Beitrag von: -Rockbiest- am Mai 03, 2015, 14:26:38
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
Titel: Re: WhereCondition in DoCmd.BrowseTo acBrowseToForm
Beitrag von: Hondo am Mai 04, 2015, 09:53:50
Wenn das Thema erledigt ist bitte den gelöst-Link oben drücken.