Neuigkeiten:

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

Mobiles Hauptmenü

Parameter zur Steuerung von Formular in Bericht übernehmen

Begonnen von Erklärbär, Januar 12, 2011, 22:05:15

⏪ vorheriges - nächstes ⏩

Erklärbär

Hallo Leute,

ich hab da so eine Idee wo ich aber leider noch keinen Ansatz habe und wahrscheinlich ist es sogar einfach.

Szenario:
In einem Formular sind 3 Befehlsschaltflächen, die jeweils denselben Bericht öffnen sollen.
Der Bericht soll dann auch direkt gedruckt werden. Abhängig davon welcher Knopf gedrückt wurde werden auf dem Bericht andere Formatierungen, Kommentarfelder usw. ein-/und ausgeblendet. Kurz gesagt ich brauche einen Parameter um Kriterien für "if then" usw. abhängig vom Knöpchen zu haben.

Anmerkung:
Ich will dabei keine Hilfsfelder im Datensatz anlegen .. das wäre auch zu einfach.

Gibt's da eine Möglichkeit? ähnlich wie ein Funktionsaufruf oder globale Variablen?

Gruß
Ralph

database

Hallo Ralph,

ich hoffe schon, dass ich dich richtig verstanden habe, aber du löst das Click-Ereignis jedes einzelnen Button aus,
damit hast du ja schon eine eindeutige Unterscheidung welchen Button du geklickt hast - wozu dann noch eine Unterscheidung per If...Then... (wo sollte denn dies auch stattfinden?)

ZitatGibt's da eine Möglichkeit? ähnlich wie ein Funktionsaufruf oder globale Variablen?

Du kannst natürlich aus dem Click-Ereignis heraus auch eine Sub oder Function aufrufen und dieser abhängig davon von welchem Button aus dieser Aufruf stattfindet eine Kennung mitgeben - in etwa so:


Private Sub Button1_Click()

   Call DeineSub(1)
   ...
   ..
   .
   DoCmd.OpenReport .....

End Sub


... und die aufgerufene Sub in Etwa so:


Private Sub DeineSub(ByVal Wert as Integer)

   Select Case Wert
       Case 1
           Tu was 1
       Case 2
           Tu was 2
       Case 3
           Tu was 3
    End Select

End Sub


Erklärbär

.. ich war noch nicht fertig  :D

richtig im Formular kann ich natürlich beim Click Ereignis unterscheiden.
Die machen alledings immer denselben Bericht.
Die "if then s" will ich im Bericht verwenden.

eine Idee hatte ich auch noch:
Ein Textfeld im Formular mit einem Wert belegen und diesen dann aus dem Bericht heraus abfragen.
Dann funktioniert das allerdings nur von einem Formular aus. Nach Möglichkeit soll es davon aber unabhängig sein.

Gruß
Ralph

oma

Hallo Ralph,,

verstehe noch nicht ganz; warum machst du denn nicht für 3 Befehlsschaltflächen einfach auch drei verschiedene Berichte ?

Gruß Oma
nichts ist fertig!

Erklärbär

..nein, nicht drei verschiedene Berichte sondern ein Bericht mit  bedingter Formatierung.

Ich könnte zwar 3 Berichte machen, müsste aber dann bei Änderungen jeden Bericht anfassen.
Die 3 Berichte haben nur kleine Unterschiede, wie z.B. dass ein Feld gar nicht und ein anderes in anderer
Formatierung gedruckt wird.


bahasu

#6
Moin,

wenn Du bei Deinem Button den Bericht mit einem Openargs-Parameter aufrufst ,
z. B. DoCmd.OpenReport , "DeinBericht", , , , , Parameter_1       ' (siehe acess Hilfe: Ausdruck.OpenReport(ReportName, View, FilterName, WhereCondition, WindowMode, OpenArgs)
kannst Du den übergebenen Wert im Bericht auswerten:

z.B.
if Me.OpenArgs= "1"  then
  ...mache Formatierung 1
else
  Me.DeinFeld.Visible = false  ' Feld im Bericht ausblenden
end if

Im Bericht können diese Zeilen z.B. beim Ereignis "Beim Öffnen" eingetragen werden.

Statt if .. then .. else ist auch select ... nutzbar, wenn die Bedingungen zahlreicher sind.

Harald
Servus

Erklärbär

Hallo Harald,
danke für die Antwort.
Das war genau das wonach ich gesucht habe.

Gruß
Ralph