Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

VBA SQL-Abfrage-Filter Code

Begonnen von shinoda70, Juli 04, 2020, 15:08:14

⏪ vorheriges - nächstes ⏩

shinoda70

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  :'(  :'(  :'(

DF6GL

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).
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

shinoda70

#2
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;

DF6GL

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.




Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

Beaker s.a.

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 If

gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

DF6GL

Hallo,

@Ekkehart:
ZitatWas heisst "btw"

"btw" heißt, dass ich nebenbei anmerke, dass es essentiell ist, die Tabellen zu normalisieren  :P  ;)  ;D  8)
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access

shinoda70

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

shinoda70

Hallooo Ekkehard,

danke für Deinen Tip.
Hab es hinbekommen, siehe oben.

Euch allen noch einen schönen Restsonntag  :)

Beaker s.a.

Hallo Franz,
Scheint ihn aber so oder so nicht zu interessieren  :o
gruss ekkehard
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

DF6GL

Hallo,

ja, das ist leider unser Schicksal hier... :'(
Viele Grüße vom Bodensee
Franz, DF6GL

Hilfestellung:  http://www.access-o-mania.de/forum/index.php?topic=6969.msg118738#msg118738

Links und Tipps:
1.   http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/
1a. http://www.tinohempel.de/info/info/datenbank/normalisierung.htm
1b. https://support.office.com/de-de/article/Grundlagen-des-Datenbankentwurfs-eb2159cf-1e30-401a-8084-bd4f9c9ca1f5#bmterms
2.   http://www.donkarl.com
3.   https://web.archive.org/web/20201201233522/http://www.dbwiki.net/
4.   http://www.access-tutorial.de/
5.   http://www.tty1.net/smart-questions_de.htm
6.   http://access.joposol.com/accept

Last but not least:   < F1 > für Hilfe
;) Learning by doing not by spoon-feed ;)

Tipp: Find and Replace for Access