Wert aus Listenfeld in einem anderen Form als Filter Kriterium verwenden

02/11/2008 - 20:43 von Stefan Paesch | Report spam
Moin zusammen!

Architektur der DB:

Access 2003 als Frontend vor einem SQL 2005-Server. In einem Form,
dass an eine verknüpften Tabelle gebunden ist, wird entweder nach der
Kundennummer oder nach einem Aktenzeichen gefiltert.

Suche nach Kundennummer (4-stellig) oder Aktenzeichen:

Private Sub txtSuchen_AfterUpdate()

If Len(Me.txtSuchen) = 4 Then
'suche nach Kundennummer
Me![frm_Suchergebnis].Form.Filter = "KdNr= '" & Me.txtSuchen &
"'"
Me![frm_Suchergebnis].Form.FilterOn = True
Else
DoCmd.OpenForm "frm_ListenfeldAuswahl"
End If

Beim Else-Zweig wird ein Form (Popup) geöffnet, die eine in Access
lokal gespeicherte Tabelle nach dem Aktenzeichen filtert (Kundennummer
| Aktenzeichen). In diesem Form gibt es ein Listenfeld das beim öffnen
befüllt wird (funktioniert auch).

Mit dem Button OK wird der Wert aus dem Listenfeld in die Variable
vgKdNr gefüllt.

Private Sub btnOK_Click()

vgKdNr = Me!Listenfeld.Column(0)
DoCmd.Close
' ********************bis hier hin funktioniert alles****************
Forms![frm_Suchen].SetFocus
Forms![frm_Suchen]!txtSuchen.SetFocus
Forms![frm_Suchen].Form.Filter = "KdNr= '" & vgKdNr & "'"
Forms![frm_Suchen].Form.FilterOn = True

Dann will ich auf das ursprüngliche Form zurück und nach der vgKdNr
(Kundennummer) zu filtern.
Das funktioniert leider nicht.
Auch nicht, wenn ich in das "Ursprungsform" in das txtSuchen Feld
eintragen lasse und die Sub
Private Sub txtSuchen_AfterUpdate() manuell auslöse.

Ich hoffe, ich habe mich nicht so verdreht ausgedrückt.
Hat jemand eine Idee was ich falsch mache.

Vielen Dank für Eure Hilfe.

Stefan

Acc2007, Win XP pro
 

Lesen sie die antworten

#1 Peter Doering
03/11/2008 - 02:00 | Warnen spam
Hallo,

Stefan Paesch wrote:

Architektur der DB:

Access 2003 als Frontend vor einem SQL 2005-Server. In einem Form,
dass an eine verknüpften Tabelle gebunden ist, wird entweder nach der
Kundennummer oder nach einem Aktenzeichen gefiltert.

Suche nach Kundennummer (4-stellig) oder Aktenzeichen:

Private Sub txtSuchen_AfterUpdate()

If Len(Me.txtSuchen) = 4 Then
'suche nach Kundennummer
Me![frm_Suchergebnis].Form.Filter = "KdNr= '" & Me.txtSuchen &
"'"
Me![frm_Suchergebnis].Form.FilterOn = True
Else
DoCmd.OpenForm "frm_ListenfeldAuswahl"
End If

Beim Else-Zweig wird ein Form (Popup) geöffnet, die eine in Access
lokal gespeicherte Tabelle nach dem Aktenzeichen filtert (Kundennummer
| Aktenzeichen). In diesem Form gibt es ein Listenfeld das beim öffnen
befüllt wird (funktioniert auch).

Mit dem Button OK wird der Wert aus dem Listenfeld in die Variable
vgKdNr gefüllt.

Private Sub btnOK_Click()

vgKdNr = Me!Listenfeld.Column(0)
DoCmd.Close
' ********************bis hier hin funktioniert alles****************



Du solltest trotz allem das Formular nicht schliessen, sondern verstecken:

Me.Visible=False

Das hat den Nebeneffekt, dass der Code im HF weiterlaeuft, wo du dann aus
den Feldern des noch geoeffneten Formulars zugreifen kannst

Me.Filter = "KdNr= '" & _
Forms("frm_ListenfeldAuswahl")!Listenfeld.Column(0) & "'"
Me.FilterOn = True
DoCmd.Close acForm, "frm_ListenfeldAuswahl"

Gruss - Peter

Mitglied im http://www.dbdev.org
FAQ: http://www.donkarl.com

Ähnliche fragen