Access Bericht #Fehler unterdrücken
Hallo!
Ich probiere jetzt schon die gnze Zeit an einem Problem rum und habe trotz Suchen leider keine Hilfe gefunden...
Hintergrund:
Ich habe einen Bericht (rep) der sich auf eine Abfrage (qry) bezieht. Durch die Abfrage werden alle Daten die in einem Monat geändert wurden, angezeigt. Dies wird in diesem Textfeld gemacht:
="Im Bereich " & [FACHBER] & " wurden folgende Neuanagen im " & Monatsname(Monat(Formulare!frm_Berichte!Datum)) & " " & Jahr(Formulare!frm_Berichte!Datum) & " durchgeführt:"
Das ganze Funktioniert fast einwandfrei, solange es Datensätze in diesem Monat gibt!
Problem:
Wenn ich einen Monat auswähle, in dem es keine Änderungen, also Datensätze gab, bekomme ich im Bericht statt der ganzen Zeile #Fehler angezeigt!
Frage:/b]
Wie kann ich diesen Fehler abfangen, so dass statt dessen 0 angezeigt wird?
Über eine Antwort würde ich mich sehr Freuen!!
Schon im Vorraus vielen Dank!
Steffen
Antwort schreiben
Antwort 1 von lleopard vom 17.07.2019, 10:25 Options
hi Erklärbär,
is doch eigentlich trivial:
Du willst, wenn die Abfrage keine Datensätze aufweist, ne 0.
Also wenn der bericht sich öffnet, kannst du doch prüfen, ob die qry was zurückgibt.
Wenn nicht, dann hebst du einfach die Zuweisung für das Textfeld auf und schreibst es neu:
also
if dcount("*","qry) =0 then
textfeld ="Im & Monatsname(Monat(Formulare!frm_Berichte!Datum)) & " " & Jahr(Formulare!frm_Berichte!Datum) & " wurden keine Neuanlagen durchgeführt!"
end if
Gruß leo
Antwort 2 von Erklärbär vom 17.07.2019, 10:48 Options
Vielen Dank für die scnelle Hilfe!
Nur leider bekomme ich die Fehlermeldung
Laufzeitfehler '-2147352567 (80020009)':
Sie können diesem Objekt keinen Wert zuweisen.
Hilfst du mir bitte bitte nochmal! Muss ich den Zugriff erlauben? Wenn ja wie??
Viele Grüße
Steffen
Antwort 3 von lleopard vom 17.07.2019, 11:01 Options
hi steffen,
natürlich mußt du vorab dem textfeld die anbindung an das Tabellenfeld nehmen:
textfeld.rowsource = ""
dann ist das textfeld erst wieder frei für eingaben,,, normalerweise....
Gruß Leo
Antwort 4 von Erklärbär vom 17.07.2019, 11:16 Options
Danke für die Antwort!
Ich will ja echt nicht nerven, und hoffentlich bin ich nicht zu doof, aber jetzt bekomme ich:
Laufzeitfehler 438
Objekt unterstützt diese Eigenschaft oder Methode nicht.Hier mein Code den Ich (DU :-)) habe:
Option Compare Database
Private Sub Report_Open(Cancel As Integer)
If DCount("*", "qry_reports_status_neu") = 0 Then
ZEILE1.RowSource = ""
ZEILE1 = " Es wurden keine Änderungen durchgeführt!"
End If
End Sub
Ich habe nochmal geschaut, ZEILE1 ist ein
Textfeld, ist das so korrekt oder woran liegt es?? *auf die Tastatur beißt*
Viele Grüße
Steffen
Antwort 5 von lleopard vom 17.07.2019, 11:55 Options
also entweder ist es ein Textfeld, dann muß es heißen
ZEILE1.Caption = " Es wurden keine Änderungen durchgeführt!"
oder ein Bezeichnungsfeld, dann
ZEILE1.Value = " Es wurden keine Änderungen durchgeführt!"
aber das siehst du eh, wenn er die Liste öffnet, ob er es anbietet... er, also der blöde Listgenerator von Access... :-)))
Gruß Leo
Antwort 6 von Erklärbär vom 17.07.2019, 13:11 Options
ich hoffe wir schreiben nicht aneinander vorbei!
Wenn ich Zeile1. eingebe bekomme ich weder value noch caption angeboten! und wenn ich es einfach hinschreibe bekomme ich wieder eine Fehlermeldung! Ich bekomme nur
Application
Collums
Controll
Dropdown
..... usw
angeboten!
Irgendwie ist da der Wurm drin..
Hab Access 2003, viel. hat sich da was geändert??
Ich bin verzweifelt!
Viele Grüße
Steffen
Antwort 7 von Teddy7 vom 17.07.2019, 18:22 Options
wäre es nicht einfacher, die Abfrage da zu machen, wo Du den Bericht aufrufst ?
Das passiert doch sicher per klick auf ein Befehlsfeld. Da kannst Du im klick-Ereignis des Feldes die Anzahl ermitteln und bei 0 eine msgbox ausgeben und sonst den Bericht aufrufen.
Gruß
Teddy
Antwort 8 von Erklärbär vom 18.07.2019, 08:06 Options
Danke für den Tipp, aber der Bericht hat mehrere kriterien nach denen er die Monatsübersicht erstellt, d.h. , dass wenn zu einem Kriterium keine Datensätze vorhanden sind, #Fehler angezeigt wird, obwohl die Abfrage selbst >0 Datensätze hat!
Ich hab irgendwas von nz( SQL....) gelesen, kann ich damit das Problem lösen?
Grüße
Steffen
Antwort 9 von Teddy7 vom 18.07.2019, 08:54 Options
die nz-Funktion macht aus NULL 0.
d.h. wenn im Feld nix drin steht (also = NULL) dann macht diese Funktion daraus 0 oder was auch immer man haben will.
sieht so aus:
nz(Feldname, 0) oder für Texte nz(Feldname, "")
ergibt z.B. in einer Summe:
nz(feldname, 0) + nz(Feldname2, 0)
!!!in einer Abfrage wird das , durch ein ; ersetzt
Gruß
Teddy