Access-o-Mania

Access-Forum (Deutsch/German) => Bericht => Thema gestartet von: Hamsterbacke am Juli 12, 2015, 07:50:20

Titel: Bericht mit mindestens einem Datensatz auf letzter Seite
Beitrag von: Hamsterbacke am Juli 12, 2015, 07:50:20
Hallo erst einmal an alle

Ich habe mich hier neu angemeldet da ich bei meiner Accessdatenbank nicht mehr weiter komme und mit internetsuche und Hilfe seit Tagen an meinem letzten Problem nicht mehr weiter komme. Vielleicht kann mir hier ja einer helfen.

Wie ich in der Überschrift schon angedeutet habe, hab ich beim drucken meines Berichtes ein unschönes Problem. Wenn im Bericht auf einer Seite die maximale Anzahl an Datensätzen erreicht ist, erschein der Berichtsfuß auf der nächsten Seite ohne weiteren Datensatz. Im Prinzip eigentlich kein großes Ding, aber da im Berichtsfuß eine Gesamtsumme erscheint, schaut das irgendwie doof aus wenn auf der letzten Seite nur die Gesamtsumme ohne zumindest einem Datensatz steht.

Ich habe auch schon wie schon geschrieben einiges an Internetrecherche geleistet aber nur so Sachen wie
- Ein Datensatz pro Seite
- x Datensätze pro Seite
gefunden, die mir aber nicht wirklich weiterhelfen.

Ich würde es gerne so schaffen, das Access erkennt das der Berichtsfuß allein auf einer Seite steht und dann automatisch mindestens einen Datensatz (meinetwegen auch 2) mit auf die letzte Seite nimmt.
Ich hänge auch mal eine Musterdatenbank mit an.
Titel: Re: Bericht mit mindestens einem Datensatz auf letzter Seite
Beitrag von: bahasu am Juli 13, 2015, 09:44:49
Hi,

vielleicht hilft:
http://microsoft.public.de.access.narkive.com/CEc79Fjf/bericht-anzahl-datensatze-pro-seite

Harald

Nachtrag:
Um welchen report Deiner Beispiel-Datenbank geht es denn?
Titel: Re: Bericht mit mindestens einem Datensatz auf letzter Seite
Beitrag von: Hamsterbacke am Juli 20, 2015, 07:28:18
Hi danke für die Antwort.

Sorry das ich mich erst jetzt melde. Waren ein Paar Tage in der Türkei.
Ja die Seite hab ich schon gefunden aber so richtig funktioniert das nicht. Vor allem wenn ich die Option Bemerkung Drucken auswähle dann scheißt mir dieser Code den kompletten Bericht durcheinander. Das heißt mit der Option Bemerkung Drucken hab ich nur 2 Datensätze auf einer Seite, wenn ich die Option nicht gewählt habe dann interessiert Access der Code nicht.

Es geht eigentlich um alle Berichte außer die Adressberichte.

Gruß Markus
Titel: Re: Bericht mit mindestens einem Datensatz auf letzter Seite
Beitrag von: MaggieMay am Juli 20, 2015, 12:21:37
Hi,

vielleicht kannst du deinen Lösungsversuch auch noch zeigen?
Titel: Re: Bericht mit mindestens einem Datensatz auf letzter Seite
Beitrag von: Hamsterbacke am Juli 20, 2015, 13:30:37
Hallo

Ja gerne. Ich hab es einmal mit diesem Code probiert.

If Int(Me!txtCounter / 23) = Me.Pages - 1 Then
       Me!brkDetails.Visible = True
       Else
        Me!brkDetails.Visible = False
     End If

Hier ist es so das er auf die erste und die 2 Seite 23 Datensätze schreibt und wenn es mehr als 46 sind jeden weiteren Datensatz auf eine eigene Seite schiebt.
Ich habe auch schon -1 gegen 2 und 3 usw. ausgetauscht. Hier passiert nur das er den 2 "Block" mit 23 Datensätzen um eine Seite verschiebt.

Dann hab ich noch folgenden Code:

If Int(Me!txtCounter / 23) = Me!txtCounter / 23 Then
Me!brkDetails.Visible = True
       Else
        Me!brkDetails.Visible = False
     End If

