Access-o-Mania

Access-Forum (Deutsch/German) => Tabelle/Abfrage => Thema gestartet von: mad am August 29, 2020, 09:33:04

Titel: Abfragekriterium in Bottom-Ereignisprozedur
Beitrag von: mad am August 29, 2020, 09:33:04
Hallo Zusammen,
habe derzeit eine Abfrage für einen Bericht der über ein Kriterium wie folgt gefiltert wird:

...
WHERE (((tblRegistrierungLehrg.StatusRegID_F)=1) AND ((Personal.statusID_P)=1 Or (Personal.statusID_P)=2));
...

Meinen Bericht rufe ich über folgende Ereignisprozedur auf:
Private Sub btnberLehrg_Click()
On Error GoTo Err_Vorschau__ber_LehrgaengeMeldung_Click

    Dim stDocName As String

    stDocName = "ber_LehrgaengeMeldung"
    DoCmd.OpenReport stDocName, acPreview, , WhereCondition:="[LehrTitel] = Forms!frm_Lehrgaenge!LehrTitel"


Exit_Vorschau__ber_LehrgaengeMeldung:
    Exit Sub

Err_Vorschau__ber_LehrgaengeMeldung_Click:
    MsgBox Err.Description
    Resume Exit_Vorschau__ber_LehrgaengeMeldung
       
End Sub

Nun würde ich gerne dies Abfrage für mehrere Berichtsvarianten die über verschiedene Bottoms aufgerufen werden verwenden.

