Access-o-Mania

Access-Forum (Deutsch/German) => Access Programmierung => Thema gestartet von: martenk am Mai 17, 2021, 10:15:43

Titel: Bekomme Script nicht zum Laufen
Beitrag von: martenk am Mai 17, 2021, 10:15:43
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
Titel: Re: Bekomme Script nicht zum Laufen
Beitrag von: DF6GL am Mai 17, 2021, 11:25:47
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?
Titel: Re: Bekomme Script nicht zum Laufen
Beitrag von: martenk am Mai 17, 2021, 11:47:36
Office 2016
Titel: Re: Bekomme Script nicht zum Laufen
Beitrag von: DF6GL am Mai 17, 2021, 11:50:30
Hallo,

dann versuch zunächst, die Office-Installation zu reparieren (Programme und Features)
Titel: Re: Bekomme Script nicht zum Laufen
Beitrag von: ebs17 am Mai 17, 2021, 12:00:14
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.
Titel: Re: Bekomme Script nicht zum Laufen
Beitrag von: martenk am Mai 17, 2021, 12:15:27
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
Titel: Re: Bekomme Script nicht zum Laufen
Beitrag von: DF6GL am Mai 17, 2021, 13:20:12
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!)


Titel: Re: Bekomme Script nicht zum Laufen
Beitrag von: martenk am Mai 17, 2021, 13:29:30
alles so gemacht wie du geschrieben hast - gleiches Problem
Titel: Re: Bekomme Script nicht zum Laufen
Beitrag von: DF6GL am Mai 17, 2021, 13:36:58
Hallo,

versuch noch dies:

Neue leere DB erstellen und alles aus der alten dort hinein kopieren.
Titel: Re: Bekomme Script nicht zum Laufen
Beitrag von: martenk am Mai 17, 2021, 13:40:43
Hi - gibt es da einen sinnigen Befehl um alles rüber zu bekommen -
Titel: Re: Bekomme Script nicht zum Laufen
Beitrag von: PhilS am Mai 17, 2021, 13:51:26
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"?
Titel: Re: Bekomme Script nicht zum Laufen
Beitrag von: martenk am Mai 17, 2021, 13:56:21
lieben Dank für die Info - ja genau - dann kommt der Fehler
Titel: Re: Bekomme Script nicht zum Laufen
Beitrag von: martenk am Mai 17, 2021, 14:53:07
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
Titel: Re: Bekomme Script nicht zum Laufen
Beitrag von: DF6GL am Mai 17, 2021, 15:13:42
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
Titel: Re: Bekomme Script nicht zum Laufen
Beitrag von: martenk am Mai 17, 2021, 15:44:07
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
Titel: Re: Bekomme Script nicht zum Laufen
Beitrag von: DF6GL am Mai 17, 2021, 16:17:56
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!
Titel: Re: Bekomme Script nicht zum Laufen
Beitrag von: martenk am Mai 17, 2021, 16:39:33
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"
Titel: Re: Bekomme Script nicht zum Laufen
Beitrag von: PhilS am Mai 17, 2021, 16:43:17
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?
Titel: Re: Bekomme Script nicht zum Laufen
Beitrag von: martenk am Mai 17, 2021, 17:14:25
was müsste ich dann ändern?

Versuche gerade anhand dieses BSP die Logik zu verstehen
Titel: Re: Bekomme Script nicht zum Laufen
Beitrag von: DF6GL am Mai 17, 2021, 17:34:36
Hallo,

Zitatwas müsste ich dann ändern?
habe ich Dir doch vorher genau geschrieben.... ::)
Titel: Re: Bekomme Script nicht zum Laufen
Beitrag von: martenk am Mai 17, 2021, 18:00:15
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

Titel: Re: Bekomme Script nicht zum Laufen
Beitrag von: DF6GL am Mai 17, 2021, 18:56:20
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] & "'"
.
.
Titel: Re: Bekomme Script nicht zum Laufen
Beitrag von: martenk am Mai 17, 2021, 19:45:22
lieben Dank -
Titel: Re: Bekomme Script nicht zum Laufen
Beitrag von: PhilS am Mai 17, 2021, 19:51:48
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.
Titel: Re: Bekomme Script nicht zum Laufen
Beitrag von: martenk am Mai 18, 2021, 07:58:54
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
Titel: Re: Bekomme Script nicht zum Laufen
Beitrag von: PhilS am Mai 18, 2021, 09:20:18
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].
Titel: Re: Bekomme Script nicht zum Laufen
Beitrag von: martenk am Mai 18, 2021, 10:20:19
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
Titel: Re: Bekomme Script nicht zum Laufen
Beitrag von: PhilS am Mai 18, 2021, 10:28:29
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. ;-) ^^^^
Titel: Re: Bekomme Script nicht zum Laufen
Beitrag von: martenk am Mai 18, 2021, 11:49:22
:-)

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
Titel: Re: Bekomme Script nicht zum Laufen
Beitrag von: PhilS am Mai 18, 2021, 11:56:03
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.
Titel: Re: Bekomme Script nicht zum Laufen
Beitrag von: martenk am Mai 18, 2021, 12:45:47
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] & "'"
Titel: Re: Bekomme Script nicht zum Laufen
Beitrag von: DF6GL am Mai 18, 2021, 17:17:13
Hallo,


CurrentDb.Execute "Update Reservierungen Set abgerechnetam = Date() Where [Anreisetag] = #" & Format(rs![Anreisetag],"yyyy-mm-dd")  & "# and [Objekt-Nr] = '" & rs![Objekt-Nr] & "'"
Titel: Re: Bekomme Script nicht zum Laufen
Beitrag von: martenk am Mai 18, 2021, 21:37:15
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
Titel: Re: Bekomme Script nicht zum Laufen
Beitrag von: martenk am Mai 19, 2021, 08:12:38
ah - habs gefunden - einfach nur mit Komma trennen

lieben Dank für eure Hilfe
Titel: Re: Bekomme Script nicht zum Laufen
Beitrag von: martenk am Mai 19, 2021, 09:32:00
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
Titel: Re: Bekomme Script nicht zum Laufen
Beitrag von: MzKlMu am Mai 19, 2021, 09:39:25
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.
Titel: Re: Bekomme Script nicht zum Laufen
Beitrag von: martenk am Mai 19, 2021, 11:09:11
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
Titel: Re: Bekomme Script nicht zum Laufen
Beitrag von: MzKlMu am Mai 19, 2021, 11:57:08
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.
Titel: Re: Bekomme Script nicht zum Laufen
Beitrag von: martenk am Mai 19, 2021, 15:34:04
Ich habs so gemacht wie du geschrieben hast - nehme die Reservierungsnummer als Rechnungsnummer

lieben Dank für den Hinweis mit der fortlaufenden Nummer