Dazu hab ich noch ein Textfeld im Seitenfuß (nicht im Berichtsfuß) der mir die Datensätze auf der Seite zählt. Funktioniert soweit gut nur wenn ich auf einer Seite mehr als 2 Datensätze habe die mit Bemerkung gedruckt werden dann ignoriert er die Bedingung. Oder wenn ich die Datensatzmenge von 23 auf 24,25 oder sonst etwas ändere und dann doch wieder zu viele auf einem Datenblatt sind schieb er mir wieder ein Blatt mir nur einem Datensatz dazwischen. dann hab ich noch einen Seitenumbruch mit drinnen. Den hab ich mal oben mal unten Platziert im Detailbereich. Egal wo er sitz es Passiert nicht das was ich mir Vorstelle.

Gruß Markus
Titel: Re: Bericht mit mindestens einem Datensatz auf letzter Seite
Beitrag von: bahasu am Juli 25, 2015, 20:04:14
Hi,

noch an einer Lösung interessiert?
Dann nenn bitte den Bericht (siehe 13.07.2015) und gib Kriterien für die Datenauswahl vor und ich kann versuchen, den bei mir verwendeten Lösungsansatz an Deinen Daten auszuprobieren.

Ein Beispieldatenbank im access2003-Format erhöht die Chancen auf Hilfe. Es wäre also gut, wenn Du diese zur Verfügung stellen kannst.

Harald
Titel: Re: Bericht mit mindestens einem Datensatz auf letzter Seite
Beitrag von: Hamsterbacke am Juli 26, 2015, 07:59:39
Hallo,

ja ich suche immer noch nach einer Lösung. Mittlerweile habe ich schon rausgefunden das es wahrscheinlich daran liegt das mein Deteilbereich "dynamisch" ist. Das heißt ich hab ein Feld Bemerkung das ich nach bedarf aktivieren kann. Ich habe die Datenbank jetzt in einem älteren Format mit Angehängt.

Gruß Markus
Titel: Re: Bericht mit mindestens einem Datensatz auf letzter Seite
Beitrag von: MaggieMay am Juli 26, 2015, 12:01:41
Hi,

kann die Bemerkung auch mehrzeilig werden?
Titel: Re: Bericht mit mindestens einem Datensatz auf letzter Seite
Beitrag von: bahasu am Juli 26, 2015, 19:12:57
Hi Markus,

war doch etwas umfangreicher als ich aufgrund der Erfahrungen bei einer früheren Anwendung gedacht hatte.

Änderungen habe ich im Formular "frmStart" und im Bericht "rptArztbesuche" gemacht und zwei neue Module angelegt: "Deklarationen" und eine Alternative für "SendKeys", weil es ansonsten früher oder später zu weiteren "interessanten" Effekten beim Einsatz von SendKeys kommen würde.

Das Prinzip beruht darauf, dass in einem ersten Durchlauf der letzte Datensatz im Bericht ermittelt wird und dann beim zweiten Berichtsaufruf überprüft wird, ob dieser auf der vorletzten Seite steht. Wenn das der Fall ist, wird ein Seitenvorschub beim Erreichen vom letzten Datensatz initiiert.

1.
In einem Modul deklarieren
Public letzter_Datensatz As Long

2.
Im Ereignis, das den Bericht aufruft, eintragen:

    DoCmd.Echo False
    letzter_Datensatz = 0
    DoCmd.OpenReport "rptArztbesuche", acPreview, , , , letzter_Datensatz
           
    DoEvents
    Call mySendKeys("{END}", True)
    DoEvents

    DoCmd.Close acReport, "rptArztbesuche"
    DoEvents
    DoCmd.Echo True


    DoCmd.OpenReport "rptArztbesuche", acPreview, , , , letzter_Datensatz


3.
Eindeutige Identifizierung vom Datensatz im Bericht festlegen:
In Deinem Fall habe ich "ArztTerminID" in die Abfrage aufgenommen.

Die Bedingung (Jahr kleiner xxxx) in der Abfrage des Berichtes habe ich nur für Testzwecke eingebaut und kann wieder entfernt werden.


4.
Im Detailbereich das Feld "ArztTerminID" hinzufügen und unsichtbar machen.

Das Steuerelement zur Seitensteuerung entfernen!


