Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!

Mobiles Hauptmenü

WhereCondition in DoCmd.BrowseTo acBrowseToForm

Begonnen von -Rockbiest-, Mai 01, 2015, 12:49:38

⏪ vorheriges - nächstes ⏩

-Rockbiest-

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

Hondo

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

-Rockbiest-

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

Hondo

#3
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

Hondo

ich hab dir mal ein Beispiel gemacht als AccDB.
Gruß Andreas

MaggieMay

@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.
Freundliche Grüße
MaggieMay

Hondo

#6
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

Hondo

BTW: vergleicht mal beide Codes von mir, ist doch haargenau das selbe.

-Rockbiest-

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

Hondo

Wenn das Thema erledigt ist bitte den gelöst-Link oben drücken.