Hallo Leute,
wie kann ich über eine Optionsgruppe (mit 2 Optionen) in einem Formular die Abfrage filtern (bzw. ein Abfragefeld von der Abfrage) worauf das Formular als Datensatzquelle zugreift?
Konkret habe ich in der Abfrage "WkzBegleitkarten" ein Abfragefeld "Status" mit den Einträgen "in Bearbeitung, zurückgestellte, abgeschlossen,.. usw.
Im Formular möchte ich per Optionsgruppe zwischen den abgeschlossenen und allen offenen Datensätzen filtern.
Müsste über einen SQL Abfragefilter laufen, da ich im Formular noch nebenbei zwischen zwei verschieden Abteilungen mit einem "ME.Filter" arbeite. Und zwei Filter funzen doch nicht, oder ? ::)
Habe noch nie einen VBA SQL-Abfrage-Filter Code geschrieben :'( :'( :'(
Hallo,
um konkret das zu beantworten, solltest Du den SQL-String der Formularabfrage posten.
Wobei auch die Filterung per ME.Filter möglich wäre...
Prinzip:
.
.
.
Dim strKrit as String, strSQL as String
strSQL = "Select * from WkzBegleitkarten Where "
Select Case Me!optGruppe 'wenn die Optionswerte zu 1, 2 und 3 definiert sind
Case 1
strKrit = " [Status] ='in Bearbeitung' "
Case 2
strKrit = " [Status] ='zurückgestellte' "
Case 3
strKrit = " [Status] ='abgeschlossen' "
Case Else
strKrit = " 1=1 "
End Select
strSQL = strSQL & strKrit
Me.Recordsource = strSQL
.
.
.
btw: der Status gehört in eine Tabelle ausgelagert (normalisiert).
HAllo DF6GL,
erstmal vielen Dank für Deine Antwort!
Kann sein, dass ich es schlecht beschrieben habe.
Also mein geteiltes Formular hat als Datensatzquelle eine Auswahlabfrage, Name"09_WkzBegleitkarten", die aus 3 vierschieden Tabellen besteht. Natürlich basiert das Abfragefeld "Status" aus einer Tabelle
Im Formular filtere ich über Me.Filter die Abteilungen (auch mit einem Optionsfeld über VBA).
Nun möchte ich aber, wenn zum Beispiel nach den einzelnen Abteilungen A, B oder C gefiltert ist, ebenfalls die abgeschlossenen oder alle offenen Themen in dem Tabellenfeld "Status" (welches natürlich auch in der Auswahlabfrage enthalten ist) filtern.
z.B. nach zwei Fällen... die abgeschlossenen und die offenen.
CAse 1
abgeschlossene = abgeschlossene
CAse 2
offene = in Bearbeitung, zurückgestellt, warten auf Material
Und ich dachte mir jetzt, dass ich die AuswahlAbfrage, wo das TAbellenfeld Status enthalten ist, über einen VBA SQL filtern kann ?!?!?!?
Die Auswahlabfrage hat folgenden SQL String
SELECT [09_Wkzbegleitkarte].Werkzeugnummer, [09_Wkzbegleitkarte].Artikelbezeichnung, [09_Wkzbegleitkarte].[SAP Nummer], [09_Wkzbegleitkarte].[Werkzeug ID-Nummer], [09_Wkzbegleitkarte].Titel, [09_Wkzbegleitkarte].Änderungsverantwortlicher, [09_Wkzbegleitkarte].Formbauer, [09_Wkzbegleitkarte].Anlagen, [09_Wkzbegleitkarte].IDBegleitkarte, [09_Wkzbegleitkarte].ÄnderungsIDNummer, [09_Wkzbegleitkarte].Kostenstelle, [09_Wkzbegleitkarte].Liefertermin, [09_Wkzbegleitkarte].[Auszuführende Arbeiten], [09_Wkzbegleitkarte].[Ausgeführte Arbeiten], [09_Wkzbegleitkarte].[AA Datum], [09_Wkzbegleitkarte].Eingangsprüfung, [09_Wkzbegleitkarte].[EP Datum], [09_Wkzbegleitkarte].[ESP Prüfung], [09_Wkzbegleitkarte].[ESP Datum], [09_Wkzbegleitkarte].Status, [09_Wkzbegleitkarte].[Änderungs ID Nummer], [09_Wkzbegleitkarte].[Begleitkarten Nr]
FROM 09_Wkzbegleitkarte;
Hallo,
in der Tat, ziemlich verwirrend, deine Beschreibung...
Ist "09_WkzBegleitkarten" eine Abfrage oder eine Tabelle? Wo sind dann die 3 Tabellen?
Ist "09_WkzBegleitkarte" eine Abfrage oder eine Tabelle?
Zitatin dem Tabellenfeld "Status"
welchen Datentyp hat dieses Feld?
ZitatUnd ich dachte mir jetzt, dass ich die AuswahlAbfrage, wo das TAbellenfeld Status enthalten ist, über einen VBA SQL filtern kann ?!?!?!?
Die Auswahlabfrage IST ein SQL-String. Wenn Du filtern willst, musst Du der Abfrage (dem SQL-String) eine Where-Condition mitgeben. (So wie vorher gezeigt). Ob über VBA oder im Abfrageentwurf oder mittels Parameter ist egal.
Zeig mal den kompletten Code (auch die Filter-Prozeduren) , keine sinnlosen Fragmente und einen Screenshot des Beziehungsfensters.
Das Ganze kann wie gesagt auch über die Filter-Eigenschaft laufen. Die Filter-Eigenschaft ist auch nichts anderes als eine Where-Condition.
Me.Filter = "Abteilung ='A' and Status= 'abgeschlossene'"zeigt Dir alle Abteilungen "A" an, die den Status "abgeschlossene" haben.
Hallo,
@franz Zitatbtw: der Status gehört in eine Tabelle ausgelagert (normalisiert).
Was heisst "btw", das ist doch essentiell.
@shinoda70 Zitatz.B. nach zwei Fällen... die abgeschlossenen und die offenen.
Zwei lassen sich auch mit einem einfachen If...Else...End If ausdrücken
If Status = "abgeschlossen" Then
'mach was
Else 'müssen dann ja alle anderen Status sein
'mach was anderes
End Ifgruss ekkehard
Hallo,
@Ekkehart:
ZitatWas heisst "btw"
"btw" heißt, dass ich nebenbei anmerke, dass es essentiell ist, die Tabellen zu normalisieren :P ;) ;D 8)
Hallo Franz,
ja, Sorry wegen meiner Beschreibung. Hab das sehr verwirrend ausgedrückt.
09_WkzBegleitkarten ist eine Abfrage die ihre Daten aus einer weiteren Abfrage bezieht.
Aber Egal, denn...
DU hast mich mit Deinem ersten Beitrag auf den richtigen Weg gebracht!!
Es funktioniert mit folgendem Code
Private Sub Rahmen219_AfterUpdate()
Dim strSQL As String
Dim strKRIT As String
strSQL = "SELECT [09_Wkzbegleitkarte].Werkzeugnummer, [09_Wkzbegleitkarte].Artikelbezeichnung, [09_Wkzbegleitkarte].[SAP Nummer], [09_Wkzbegleitkarte].[Werkzeug ID-Nummer], [09_Wkzbegleitkarte].Titel, [09_Wkzbegleitkarte].?nderungsverantwortlicher, [09_Wkzbegleitkarte].Formbauer, [09_Wkzbegleitkarte].Anlagen, [09_Wkzbegleitkarte].IDBegleitkarte, [09_Wkzbegleitkarte].?nderungsIDNummer, [09_Wkzbegleitkarte].Kostenstelle, [09_Wkzbegleitkarte].Liefertermin, [09_Wkzbegleitkarte].[Auszuf?hrende Arbeiten], [09_Wkzbegleitkarte].[Ausgef?hrte Arbeiten], [09_Wkzbegleitkarte].[AA Datum], [09_Wkzbegleitkarte].Eingangspr?fung, [09_Wkzbegleitkarte].[EP Datum], [09_Wkzbegleitkarte].[ESP Pr?fung], [09_Wkzbegleitkarte].[ESP Datum], [09_Wkzbegleitkarte].Status, [09_Wkzbegleitkarte].[?nderungs ID Nummer], [09_Wkzbegleitkarte].[Begleitkarten Nr] FROM 09_Wkzbegleitkarte Where"
Select Case Me.Rahmen219
Case 1
strKRIT = "[Status] <> 'abgeschlossen'"
Case 2
strKRIT = "[Status] = 'abgeschlossen'"
End Select
strSQL = strSQL & strKRIT
Me.RecordSource = strSQL
End Sub
VIELEN DANK nochmal. Ihr Access-Profi-Jungs seid echt klasse :) :) :)
Viele Grüße aus Brandenburg
Michael
Hallooo Ekkehard,
danke für Deinen Tip.
Hab es hinbekommen, siehe oben.
Euch allen noch einen schönen Restsonntag :)
Hallo Franz,
Scheint ihn aber so oder so nicht zu interessieren :o
gruss ekkehard
Hallo,
ja, das ist leider unser Schicksal hier... :'(