5.
Weitere Zeilen im VBA-Bereich bei " Detailbereich_Format" hinzufügen:

    If Me.OpenArgs = 0 Then
        letzter_Datensatz = Me.ArztTerminID
   
    Else
        Me.Detailbereich.ForceNewPage = 0    ' kein Seitenvorschub
   
        If letzter_Datensatz > 0 Then
            If Me.ArztTerminID = letzter_Datensatz Then
                If Me.Page = Me.Pages - 1 Then
                    Me.Detailbereich.ForceNewPage = 1    ' vor Bereich
                End If
            End If
        End If
    End If


Generell gilt:
Am Anfang eines jeden Moduls einbauen:
Option Compare Database
Option Explicit
Das vereinfacht das Finden von Fehlern.

Hilft das?

Harald
Titel: Re: Bericht mit mindestens einem Datensatz auf letzter Seite
Beitrag von: Hamsterbacke am Juli 26, 2015, 21:28:11
Hallo,

@ MaggieMay: Nein mehr als eine zusätzliche Zeile kann die Bemerkung nicht werden.

@ Harald: Hut ab. Jetzt hab ich mir das was ich bis jetzt schon Programmiert habe, selbst erlern, angelesen und zusammenkopiert, was sehr viel Zeit und Kopfzerbrechen gekostet hat, aber das ist kaum zu beschreiben. Es Funktioniert. Respekt. Nochmals Hut ab.
Nur eine Sache gibt's noch. Ich hab jetzt heute Nachmittag die Arbeit von dir Studiert und versucht an die richtige stelle zu kopieren. Ich kann Ihn zwar an der stelle einfügen nur es funktioniert meine Datumsabfrage und die Namensfilterung nicht mehr. Und da wäre das zweite, wenn ich zwei Personen im Bericht habe funktioniert der Code nicht mehr (Wir sind 5Personen). Mein Code zur Personen und Datumsauswahl lautet:

Private Sub btn_PreView_Click()
' Bericht öffnen

On Error GoTo Err_rptArztbesuche_Click
   
    Dim querry As String
    querry = "True "
   
    If (Len(Me.cboPerson) <> 0) Then
        querry = querry & "AND personid=" & Me.cboPerson
    End If

    If (Len(gesperrtArzt) <> 1) Then
    querry = querry & "AND gesperrt=1" & Me.gesperrtArzt
    End If
   
    querry = querry & " AND (Besuchsdatum Between [Datum von] And [Datum bis] OR [Datum von] Is Null And [Datum bis] Is Null)"
   
    DoCmd.OpenReport "rptArztbesuche", acViewPreview, , querry
   
Exit_rptArztbesuche_Click:
    Exit Sub

Err_rptArztbesuche_Click:
    MsgBox Err.Description
    Resume Exit_rptArztbesuche_Click
   
End Sub

Wie schaff ich es die beiden Funktionen zusammen zu fügen?
Ich werde mich morgen in der Mittagspause auch noch einmal damit auseinandersetzen da ich dort 3 Bildschirme zur Verfügung habe was einfacher ist als mit einem Laptop. ;-)

Wenn ich noch eine Kurze Beschreibung der Funktion der Datenbank schreiben soll bitte bescheid geben.

Anbei noch die Datei mit 2 Personen und ein Bild wo ich markiert habe auf welche 2 Bedingungen sich der Bericht noch Bezieht (sie oben "Mein Code zur Personen und Datumsauswahl").
Titel: Re: Bericht mit mindestens einem Datensatz auf letzter Seite
Beitrag von: MaggieMay am Juli 29, 2015, 12:44:29
Hallo,
ZitatWie schaff ich es die beiden Funktionen zusammen zu fügen?
was hindert dich daran, den Filterstring beim Öffnen des Berichts zu übergeben, genauso wie du es vorher auch gemacht hast? Nun hast du nur noch einen weiteren Parameter - das ist alles.

BTW:
Anstelle vom Einsatz von "Echo = False" solltest du den Bericht beim ersten Mal lieber verborgen öffnen.
Auch dafür gibt es einen Parameter im OpenReport-Befehl. Einfach mal die Access-Hilfe dazu studieren.
Titel: Re: Bericht mit mindestens einem Datensatz auf letzter Seite
Beitrag von: bahasu am Juli 29, 2015, 13:47:10
Hi Maggy,

Zitat von: MaggieMay am Juli 29, 2015, 12:44:29
Anstelle vom Einsatz von "Echo = False" solltest du den Bericht beim ersten Mal lieber verborgen öffnen.
Auch dafür gibt es einen Parameter im OpenReport-Befehl. Einfach mal die Access-Hilfe dazu studieren.

