none
Bericht über Formular drucken

    Frage

  • Hallo,

    ich habe eine DB in Access. In dieser DB bin ich nun auf der Formular & Berichtsebene tätig.

    Ziel: Anwender öffnet DB, dann öffnet sich f_Main. Dort kann er wählen ... Er nimmt "Länder drucken" kommt auf ein neues Formular. Das neue Formular beinhaltet zwei Kombinationsfelder: Region & Länder. Als erstes wählt er Region, danach die gelisteten Länder. Dann geht er auf "drucken".
    Nun soll Access zwei Berichte drucken, die ich schon erstellt habe. Die zwei berichte enthalten Informationen zu den Ländern, welche durch das Klicken im Formular ausgewählt werden.

    Fragen:
    - muss ich dafür überhaupt ein makro erstellen? (ich gehe mal davon aus)
    - wie stelle ich ein, dass vorher beide Kombinationsfelder ausgewählt sein MÜSSEN, bevor der Befehl drucken möglich ist?
    - wie muss ich das Makro aufbauen, damit die zwei berichte gedruckt werden können?


    Ich danke schon mal im voraus für eure Unterstützung :)

    lg dergrieche

    Mittwoch, 14. September 2011 11:14

Antworten

  • Erst einmal würde ich den Kombinationsfeldern Textfeldern und allen anderen dingen immer einen sprechenden namen geben - auch wenn es nur zum testen ist - da gibt es ganze regelwerke drüber wie man felder variablen... benennen sollte - ich halte es immer so das ich den feldern für mich sprechende name gebe ohne sonderzeichen oder äöüß usw am besten zusammen geschrieben - ich habe extra deutsche bezeichnungen gewählt dann komme ich nicht mit systemvariablen in konflikt und sehe das ich mit meinen feldern und variablen arbeite

    zb. dein Kombinationsfeld0 würde ich Komb_LandAuswahl nennen - dann weisst du kleich ah das ist so nen aufklappfeld :) wegen Komb und dort wähle ich mein Land aus - wie gesagt auch wenn es nur zum testen ist weil da kann man sich später dusselig suchen wenn man schrott namen vergeben hat

     

    für Region dann naklar Komb_RegionAuswahl

    ich würde so vorgehen du erstellst dir eine schaltfläche Schaltfl_BerichtDrucken du kannst dir dann über eigenschaften der schaltfläche unter dem Reiter Daten die Schaltfläche Aktiviert auf Nein setzen - so kann sie nicht geklickt werden

    zugriff auf die hilfe von vba und der eigenschaft bekommst du sehr schnell wenn du shift und F1 drückst dann ändert sich dein mausfeil zu einem mausfeil mit fragezeichen dann klickst du die eigenschaft an

    so kannst du zb  sehen das Schaltfl_BerichtDrucken.Enabled = True die schaltfläche Aktiviert und Schaltfl_BerichtDrucken.Enabled = False deaktiviert.

    so dann erstellst du

    Private Sub Komb_LandAuswahl_AfterUpdate()

    If IsNull(Komb_LandAuswahl) = False or IsNull(Komb_RegionAuswahl) = False Then
                Schaltfl_BerichtDrucken.Enabled = True
        Else
                Schaltfl_BerichtDrucken.Enabled = False
    End If

    End Sub

    dann benötigst du noch nicht einmal eine MSGBOX da er ja nur drucken klicken kann wenn etwas ausgewählt wurde

    dann noch beim Schaltfl_BerichtDrucken

    Private Sub Schaltfl_BerichtDrucken_Click()
    DoCmd.OpenReport "DeinBericht", acViewPreview
    End Sub

     

    so noch nicht alles weil wenn das Kombinationsfeld Region geändert wird soll er ja auch reagieren also

    Private Sub Komb_RegionAuswahl_AfterUpdate()

    Call Komb_LandAuswahl_AfterUpdate()

    End Sub

    mit Call rufts du einfach die obere rutine nochmals auf

    also das ist es im groben - es gehört dann noch fehlerrotinen rein und es gibt die mnöglichkeit wenn dein Kombinationsfeld ein String sprich text enthält wird er nicht Null enthalten sondern ein "" sprich es müsste dann If Komb_LandAuswahl <>"" or Komb_RegionAuswahl <>"" Then sein

     

    • Als Antwort markiert dergrieche Freitag, 16. September 2011 09:50
    Donnerstag, 15. September 2011 13:19

Alle Antworten

  • Ich würde bei der Schaltfläche drucken die beiden Kombinationsfelder abfragen ob die einen wert haben - am besten über vba

     

    oder du schaltest die schaltfläche durcken erst frei wenn in beiden Kombinationsfelder ein wert steht (auch vba)

     

    ich persönlich würde nicht mit makros anfangen da vba recht einfach ist

    zb. bericht drucken funktioniert

    DoCmd.OpenReport "NameDeinesBerichtes"

    und fertig

    abfragen des Kombinationsfelder  in etwa so

    If Kombinationsfelder1 ="" then

         msgbox "Wähle erst ein wert aus"

    Exit Sub

    End If

     

    einfach in der form anfangen der rest steht in der Onlinehilfe

    Mittwoch, 14. September 2011 13:15
  • Hi,

    danke für die schnelle Antwort.
    Das mit dem drucken funktioniert super, ich hätte nicht gedacht, dass das so einfach sein kann.

    Jedoch muss ich dafür jegliche Befehle kennen, die ich leider nicht drauf hab. Wo kann ich mir dazu "Wissen" holen?

    Das mit der If-Sache. Muss das "End If" nicht vor dem "Exit Sub" ? weil an sonsten müsste ich, wenn kein weiterer Befehl kommt, die Private Sub durch ein weiteres "Exit Sub" schließen.
    Und leider hat er durch den anderen Druckbefehl die Reports einfach im Layout ausgedruckt, OBWOHL ich ein Land ausgewählt hatte. Und natürlich hab ich das mit den Kombinationsfeldern nicht hingekriegt :D

    Hilfe? :)


    Lg

    Donnerstag, 15. September 2011 06:55
  • Ich denke mal wenn du mehr mit Access machen möchtest ist genau das der richtige weg - einfach anfangen - onlinehilfe daneben und google auf und dort suchen

    aber nicht nur mit strg-c und strg-v arbeiten sondern auch schauen was passiert da eigentlich

     

    so nun zu deiner if frage

    If Kombifeld = "" then

    MsgBox "soundso"

    Exit sub

    end if

    Hier schaut er nach ob im Kombinationsfeld etwas steht  wenn da "" drin ist mache eine meldung und verlasse du routine weil wenn etwas drin steht macht er die MSGBOX nicht und hinter dem end if sollte dann dein docmd.openreport kommen

     

    bei 2 Feldern sollte es in etwa so aussehen

    If Kombifeld1 = "" OR Kombifeld2 = "" then

    MsgBox "soundso"

    Exit sub

    end if

    DoCmd.OpenReport "Berichtsname"

    ansosten kopiere deine gesamte routine hier rein und ich bastel die dann eben um

    • Bearbeitet MCDPone Donnerstag, 15. September 2011 09:25
    Donnerstag, 15. September 2011 09:21
  • Danke dir! ich probier das aber zuerst selber.

    lg

    Donnerstag, 15. September 2011 09:40
  • So sieht es momentan aus: (habe das Alte gelöscht, bin ein Schritt weiter)


    Also. Das Formular ist wie folgt aufgebaut:

    - habe zwei Kombinationsfelder. Das Erste nennt sich "Region" (Text17) & das Zweite nennt sich "Land" (Kombinationsfeld0)
    - dann gibt es noch einen "DRUCKEN" Button
    - und letzt endlich ein Button zum "Schließen des Formulares"



    Wie soll es funktionieren?


    - Der Anwender öffnet das Formular

    - er kann NICHT "Drucken" betätigen, bevor er nicht ein Land ausgewählt hat. dafür habe ich schon gesorgt:

    Private Sub Befehl21_Click()
        If IsNull(Me!Kombinationsfeld0) Then
         MsgBox ("Wählen Sie bitte ein Land aus.")
        End
        Else
            DoCmd.OpenReport "b_CountryReport_01", acViewPreview
            DoCmd.OpenReport "b_CountryReport_02", acViewPreview
            MsgBox ("Druck abgeschlossen")
        End If
           
    End Sub

    -> um Land einzugeben, muss er vorher Region eingeben.

    Wenn ich nun aber das Formualr schließen möchte aber Region & Land ausgewählt sind (sind sie ja nach dem Drcuk immernoch, weil sie nicht zurück gesetzt werden) dann kommt eine Meldung von Access.
    Ich soll einen Parameterwert für Text17 eingeben, weil ich ja etwas schließen möchte, was ich noch nicht ganz verstanden habe?! -.-

    Dieser Sub dient dem Refresh:

    Private Sub Text17_BeforeUpdate(Cancel As Integer)
        Kombinationsfeld0.Requery
    End Sub


    Wie kann ich nun diesen Sub verändern, sodass diese Eingabeaufforderung vom arameterwert nicht mehr kommt?
    Er soll das Formular schließen ... EGAL was gerade dort läuft.
    (Der "schließen button" läuft über ein Makro)


    lg

    Donnerstag, 15. September 2011 12:40
  • Erst einmal würde ich den Kombinationsfeldern Textfeldern und allen anderen dingen immer einen sprechenden namen geben - auch wenn es nur zum testen ist - da gibt es ganze regelwerke drüber wie man felder variablen... benennen sollte - ich halte es immer so das ich den feldern für mich sprechende name gebe ohne sonderzeichen oder äöüß usw am besten zusammen geschrieben - ich habe extra deutsche bezeichnungen gewählt dann komme ich nicht mit systemvariablen in konflikt und sehe das ich mit meinen feldern und variablen arbeite

    zb. dein Kombinationsfeld0 würde ich Komb_LandAuswahl nennen - dann weisst du kleich ah das ist so nen aufklappfeld :) wegen Komb und dort wähle ich mein Land aus - wie gesagt auch wenn es nur zum testen ist weil da kann man sich später dusselig suchen wenn man schrott namen vergeben hat

     

    für Region dann naklar Komb_RegionAuswahl

    ich würde so vorgehen du erstellst dir eine schaltfläche Schaltfl_BerichtDrucken du kannst dir dann über eigenschaften der schaltfläche unter dem Reiter Daten die Schaltfläche Aktiviert auf Nein setzen - so kann sie nicht geklickt werden

    zugriff auf die hilfe von vba und der eigenschaft bekommst du sehr schnell wenn du shift und F1 drückst dann ändert sich dein mausfeil zu einem mausfeil mit fragezeichen dann klickst du die eigenschaft an

    so kannst du zb  sehen das Schaltfl_BerichtDrucken.Enabled = True die schaltfläche Aktiviert und Schaltfl_BerichtDrucken.Enabled = False deaktiviert.

    so dann erstellst du

    Private Sub Komb_LandAuswahl_AfterUpdate()

    If IsNull(Komb_LandAuswahl) = False or IsNull(Komb_RegionAuswahl) = False Then
                Schaltfl_BerichtDrucken.Enabled = True
        Else
                Schaltfl_BerichtDrucken.Enabled = False
    End If

    End Sub

    dann benötigst du noch nicht einmal eine MSGBOX da er ja nur drucken klicken kann wenn etwas ausgewählt wurde

    dann noch beim Schaltfl_BerichtDrucken

    Private Sub Schaltfl_BerichtDrucken_Click()
    DoCmd.OpenReport "DeinBericht", acViewPreview
    End Sub

     

    so noch nicht alles weil wenn das Kombinationsfeld Region geändert wird soll er ja auch reagieren also

    Private Sub Komb_RegionAuswahl_AfterUpdate()

    Call Komb_LandAuswahl_AfterUpdate()

    End Sub

    mit Call rufts du einfach die obere rutine nochmals auf

    also das ist es im groben - es gehört dann noch fehlerrotinen rein und es gibt die mnöglichkeit wenn dein Kombinationsfeld ein String sprich text enthält wird er nicht Null enthalten sondern ein "" sprich es müsste dann If Komb_LandAuswahl <>"" or Komb_RegionAuswahl <>"" Then sein

     

    • Als Antwort markiert dergrieche Freitag, 16. September 2011 09:50
    Donnerstag, 15. September 2011 13:19
  • Danke für deine Unterstützung, es funktioniert einwandfrei.

    Jetzt noch eine kleine Sache:
    - nach dem Drucken des Berichts für ein Land, gehe ich wieder auf Region und wähle eine andere aus, der Drucken Button bleibt aber aktiv und nicht grau.

    Wie richte ich es nun ein, dass er nachdem ich einmal gedruckt habe, dann gehe ich auf Region um eine andere Region oder auf Land um ein anderes Land in der Region auszuwählen und dazwischen, bevor ich mich nicht festgelegt habe immernoch grau ist? Wieso? weil wenn ich nun eine andere Region auswähle, setzt sich das Feld "Land" zurück, ABER der Druck Buton bleibt schwarz. so soll das aber nicht sein, der soll in dem moment wieder grau sein, bis wieder ein Land ausgewählt wird.


    lg :) und danke! es läuft echt super :)

    Freitag, 16. September 2011 09:12