Wie kann ich nun den Kriteriumsteil der Abfrage,
WHERE (((tblRegistrierungLehrg.StatusRegID_F)=1)in meine Ereingisprozedur einbauen?

Könnte mir dazu jemand Hilfestellung geben?


Gruss
mad
Titel: Re: Abfragekriterium in Bottom-Ereignisprozedur
Beitrag von: Beaker s.a. am August 29, 2020, 12:23:57
@mad
Verlagere den Code in eine öffentliche Function, auf die alle Berichte
Zugriff haben (allgem. Modul). Beim Buttonklick rufst du diese auf und
übergibst die benötigten Daten (Berichtsname, Kriteriumsstring).
gruss ekkehard
Titel: Re: Abfragekriterium in Bottom-Ereignisprozedur
Beitrag von: mad am August 29, 2020, 19:52:10
Hallo,

ist damit gemeint die Abfrage in den Code zu verlegen???

Public Function Lehrg()
Dim strSQL As String

strSQL = "SELECT tblLehrgang.LehrgangID, tblLehrgang.OrtID_F, tblLehrgang.LehrgangTitelID_F, Personal.NameP, tblLehrgangTitel.LehrgangTitelID, tblLehrgangTitel.LehrTitel, tblLehrgangTitel.LehrgTitelKz, Ortsteile.PLZ, Ortsteile.Ort, Gemeinde.Gemeinde, tblRegistrierungLehrg.RegLehrgID, tblRegistrierungLehrg.PID_F, tblRegistrierungLehrg.LehrgangID_F, tblRegistrierungLehrg.StatusRegID_F, Personal.GebDatum, Personal.Namekenn, Personal.Adresse, Personal.HausNr, Ortsteile.Ortkenn, Personal.statusID_P, tblLehrgang.LehrgBeginn, tblLehrgang.LehrgEnde, tblLehrgang.Lveranstalter FROM tblLehrgangTitel INNER JOIN (tblLehrgang INNER JOIN (((Gemeinde INNER JOIN Ortsteile ON Gemeinde.GemeindeID = Ortsteile.GemeindeID_F) INNER JOIN Personal ON Ortsteile.OrtID = Personal.OrtID_F) INNER JOIN tblRegistrierungLehrg ON Personal.PID = tblRegistrierungLehrg.PID_F) ON tblLehrgang.LehrgangID = tblRegistrierungLehrg.LehrgangID_F) ON tblLehrgangTitel.LehrgangTitelID = tblLehrgang.LehrgangTitelID_F &"
'WHERE Personal.statusID_P = 1 Or Personal.statusID_P = 2
       
End Function

Oder bin ich auf dem Holzweg??
Beim Debuggen kommt zumindestens kein Fehler.


Gruss
mad

Titel: Re: Abfragekriterium in Bottom-Ereignisprozedur
Beitrag von: Beaker s.a. am September 01, 2020, 21:19:04
@mad
Nein. Die Abfrage(n) sind ja DS-Herkunft der Berichte.
Public Sub DruckeBerichte(sDocName As String, sWhereCond As String)
    DoCmd.OpenReport stDocName, acPreview, , WhereCondition:=sWhereCond
End Sub
Aufruf
Private Sub DeinButton_Click()
    Call DruckeBericht "DeinReport", "DeineWhereCondition"
End Sub

gruss ekkehard
Titel: Re: Abfragekriterium in Bottom-Ereignisprozedur
Beitrag von: mad am September 06, 2020, 11:12:09
Hallo,

Modul "mdlDrucken" habe ich wie beschrieben angelegt:
Option Compare Database
Option Explicit

Public Sub DruckeBerichte(stDocName As String, sWhereCond As String)
    DoCmd.OpenReport stDocName, acPreview, , WhereCondition:=sWhereCond
End Sub

den Aufruf wie folgt angewendet:

Private Sub btnberLehrg_Click()

    Call DruckeBerichte "ber_LehrgaengeMeldung", WhereCondition:="[LehrTitel] = Forms!frm_Lehrgaenge!LehrTitel"
           
End Sub

Funktioniert aktuell noch nicht!
Beim Kompilieren wird ein Syntaxfehler angezeigt, ohne weitere Beschreibung und die Zeile wird rot dargestellt.
Die erweiterung der WhereCondition
Zitat von: undefined'WHERE Personal.statusID_P = 1 Or Personal.statusID_P = 2
müsste auch noch rein.

Dürfte ich nochmals um Unterstützung bitten?

Gruss
mad
Titel: Re: Abfragekriterium in Bottom-Ereignisprozedur
Beitrag von: Beaker s.a. am September 06, 2020, 11:21:55
...,  WhereCondition:="[LehrTitel] = " & Forms!frm_Lehrgaenge!LehrTitel & " AND (Personal.statusID_P = 1 Or Personal.statusID_P = 2)"Falls der Code im gleichen Form abläuft reicht auch
... Me.LehrTitel ...
Titel: Re: Abfragekriterium in Bottom-Ereignisprozedur
Beitrag von: DF6GL am September 06, 2020, 13:34:22
Hallo,



Public Sub DruckeBerichte(stDocName As String, sWhereCond As String)
    DoCmd.OpenReport stDocName, acPreview, , sWhereCond
End Sub


den Aufruf wie folgt angewendet:

Private Sub btnberLehrg_Click()

    Call DruckeBerichte ("ber_LehrgaengeMeldung", "Personal.statusID_P in (1,2)  And [LehrTitel] ='" & Me!LehrTitel & "'")
           
End Sub


Und warum überhaupt den Umweg über eine Modul-Sub?


Private Sub btnberLehrg_Click()
   DoCmd.OpenReport "ber_LehrgaengeMeldung", acPreview, , "Personal.statusID_P in (1,2)  And [LehrTitel] ='" & Me!LehrTitel  & "'"
End Sub


wobei vorausgesetzt ist, dass "Lehrmittel" den Datentyp TEXT besitzt.
Titel: Re: Abfragekriterium in Bottom-Ereignisprozedur
Beitrag von: mad am September 06, 2020, 18:27:45
Hallo,

danke vorab für eure Unterstützung.

Beaker,
habe den Code wie von Dir beschrieben ergänzt,
Private Sub btnberLehrg_Click()
Call DruckeBerichte "ber_LehrgaengeMeldung", WhereCondition:="[LehrTitel] = " & Forms!frm_Lehrgaenge!LehrTitel & " AND (Personal.statusID_P = 1 Or Personal.statusID_P = 2)"
End Sub

Dann kommt "Fehler beim Kompilieren: Erwartet:Anweisungsende", siehe Bild.

DF6GL,
habe auch Deine Variante
Call DruckeBerichte ("ber_LehrgaengeMeldung", "Personal.statusID_P in (1,2)  And [LehrTitel] ='" & Me!LehrTitel & "'")getestet, dabei werden aber nur die Datensätze angezeigt die "statusID_P = 1" enthalten. Die "statusID_P = 2" werden nicht angezeigt.

Auch bei Deinem zweiten Vorschlag:
DoCmd.OpenReport "ber_LehrgaengeMeldung", acPreview, , "Personal.statusID_P in (1,2)  And [LehrTitel] ='" & Me!LehrTitel  & "'"werden nur die Datensätze die "statusID_P = 1" enthalten angezeigt.


Gruss
mad
Titel: Re: Abfragekriterium in Bottom-Ereignisprozedur
Beitrag von: DF6GL am September 06, 2020, 18:46:13
Hallo,
Zitatwerden nur die Datensätze die "statusID_P = 1" enthalten angezeigt.

Dann gibt es halt keine, auf die "2" und "Lehrtitel" zutreffen.


ZitatDie Erweiterung der WhereCondition
'WHERE Personal.statusID_P = 1 Or Personal.statusID_P = 2
müsste auch noch rein.


sagt nichts über die logische Verknüpfung aus.
Titel: Re: Abfragekriterium in Bottom-Ereignisprozedur
Beitrag von: mad am September 07, 2020, 16:34:46
Hallo Zusammen,

habe mal wieder vor lauter Bäumen den Wald nicht gesehen.
Hatte einen kleinen Schreibfehler nicht gesehen.
Funktioniert alles bestens.
Verwende auch beide Varianten/Vorschläge, um für event. zukünftige Themen gerüstet zu sein.

Danke nochmals in die Runde.

Gruss
mad