Hatte ich ausprobiert, funktioniert aber nicht, da vermutlich das Senden von "Ende" nicht korrekt erfolgt (gilt zumindestens für a2003, a2007)

Zu dem anderen Thema komme ich, wenn ich etwas mehr Zeit habe.

Harald
Titel: Re: Bericht mit mindestens einem Datensatz auf letzter Seite
Beitrag von: MaggieMay am Juli 29, 2015, 13:53:16
Welches andere Thema? Es ist doch so, dass der Bericht bisher mit Filterkriterium geöffnet wurde, was in deinem Beispiel wohl nicht enthalten ist. Der Filterstring wird weiterhin erzeugt, nur beim Öffnen nicht weitergegeben. Diesen "Lapsus" sollte eigentlich auch ein Laie bei genauerem Hinsehen bemerken - und beheben! - können. ;-)
Titel: Re: Bericht mit mindestens einem Datensatz auf letzter Seite
Beitrag von: Hamsterbacke am August 06, 2015, 13:00:27
Hallo Harald

Ich habe es jetzt geschafft den Code so anzupassen das meine Filterkriterien auch mit berücksichtigt werden und es Funktioniert jetzt auch mit jeder Person.
Nun hab ich das ganze auf den zweiten Bericht anwenden wollen aber es klappt nicht. Ich habe es alles eins zu eins so Kopiert und gemacht wie du es beschrieben hast. Nur es funktioniert nicht. Hat es vielleicht mit Punkt 3 zu tun "In Deinem Fall habe ich "ArztTerminID" in die Abfrage aufgenommen." Welche Abfrage genau meinst du? Hat es vielleicht etwas mit dem "ArztterminID - Kopfbereich" im Bericht zu tun. Wie kann ich den, wenn es daran liegt, einfügen?
Oder liegt es an Punkt 4 "Das Steuerelement zur Seitensteuerung entfernen!" Wo finde ich diese Einstellung?

Mit Freundlichen Grüßen
Markus
Titel: Re: Bericht mit mindestens einem Datensatz auf letzter Seite
Beitrag von: bahasu am August 06, 2015, 19:19:58
Hallo Markus,

da Ferndiagnosen fehleranfällig sind, schlage ich vor, dass Du die aktuelle Datenbank (access2003) zur Verfügung stellst und beschreibst, was der zweite Bericht ist und wie Du diesen aufrufst.

Harald
Titel: Re: Bericht mit mindestens einem Datensatz auf letzter Seite
Beitrag von: Hamsterbacke am August 08, 2015, 14:36:35
Hallo Harald.

Sorry zweiter Bereich war etwas unglücklich ausgedrückt. Ich meinte damit das ich das ganze auf den zweiten Bericht -> Apothekenbesuche, anwenden wollte.
Ich hab den Code eingefügt im Bericht und zur Schaltfläche (Lupe Steuerausgleich). Hab diese noch auf die entsprechenden Felder angepasst so das der richtige Bericht öffnen. Kurz gesagt ich habe mich an deine Anleitung gehalten.
Nun ist es so das die Bedingung das auf der letzten Seite mindestens ein Datensatz steht beim öffnen des Berichtes ignoriert wird. (Datenbank öffnen -> klick auf die Drucker Schaltfläche-> auf der rechten Seite "Apotheke" -> klick auf Steuerausgleich). Ich glaube es hängt mit den Punkten 3 und 4 zusammen das ich da etwas verkehrt gemacht oder vergessen habe.

Gruß Markus
Titel: Re: Bericht mit mindestens einem Datensatz auf letzter Seite
Beitrag von: bahasu am August 08, 2015, 18:16:28
Hallo Markus,

geänderte Datenbank siehe Anhang.


1.
Generel gilt:
Verwende an jedem VBA-Anfang:
Option Compare Database
Option Explicit


2.
Den Bericht "tblApothekeBesuch" habe ich umbenannt in "rptApothekeBesuch".


3.
Im Formular "frmStart" habe ich beim Button "Fahrten zur Apotheke" dessen Namen von "Befehl2" umgeändert in "Fahrten_zur_Apotheke".
Für mich als Außenstehenden ist ein Programm noch schwerer verständlich, wenn keine verständlichen Namen verwendet werden. Das erfordert zeitaufwändiges Suchen.


Dort habe ich eingebaut:
Private Sub Fahrten_zur_Apotheke_Click()
    DoCmd.Echo False
   
    letzter_Datensatz = 0
    DoCmd.OpenReport "rptApothekeBesuch", acPreview, , , , letzter_Datensatz
           
    DoEvents
    Call mySendKeys("{END}", True)
    DoEvents

    DoCmd.Close acReport, "rptApothekeBesuch"
    DoEvents
    DoCmd.Echo True
   
    DoCmd.OpenReport "rptApothekeBesuch", acPreview, , , , letzter_Datensatz
End Sub


4.
Im Bericht "rptApothekeBesuch" habe ich die Gruppierung "ApoTerminID" inkl. Gruppenkopf hinzugefügt.

Diese hat das Ereignis "Beim Formatieren".
Dort habe ich eingetragen:

Private Sub Gruppenkopf0_Format(Cancel As Integer, FormatCount As Integer)
    If Me.OpenArgs = 0 Then
        letzter_Datensatz = Me.ApoTerminID
   
    Else
        Me.Detailbereich.ForceNewPage = 0    ' kein Seitenvorschub
   
        If letzter_Datensatz > 0 Then
            If Me.ApoTerminID = letzter_Datensatz Then
                If Me.Page = Me.Pages - 1 Then
                    Me.Detailbereich.ForceNewPage = 1    ' vor Bereich
                End If
            End If
        End If
    End If
End Sub

Zur Zeit werden zweimal Parameter-Eingaben angefordert. Das habe ich nicht abstellen können, da mir nicht klar ist, wann und womit Du Deine Datenauswahl vornimmst (siehe auch 5).


5. Mit Deiner "querry"-Zuweisung (siehe Befehl_35_Click) bin ich nicht klar gekommen.
Vor dem ersten "DoCmd.OpenReport" wird in "querry" etwas anderes eingetragen als vor dem zweiten "DoCmd.OpenReport"
Achtung: Dort wird noch die alte Berichts-Bezeichnung "tblApothekeBesuch" verwendet.
Diese habe ich dort nicht umgeändert.


Vielleicht helfen Dir aber diese Angaben, dass Du selber Deine Datenbank Deinen Wünschen entsprechend anpassen kannst.

Harald
Titel: Re: Bericht mit mindestens einem Datensatz auf letzter Seite
Beitrag von: MaggieMay am August 08, 2015, 20:10:14
Hi,

was das betrifft:
Zitat von: bahasu am August 08, 2015, 18:16:28
Verwende an jedem VBA-Anfang:
Option Compare Database
Option Explicit
so setze einmalig den Haken bei der VBA-Option "Variablendeklaration erforderlich", dann wird dieser Eintrag bei allen neuen Modulen (jeglicher Art) automatisch hinzugefügt. Bei bereits vorhandenen Modulen muss das allerdings manuell nachgetragen werden.
Titel: Re: Bericht mit mindestens einem Datensatz auf letzter Seite
Beitrag von: Hamsterbacke am August 09, 2015, 08:03:37
Guten Morgen Harald

In deiner neuen Beschreibung Punkt 4 war's was ich vergessen habe. Deshalb hat es nicht funktionier. Jetzt funktioniert es auch bei den restlichen Berichten. Danke nochmal für die Hilfe.
Das die Datenbank so unsauber aufgebaut ist liegt daran das ich diese als blutiger Anfänger angefangen haben. Da wusste ich nicht viel mehr als das es Access gibt.http://www.access-o-mania.de/forum/Smileys/default/smiley.gif
Jedenfalls hab ich mich mir die halbe Nacht um die Ohren geschlagen und die Datenbank nochmal sauber (mit Schaltflächenbeschriftung usw.) neu aufzubauen.
Somit würde ich Sagen ist das Thema abgeschlossen.
Titel: Re: Bericht mit mindestens einem Datensatz auf letzter Seite
Beitrag von: Hamsterbacke am August 12, 2015, 10:35:35
Hallo Harald

jetzt bräuchte ich doch nochmal deine Hilfe.
Wenn ich den Bericht mir Filterkriterien öffne z. b. eine Person X auswähle und hier keine Daten hinterlegt sind Bricht Access mit dem Laufzeitfehler 2427 Sie haben einen Ausdruck ohne Wert eingegeben. Drücke ich dann auf Debuggen zeigt er mir das er bei dem im Foto angehängten Befehl hängen bleibt.

Ich habe selber schon etwas gesucht und ausprobiert:
im Bericht beim Öffnen ohne Datensatz den folgenden VBA Code Ausprobiert.
MsgBox "Der Bericht enthält keine Daten.", _
   vbInformation + vbOKOnly, "Keine Daten"

Cancel = True

Dann hab ich auch noch folgenden Code gefunden
If Dcount("*", "Datenherkunft_des_Berichtes") > 0 Then
   DoCmd.OpenReport "Berichtsname"
Else
   MsgBox "Der Bericht enthält keine Daten.", _
     vbInformation + vbOKOnly, "Keine Daten"
End If

Beide funktionieren super solang die Tabelle mit Datensatzherkunft komplett leer ist. Sobald aber auch nur ein Datensatz drinsteht und ich etwas auswähle was nicht "vorhanden" ist wie z. B. Person dann kommt der Fehler. Zusätzlich hängt sich dann auch das ganze Accessprogramm auf.

Kannst du mir hier nochmal helfen.
Titel: Re: Bericht mit mindestens einem Datensatz auf letzter Seite
Beitrag von: bahasu am August 12, 2015, 19:03:51
Hi Markus,

vielleicht hilft:

letzter_Datensatz = nz(Me.ArztterminID, 0)


Dann wären auch Plausibilitätsanfragen möglich z.B. bei:
Private Sub Fahrten_zur_Apotheke_Click()
    DoCmd.Echo False
   
    letzter_Datensatz = 0
    DoCmd.OpenReport "rptApothekeBesuch", acPreview, , , , letzter_Datensatz

    If letzter_Datensatz > 0 then
       DoEvents
       Call mySendKeys("{END}", True)
       DoEvents

       DoCmd.Close acReport, "rptApothekeBesuch"
       DoEvents
       DoCmd.Echo True
   
       DoCmd.OpenReport "rptApothekeBesuch", acPreview, , , , letzter_Datensatz

  else
    msgbox "keine Daten vorhanden"
  end if
End Sub

Das ganze ist ungetestet.
Ansonsten muss ich mir das noch mal genauer anschauen, sobald ich Zeit habe.

Harald
Titel: Re: Bericht mit mindestens einem Datensatz auf letzter Seite
Beitrag von: Hamsterbacke am August 12, 2015, 19:59:54
Hallo Harald

Danke für die schnelle Antwort.
Ich hab das jetzt so gut es geht bei mir zuhause am Laptop eingefügt. Access bringt zwar immer noch einen Fehler aber es hängt sich zumindest nicht mehr auf. Ich werde mir das Morgen in der Arbeit noch einmal genauer Anschauen. Dort hab ich wieder 3 Monitore zur Verfügung was wesentlich einfacher ist als mit einen 14" Laptop :-).  Vielleicht hab ich auch nur einen Tip oder Copy Fehler.
Ich gebe auf jeden Fall bescheid sobald ich es mir Morgen in ruhe angeschaut habe.

Danke Markus
Titel: Re: Bericht mit mindestens einem Datensatz auf letzter Seite
Beitrag von: bahasu am August 12, 2015, 20:03:19
Hallo Markus,
Zitat von: Hamsterbacke am August 12, 2015, 19:59:54
... Access bringt zwar immer noch einen Fehler ...

welchen Fehler an welcher Stelle?

Harald
Titel: Re: Bericht mit mindestens einem Datensatz auf letzter Seite
Beitrag von: Hamsterbacke am August 13, 2015, 09:19:52
Guten Morgen

Also wie schon geschrieben bei mir zuhause mit AC2013 hängt er sich zumindest nicht mehr auf.
Bringt aber immer noch eine Fehlermeldung.
Ich habe das ganze hier in der Arbeit jetzt noch einmal angeschaut. beim kopieren des Codes und einfügen hab ich keinen Fehler gemacht. Hier bringt er auch immer noch einen Fehler und AC2010 hängt sich auf.

Den Fehler was er bringt scheint der Gleiche zu sein:
Laufzeitfehler '-2147352567 (80020009)':
Sie haben einen Ausdruck ohne Wert eingegeben.

Gruß Markus
Titel: Re: Bericht mit mindestens einem Datensatz auf letzter Seite
Beitrag von: DF6GL am August 13, 2015, 09:35:01
Hallo,

