Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: datekk am Juli 30, 2014, 11:43:04

Titel: Berichtsoptionen
Beitrag von: datekk am Juli 30, 2014, 11:43:04
Hallo. Ich möchte gern von einem Formular aus einen Bericht öffnen - ein Angebot. Allerdings soll man für dieses Angebot ein paar Optionen angeben können. Ich stelle mir das so vor, dass ich im Hauptformular (frm_Haupt) eine Schaltfläche betätige, worauf sich ein kleines Popup Formular (frm_Optionen) öffnet mit zwei Checkboxen und wieder einer Schaltfläche. Wenn die Checkboxen aktiviert sind, sollen im Bericht (Angebot) bestimmte Felder aus oder eingeblendet werden. Beim klick auf die Schaltfläche des Popup öffnet sich dann der Bericht und kann mit den entsprechend vorher festgelegten Layout gedruckt werden.

Wie stelle ich das via VBA Code an?

LG
datekk
Titel: Re: Berichtsoptionen
Beitrag von: DF6GL am Juli 30, 2014, 13:06:54
Hallo,

übergib dem Bericht eine "Kennung" (Zahl oder Text) entspr. der Checkbox-Kombination über den Openargs-Parameter der Openreport-Methode. Im Bericht in dessen "Öffnen"-Ereignis(Prozedur) stellt Du entspr. der Openargs-Eigenschaft die Textfelder ein.
Titel: Re: Berichtsoptionen
Beitrag von: datekk am Juli 30, 2014, 13:57:42
:) Der Franz... Danke :)

Wie immer brauch ich mal ein konkretes Codebeispiel... Von Openargs hab ich eben zum ersten Mal gehört..

Ich dachte man kann das ggf. mit Variablen regeln welche man dann beim öffnen des Berichts abfragt. Also das Formular frm_Optionen beinhaltet z.B. die Felder ChkBox1 und ChkBox2. Deren Wert wird an eine Variable gegeben z.B. Chk1 und Chk2... beim öffnen des Berichts wird dann mittels If Routine der Zustand der Felder behandelt und entsprechend die Felder aktiviert.. also z.B.

If Chk1 = 1 Then

me.Feld1.visible = True
else
me.feld1.visible = false

End If

Ich bin bloß nicht sicher, wie ich die Variable vom Formular auf den Bericht übergebe oder bleibt diese erhalten? Oder nutzt man hier die TempVars?
Titel: Re: Berichtsoptionen
Beitrag von: DF6GL am Juli 30, 2014, 14:14:07
Hallo,

naja....

'Im Formular:

.
Sub Drucken_Click()
Docmd.Openreport "rptBericht1",,,"AngebotID =" & Me!AngebotID , Openargs:=  2 * Me!chkbox1  + Me!chkbox2   
End Sub


'und Im Bericht:

Sub Report_Open()

If not Isnull(Me.Openargs) Then

Select Me.Openargs

Case 0
'Tu das , wenn kein Haken zu sehen ist

Case -1
'Tu das, wenn nur Chkbox2 angehakt

Case -2
'Tu das, wenn nur Chkbox1 angehakt

Case -3
'Tu das, wenn beide angehakt

Case else

'tu hier am besten gar nichts mehr...

End Select

End if

End Sub
Titel: Re: Berichtsoptionen
Beitrag von: datekk am Juli 30, 2014, 14:27:54
Mh... ok.. probier ich mal aus.. aber vorher noch eine Frage....

Ich öffne ja das Optionen Formular aus dem Hauptformular heraus via

Private Sub Befehl308_Click()

DoCmd.OpenForm "frm_Optionen", acNormal

End Sub


Das Optionen-Formular enthält aber gar nicht das Feld [AngebotID] welches als Filter dienen soll. Dieses Feld befindet sich im Hauptformular. Die Funktion me.AngebotID wird hier sicher eine Fehlermeldung bringen. Wie ist dies zu lösen?

UND:

Bei der Variante der OpenArgs sieht es so aus, als ob man für jeden Fall eine Lösung braucht - also für alle "Häkchenkonstellationen". Kann man nicht jedes Häkchen für sich bewerten? Es sollen nämlich mehr werden als 2 Checkboxen.. ggf. 4 oder 6...
Titel: Re: Berichtsoptionen
Beitrag von: DF6GL am Juli 30, 2014, 14:36:11
Hallo,

Lösung 1:  Die AngebotID wird auf die Gleiche Art und Weise an das Optionen-Formular übergeben

Lösung 2: Man bezieht sich nicht auf "Me" (das akt. Form, in dem der Code läuft, sondern mit explizter Schreibweise auf das Hauptform:

,"AngebotID =" & Forms!Hauptformular!AngebotID,


wobei ein extra Form für nur diese Optionen eher überkanditelt  ist.
Titel: Re: Berichtsoptionen
Beitrag von: datekk am Juli 30, 2014, 14:43:47
ZitatUND:

Bei der Variante der OpenArgs sieht es so aus, als ob man für jeden Fall eine Lösung braucht - also für alle "Häkchenkonstellationen". Kann man nicht jedes Häkchen für sich bewerten? Es sollen nämlich mehr werden als 2 Checkboxen.. ggf. 4 oder 6...
Titel: Re: Berichtsoptionen
Beitrag von: datekk am Juli 30, 2014, 15:41:38
wieso wird eigentlich bei docmd.openform das Formular geöffnet und bei docmd.openreport der Bericht gedruck? Wie kann man denn eigentlich den Bericht nur anzeigen lassen?
Titel: Re: Berichtsoptionen
Beitrag von: DF6GL am Juli 30, 2014, 16:57:43
Hallo,

"drucken" ist der standard-Fall. Um den Bericht in Voransicht zu öffnen ,  heißt das so:

Docmd.Openreport "rptBericht1",acPreview,,"AngebotID =" & Me!AngebotID , Openargs:=  2 * Me!chkbox1  + Me!chkbox2   
Titel: Re: Berichtsoptionen
Beitrag von: MaggieMay am Juli 30, 2014, 20:09:43
Hallo,
Zitat von: datekk am Juli 30, 2014, 15:41:38
wieso wird eigentlich ...
wieso schaust du dir die Beschreibung der Funktionen nicht in der Access-Hilfe an, ehe du sie benutzt?!
Titel: Re: Berichtsoptionen
Beitrag von: datekk am August 01, 2014, 12:41:10
Ich habe das Thema anderweitig gelöst und zwar dank Franz seinem Vorschlag, den Pfad auf die Steuerelemente der geöffneten Formulare zu nutzen. Das Funktioniert sehr gut. Somit kann ich im Bericht auf die Felder der geöffneten Formulare zugreifen und mit IF, Then, Else super arbeiten. Bei geschlossenen Formularen habe ich die Variablenfunktion Public gefunden und diese funktioniert auch super.

Danke :)