title image


Smiley Viel lernen Du musst...
Hi,



ich gehe jetzt mal davon aus, daß die 22 Abfragen gleichartig aufgebaut sind, d.h. die gleichen Felder in der gleichen Reihenfolge liefern und sich nur in den Filterkriterien unterscheiden. Eigentlich brauchst Du dann nicht 22, sondern nur 1 Abfrage, die dann keine Kriterien enthält. Die Kriterien werden dann dynamisch dazugepackt. Das Ufo ist im Urzustand eingeblendet, hat aber keine (!) Datenquelle, denn die wird erst hier generiert und dem Ufo übergeben.



Ich gehe weiterhin davon aus, daß die Radiobuttons in einer (!) Optionsgruppe stehen und nicht "autonom" im Formular liegen. Stehen sie außerhalb einer Optionsgruppe, schließen sich die Buttons nicht gegenseitig aus. Das wird aber wohl erwünscht sein (?).



Naja. Unter diesen Prämissen gehst Du wie folgt vor:

BeimKlicken auf Reportgenerieren:



Dim strSQL as String

Dim dteDatumVon as Date

Dim dteDatumBis as Date

Dim aryCriteria(0 to 1) as String 'Array der max. 2 Kriterien (0 = Zweigstelle, 1 = Zeitraum)



'Fallunterscheidung für Buttons. Wenn die Abfragen unterschiedlich sind,

'trage sie hier ein. Wenn nicht, gibt es nur den Fall NULL (Aussteigen)

'oder den Case Else, der dann strSQL mit der einen Abfrage belegt

Select Case Me.DeinOptionsgruppenname

Case 1

strSQL = "DeineAbfrage für Radiobutton 1"

Case 2

strSQL = "DeineAbfrage für Radiobutton 2"

Case 3

strSQL = "DeineAbfrage für Radiobutton 3"

Case 4

strSQL = "DeineAbfrage für Radiobutton 4"

'... etc für die anderen Knöppkes 5-22.

Case NULL 'keine Option Oberpunkt1 gewählt.

MsgBox "Bitte Auswahl treffen!"

Exit Sub '---------------------------------------------------------------------->Exit

End Select





'Nun Kriterien generieren



'Zweigstelle (Annahme: Kombifeld heißt cboZweigstelle, Tabellenfeld heißt

'Zweigstelle, ist Textfeld)

If Len("" & Me.cboZweigstelle) 0 Then

aryCriteria(0) = "Zweigstelle = '" & Me.cboZweigstelle & "'"

End If



'Gemeinsames Kriterium aus Monat Von, -Bis und Jahr (geh ich da recht in der

'Annahme?)

'Monat von (Annahme: Zahl 1-12, nur zusammen mit Monat Bis und Jahr)

'Monat Bis (Annahme: Zahl 1-12, nur zusammen mit Monat Von und Jahr )

'Jahr (Annahme: Zahl, nur zusammen mit Monat Von und MonatBis)

'Wenn andere Kombinationen möglich, hier abfangen mit AND, OR, XOR etc.

If Len("" & Me.cboMonatVon) 0 XOR Len("" & Me.cboMonatBis) 0 XOR Len("" & Me.cboJahr) 0 Then

'alle drei Zeitraum-cbos ausgefüllt. zeitraum-Kriterium generieren

'Datumswerte generieren

'1. des Von-Monats = Beginndatum

dteDatumVon = DateSerial(Me.cboJahr, Me.cboMonatVon,1)

'Tag vor erstem des Folgemonats des Endemonats = Ultimo Endemonat = Endedatum

dteDatumBis = DateSerial(Me.cboJahr, Me.cboMonatBis+1,1)-1

'Eintragen des Datumskriteriums in 2. Array-Satz

aryCriteria(1) = "Datumsfeld BETWEEN " & clng(dteDatumVon) & " AND " & clng(dteDatumBis)

Else

'ein oder zwei der Zeitraum-cbos ausgefüllt. Unzulässig.

MsgBox "Bitte Von-Bis und Jahr angeben!"

Exit Sub '---------------------------------------------------------------------->Exit

End If





'Zeitraum- und Zweigstellenkriterium stehen nun im Array.



'Montieren des gesamten SQL-Ausdrucks

If Len("" & strWHEREZweigstelle) = 0 AND Len("" & strWHEREZeitraum) = 0 Then

'keine Kriterien. Buttonabhängige Abfrage ohne Filter laufen lassen.

Else

'Kriterien gewählt. Zusammenbauen mit AND-Verknüpfung (Alle Bedingungen müssen erfüllt sein). Wenn nur eine gewählt, wird auch nur eine ausgegeben.

For Each strKrit In aryCriteria()

strWHERE = strWHERE & " AND (" & strKrit & ") "

Next strKrit

'Abschneiden des führenden " AND (" (5 STellen)

strWHERE & Mid$(strWHERE, 5)

strSQL = strSQL & " WHERE " & strWHERE

End If



'Nun ist der gesamte SQL in strSQL enthalten. Zuweisen ans Ufo und ausführen.

Me.DeinUfoControl.Form.Recordsource = strSQL

Me.DeinUfoControl.Requery







Ungetestet, alles nur so aus dem Hirn. Kann Fehler enthalten. Aber so in der Art halt. Und die Namen musst Du an Deine Verhältnisse anpassen.



Und erwäge mal, ob es nicht lohnt, die Buttons 1-22 durch ein (!) tabellenbasiertes Combo zu ersetzen, das die 22 Möglichkeiten anbietet. Vorteil: Platzsparend, durch Tabelleneintrag erweiterbar, Name und Datenquelle könnten in einer Steuertabelle stehen und wären somit besser wartbar. Bedenke: wo heute 22 Knöppkes sind, die ja einen Wertvorrart haben (z.B. Report-Vorlagen etc), können auch mehr draus werden.

Martin
Atrus2711 ät gmx punkt net
Meine Beiträge zu MS Office betreffen stets Version 2000,
wenn nicht anders angegeben.




geschrieben von


Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: