Hallo Gemeinschaft,
bekomme nochfolgendes Script nicht zum Laufen
Beim Ausführen kommt
Fehler beim Kompilieren - Benutzerdefinierter Typ nicht definiert - er bleibt bei DIM db as DAO.Database hängen
habe über Verweise versucht die DAO 3,6 zu aktivieren - klappt nicht
Fehler beim Laden einer DLL
'-----------------------------------------------------------------
' Bericht ABR_01_Rechnung und Einzelaufstellung als PDF speichern
' Abfrage: A_RE_GESAMT
' Bericht: ABR_01_Rechnungen
' Ziel: C:\Rechnungen\[RE].pdf
'-----------------------------------------------------------------
Private Sub btnRE_EinzelDruck_Click()
Dim strSQL As String
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strDatei As String, strWhere as String
Set db = CurrentDb
strSQL = "SELECT * FROM [A_RE_GESAMT]"
Set rs = db.OpenRecordset(strSQL, dbOpenSnapshot)
Do Until rs.EOF
strDatei = "C:\Rechnung\" & rs.Fields("RE").Value & ".pdf"
strWHERE = strSQL & " WHERE RE = " & rs!RE
DoCmd.OpenReport "ABR_01_Rechnung", acViewDesign
Reports!ABR_01_Rechnung.RecordSource = strWHERE
DoCmd.OpenReport "ABR_01_Rechnung", acViewPreview, , , acHidden
DoCmd.OutputTo acOutputReport, "ABR_01_Rechnung", acFormatPDF, strDatei, False
DoCmd.Close acReport, "ABR_01_Rechnung"
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
Set db = Nothing
End Sub
Hallo,
Zitathabe über Verweise versucht die DAO 3,6 zu aktivieren - klappt nicht
Das musst Du aber zum "Klappen" bringen....
Ohne den Verweis geht es nicht.
Evtl. gibt es einen Installationsfehler beim Office-Paket.
Um welche Off-Version handelt es sich?
Office 2016
Hallo,
dann versuch zunächst, die Office-Installation zu reparieren (Programme und Features)
Statt DAO 3.6 solltest Du eigentlich die MS Office Access Database Engine verwenden. Diese ist eine Erweiterung der alten Bibliothek für die Features, die ab Acc2007 gekommen sind (Anlagefelder, Datamacros u.a.). Für diese sollte eigentlich standardmäßig der Verweis gesetzt sein.
Ein doppelter Verweis macht sich wahrscheinlich auch nicht gut.
Hallo
lieben Dank für die Hilfe -
" MS Office Access Database Engine" -> was soll ich dann deiner Meinung nach machen
das komische ist, wenn ich eine neue Datenbank anlege, dann klappt es - ich kann nur nicht meine alts db komplett in eine neue db umbauen
Hallo,
ZitatStatt DAO 3.6 ... die MS Office Access Database Engine verwenden
eieieieiei, der Reifegrad meines Schweizer Käses nimmt bedenkliche Ausmaße an... :'(
Zu tun ist:
Prüfen, ob in
jedem(!) Modulkopf "Option Explicit" steht. Falls nicht, dies nachholen.
Alle Verweise "wegklicken", bei denen das möglich ist. Danach Code kompilieren und alle Fehler beheben.
Bei Hinweisen auf fehlende Verweise (--> "Benutzerdefinierter Typ nicht definiert ") die entspr. Verweise wieder "anhaken". (Und Hinweis von Eberhard beachten!)
alles so gemacht wie du geschrieben hast - gleiches Problem
Hallo,
versuch noch dies:
Neue leere DB erstellen und alles aus der alten dort hinein kopieren.
Hi - gibt es da einen sinnigen Befehl um alles rüber zu bekommen -
Zitat von: martenk am Mai 17, 2021, 13:40:43Hi - gibt es da einen sinnigen Befehl um alles rüber zu bekommen -
Nein, das machst du manuell über "Externe Daten" - "Importieren" ...
Zur Klarstellung mal die Frage: Wenn du einen Verweis auf "MS Office Access Database Engine" setzt, kommt "Fehler beim laden der DLL"?
lieben Dank für die Info - ja genau - dann kommt der Fehler
alles hinbekommen - lieben Dank meine Herren
nun habe ich ein Verständnis Problem
Im Moment geht das tool jeden datensatz durch und legt eine Datei an - nur sind in dieser Datei alle zu erstellenden Datensätze drin
ich vermute mal es liegt hier dran
strWhere = strSQL & " WHERE miete = " & rs![Miete]
mein eindeutiges Feld ist Objekt-Nr
wenn ich das anstelle miete eintrage, dann kommen noch Meldungsfenster Abfrage - wie pharse ich Objekt-Nr richtig
Hallo,
versuch es so:
.
.
.
strDatei = "C:\Rechnung\" & rs.Fields("RE").Value & ".pdf"
strWHERE = "RE = " & rs!RE
DoCmd.OpenReport "ABR_01_Rechnung", acViewPreview, , strWhere, acHidden
DoCmd.OutputTo acOutputReport, "ABR_01_Rechnung" , acFormatPDF, strDatei, False
DoCmd.Close acReport, "ABR_01_Rechnung"
.
.
.
siehe auch : https://www.youtube.com/watch?v=kQjfbAq3nAY
könnt ihr bitte noch einmal schauen
das ist die Tabelle
das das Coding
Private Sub Rechteck124_DblClick(Cancel As Integer)
Dim strSQL As String
Dim db As DAO.Database
Dim rs As DAO.Recordset
Dim strDatei As String, strWhere As String
Set db = CurrentDb
strSQL = "SELECT * FROM AbfrageEigentuemer1"
Set rs = db.OpenRecordset(strSQL, dbOpenSnapshot)
Do Until rs.EOF
strDatei = "C:\Rechnung\" & rs.Fields("ObjektNr").Value & ".pdf"
strWhere = strSQL & " WHERE ObjektNr = " & rs![ObjektNr] & " and Anreisetag = " & rs![Anreisetag]
DoCmd.OpenReport "AbrechnungEigentuemer", acViewDesign
Reports![AbrechnungEigentuemer].RecordSource = strWhere
DoCmd.OpenReport "AbrechnungEigentuemer", acViewPreview, , , acHidden
DoCmd.OutputTo acOutputReport, "AbrechnungEigentuemer", acFormatPDF, strDatei, False
DoCmd.Close acReport, "AbrechnungEigentuemer"
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
Set db = Nothing
End Sub
Tabelle Eigentuemer1
Anreisetag Abreisetag Miete Name ObjektNr
09.05.2021 16.05.2021 450 Schal E13
24.04.2021 01.05.2021 567 Hegen N7
03.04.2021 10.04.2021 617 Haroon N4
03.04.2021 10.04.2021 425 Schal E13
10.04.2021 22.04.2021 918 Sander K16
03.04.2021 10.04.2021 483,55 Wes A15
03.04.2021 10.04.2021 451,25 Hani F12
25.04.2021 06.05.2021 831 Minsel N1
24.04.2021 01.05.2021 459 Grigo B2
03.04.2021 10.04.2021 558 Engel D15
10.04.2021 17.04.2021 617 Haroon N4
10.04.2021 17.04.2021 617 Sebasti N2
01.05.2021 08.05.2021 425 Hei K5
17.04.2021 01.05.2021 0 Althau L18
01.05.2021 08.05.2021 459 Fuh B4
27.03.2021 10.04.2021 850 Schulz E6
den Bericht kann ich leider nicht mitsenden
Hallo,
irgendwie ist das Chaos... Warum jetzt andere Abfragen, Feldnamen usw.??
strWhere = strSQL & " WHERE ObjektNr = '" & rs![ObjektNr] & "' and Anreisetag = " & Format(rs![Anreisetag],"\#yyyy-mm-dd\#")
und die Openreport-Sequenz ändern wie beschrieben!
Lieben Dank für deine Mühe
wenn ich es so ausführe, dann kommt ein Meldungsfenster am Ende
"Möchten Sie am Entwurf von Bericht vorgenommene Änderungen speichern"
Das kommt daher, dass du den Bericht im Entwurf öffnest und änderst.
Die Nachfrage kannst du wie folgt verhindern:
DoCmd.Close acReport, "AbrechnungEigentuemer", acSaveNo
Aber wäre es nicht sinnvoller, einfach nur die Where-Condition bei DoCmd.OpenReport an den Report zu übergeben, und gar nicht am Entwurf herumzufummeln?
was müsste ich dann ändern?
Versuche gerade anhand dieses BSP die Logik zu verstehen
Hallo,
Zitatwas müsste ich dann ändern?
habe ich Dir doch vorher genau geschrieben.... ::)
okay - gemacht - ich habe nun noch eine letzte Frage
ich muss nach dem jeweiligen Ausdruck des Berichts im Feld Reservierung zu dem Objekt und dem Anreisedatum im Feld abgerechnet das Druckdatum eintragen - könnt ihr mir vielleicht erklären, wie ich das zu machen habe
die Tab Reservierung sieht im Grunde so aus
Objekt-Nr___Anreise____Abreise____........abgerechnet
Hallo,
wenn "Abgerechnet" als Feld in der (aktualisierbaren) Abfrage "AbfrageEigentuemer1" enthalten ist:
Zitat von: undefinedSet rs = db.OpenRecordset(strSQL, dbOpenDynaset)
Do Until rs.EOF
strDatei = "C:\Rechnung\" & rs.Fields("ObjektNr").Value & ".pdf"
strWhere = " ObjektNr = " & rs![ObjektNr] & " and Anreisetag = " & rs![Anreisetag]
DoCmd.OpenReport "AbrechnungEigentuemer", acViewPreview, , strWhere , acHidden
DoCmd.OutputTo acOutputReport, "AbrechnungEigentuemer", acFormatPDF, strDatei, False
DoCmd.Close acReport, "AbrechnungEigentuemer"
rs.Edit
rs!abgerechnet = Date
rs.Update
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
Set db = Nothing
Ansonsten:
.
.
Currentdb.Execute "Update tabReservierung Set abgerechnet = Date() Where ObjektNr = '" & rs![ObjektNr] & "'"
.
.
lieben Dank -
Zitat von: martenk am Mai 17, 2021, 19:45:22Operation wird für diesen Objekttyp nicht unterstützt
rs.Edit wird markiert
Das hast du vermutlich nicht alle der rot markierten Änderungen von DF6GL übernommen. Die Änderung des Recordset-Typs wäre die naheliegendste.
Ich habe doch noch eine Frage zu der query
ich müsste in meiner query Objekt-Nr stehen haben, weil in vielen Tabellen damit gearbeitet wird
wenn ich es so verwende
strDatei = "C:\Rechnung\" & rs.Fields("Objekt-Nr").Value & ".pdf"
strWhere = strSQL & " WHERE Objekt-Nr = '" & rs![Objekt-Nr] & "' and Anreisetag = " & Format(rs![Anreisetag], "\#yyyy-mm-dd\#")
kommt während des durchlaufens Meldungsfenster 1. Objekt 2. Nr.
wie kann ich Objekt-Nr richtig in die query einsetzen
Feld- und Tabellennamen mit Sonderzeichen müssen in eckige Klammern eingeschlossen werden.
Das siehst du in deinem obigen Beispiel bereits für rs![Objekt-Nr].
klappt leider nicht
Do Until rs.EOF
strDatei = "C:\Rechnung\" & rs.Fields("Objekt-Nr").Value & ".pdf"
strWhere = strSQL & " WHERE Objekt-Nr = '" & rs![Objekt-Nr] & "' and Anreisetag = " & Format(rs![Anreisetag], "\#yyyy-mm-dd\#")
DoCmd.OpenReport "AbrechnungEigentuemer", acViewDesign
Reports![AbrechnungEigentuemer].RecordSource = strWhere
DoCmd.OpenReport "AbrechnungEigentuemer", acViewPreview, , , acHidden
DoCmd.OutputTo acOutputReport, "AbrechnungEigentuemer", acFormatPDF, strDatei, False
DoCmd.Close acReport, "AbrechnungEigentuemer", acSaveNo
rs.Edit
rs!abgerechnet = True
rs!abgerechnetam = Date
rs.Update
rs.MoveNext
Loop
rs.Close
Set rs = Nothing
Set db = Nothing
Zitat von: martenk am Mai 18, 2021, 10:20:19klappt leider nicht
Do Until rs.EOF
strDatei = "C:\Rechnung\" & rs.Fields("Objekt-Nr").Value & ".pdf"
strWhere = strSQL & " WHERE Objekt-Nr = '" & rs![Objekt-Nr] & "' and Anreisetag = " & Format(rs![Anreisetag], "\#yyyy-mm-dd\#")
Ich habe eine Idee, woran das liegen könnte. ;-) ^^^^
:-)
hattest Recht - nun habe ich ein Problem
die query bezieht sich ja auf eine Abfrage
wenn die Routine zu rs.Edit kommt - bekommeich die Meldung
Aktualisieren nicht möglich Objekt oder Datenbank ist schreibgeschützt
Zitat von: martenk am Mai 18, 2021, 11:49:22die query bezieht sich ja auf eine Abfrage
wenn die Routine zu rs.Edit kommt - bekommeich die Meldung
Aktualisieren nicht möglich Objekt oder Datenbank ist schreibgeschützt
Brauchst du für das Recordset wirklich diese Abfrage? "A_RE_GESAMT" kling recht umfangreich, vielleicht tut es auch eine deutlich vereinfachte Fassung.
Wenn nicht, kannst du die Kennzeichen Abgerechnet/Am auch per Aktualisierungsabfrage auf die Tabelle setzen.
ich wollte es so machen
CurrentDb.Execute "Update Reservierungen Set [abgerechnetam] = Date() Where [Anreisetag] = rs![Anreisetag] and [Objekt-Nr] = rs![Objekt-Nr] "
bekomme einen syntax Fehler
2 Parameter wurden erwartet aber es wurden zuwenig übergeben
probiere ich es so, bekomme ich einen Datentypenkonflikt - das Feld abgerechnetam habe ich als Datum/Uhrzeit definiert
CurrentDb.Execute "Update Reservierungen Set abgerechnetam = Date() Where [Anreisetag] = '" & rs![Anreisetag] & "' and [Objekt-Nr] = '" & rs![Objekt-Nr] & "'"
Hallo,
CurrentDb.Execute "Update Reservierungen Set abgerechnetam = Date() Where [Anreisetag] = #" & Format(rs![Anreisetag],"yyyy-mm-dd") & "# and [Objekt-Nr] = '" & rs![Objekt-Nr] & "'"
Wenn ich eine zweite variable dazu setze (in diesem Falle ein Optionsfeld Ja – nein) wie würdet ihr das dazu schreiben – das Feld heißt bezahlt
ah - habs gefunden - einfach nur mit Komma trennen
lieben Dank für eure Hilfe
Hallo Gemeinschaft - habe noch eine Frage - wie würdet ihr eine Rechnungsnummer mit einfügen
dachte zuerst an eine separate Liste ind der die Nummern geführt werden- weiss nur nicht, wie ich dann diese Nummer in die Abfrage mit reinbekomme
Hallo
eine Rechnungsnummer gehört als eigenes Feld direkt in die Tabelle mit den Daten zur Rechnung.
Im einfachsten Fall nimmt man dazu einen Autowert.
Ist ein wenig problematisch - ich beziehe mich ja in der Abfrage auf die Tabelle Reservierungen - ab und zu wird mal eine Reservierung storniert - dann fehlt mir eine Nummer - die Abrechnungsnummern müssen aber ja durchlaufend sein - ich bräuchte vermutlich eine neue Tabelle - oder ?
dachte eher an eine Tabelle Rechnung
id_Rechnungsnummer_Datum_Druckdatum_Reservierungsnummer_Eigentümerid
weiss nur nicht, wie ich dann vor Rechnungsdruck an die letzte Rechnungsnummer komme und diese müsste ja dann auch zu der Abfrage hinzukommen, die die Rechnung erstellt
Hallo,
Zitat von: undefineddie Abrechnungsnummern müssen aber ja durchlaufend sein
wieso müssen die durchlaufend sein ?
Es ist ein weit verbreiteter Irrtum, dass Rechnungsnummern durchlaufend sein müssen, sie müssen eindeutig sein, aber nicht durchlaufend. Außerdem wird bei eine Stornierung nichts gelöscht, sondern die Reservierung bekommt nur einen Vermerk (Tabellenfeld) "Storniert". Man löscht in einer Datenbank keine Daten die mal gültig waren.
Eine Tabelle für die Rechnung sollte es ohnehin geben und dort ist die Rechnungsnummer gespeichert.
Wenn dann die Rechnung gedruckt wird, hast Du auch die Nummer, da muss nix extra ermittelt werden.
Ich fürchte, bei Deiner Datenbank liegt noch einiges im Argen.
Kannst Du mal ein Bild des Beziehungsfensters hier zeigen ?
Beziehungen sind ja hoffentlich angelegt.
Ich habs so gemacht wie du geschrieben hast - nehme die Reservierungsnummer als Rechnungsnummer
lieben Dank für den Hinweis mit der fortlaufenden Nummer