ZitatWenn ich den Bericht mir Filterkriterien öffne z. b. eine Person X auswähle und hier keine Daten hinterlegt sind Bricht Access mit dem Laufzeitfehler 2427 Sie haben einen Ausdruck ohne Wert eingegeben.

So etwas passiert, wenn auf ein (gebundenes) Steuerelement referenziert wird, das bei "keinen Daten"  gar nicht existiert. D. h. die Steuerelemente werden erst dann erzeugt , wenn damit auch Daten angezeigt werden können.
Titel: Re: Bericht mit mindestens einem Datensatz auf letzter Seite
Beitrag von: Hamsterbacke am August 13, 2015, 10:37:10
Hallo DF6GL

Ja das ist mir soweit klar. Wenn keine Daten zum öffnen des Berichtes vorliegen, z. B. bei Person X noch keine Daten hinterlegt sind, kann der Bericht natürlich nicht geöffnet werden. Das hängt mit dem Code zusammen den ich im Beitrag vom August 12, 2015, 10:35:35 schon einmal als Bild angehängt habe.
Ich hab jetzt noch eine ältere Datenbankversion geöffnet und dort geschaut was passiert wenn keine Daten vorhanden sind. Hier bricht er mir zwar auch mit dem Fehler 2427 ab (logisch wenn keine Daten vorhanden sind) aber Access stürzt nicht ab wie eben bei der neueren Version wo die Funktion schon eingebaut ist Bericht mit mindestens einem Datensatz auf letzter Seite. (keine Reaktion mehr, eingefroren). Bei dieser Datenbankversion kann ich dann bei Berichtereignis den Code

MsgBox "Der Bericht enthält keine Daten.", _
   vbInformation + vbOKOnly, "Keine Daten"

einfügen und Access bringt mir dann ein Textfeld "keine Datenvorhanden" und nicht das unschöne Debugg Fenster.

Gruß Markus
Titel: Re: Bericht mit mindestens einem Datensatz auf letzter Seite
Beitrag von: DF6GL am August 13, 2015, 11:06:31
Hallo,

naja, man kann halt den Teufel nicht mit dem Beelzebub austreiben..

Fehlersituation ist Fehlersituation, und die kann durchaus von den unterschiedlichen Access-Version unterschiedlich "behandelt" werden.

Der Bericht darf halt nicht geöffnet werden, wenn keine Daten vorliegen...  Dafür gibt es das Ereignis "Bei keinen Daten" oder eine Prüfung der Datensatzzanzahl vor dem Öffnen des Berichtes...
Titel: Re: Bericht mit mindestens einem Datensatz auf letzter Seite
Beitrag von: MaggieMay am September 01, 2015, 00:24:15
Hi,
ZitatDer Bericht darf halt nicht geöffnet werden, wenn keine Daten vorliegen...

Sorry, aber genau dafür gibt es doch das Berichtsereignis "Bei ohne Daten".
Dann gibt man eine Meldung aus, ala "Bericht ohne Daten" und beendet die Aktion mit

Cancel = True

Unter Umständen muss noch ein Folgefehler im aufrufenden Formular abgefangen bzw. behandelt werden.

So sieht "Fehlerbehandlung" bei mir aus: nicht verhindern, sondern reagieren und bei Bedarf kommentieren.
Titel: Re: Bericht mit mindestens einem Datensatz auf letzter Seite
Beitrag von: Hamsterbacke am September 04, 2015, 17:39:26
Hallo MaggieMay

Danke für deine Antwort. Leider hab ich das mit der Option ala "Bericht ohne Daten" und beendet die Aktion mit Cancel = True und weiteren VBA Codes Probiert. Ohne Erfolg.

Ich hab jetzt nach längerem Probieren eine Lösung gefunden. Ich hab den Code der für das einfrieren von Access verantwortlich war, wenn keine Daten zum öffnen vorhanden sind, mit

On Error GoTo Err_rptApothekeBesuchPrivat

am Anfang und

Exit_rptApothekeBesuchPrivat:
    Exit Sub
 
Err_rptApothekeBesuch:
    Resume Exit_rptApothekeBesuchPrivat

am Ende ergänzt. Und schon funktioniert alles Wunderbar.

Danke an alle für eure Hilfe.

Gruß Markus