Office: (Office 2016) Aufgabe zu lösen

Helfe beim Thema Aufgabe zu lösen in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo zusammen, ich bearbeite gerade meine letzte Einseaufgabe zu einem VBA-Kurs. Alle anderen habe ich bereits geschafft, aber bei dieser komme ich... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von JoBo1987, 17. Mai 2020.

  1. Aufgabe zu lösen


    Hallo zusammen,

    ich bearbeite gerade meine letzte Einseaufgabe zu einem VBA-Kurs. Alle anderen habe ich bereits geschafft, aber bei dieser komme ich einfach nicht ans Ziel.

    Vielleicht könnt ihr mir ja helfen. Das wäre großartig.

    Die Aufgabestellung lautet wie folgt:
    Zunächst sollen in der Tabelle Belegung der Datebank die Mietpreise um 1% erhöht werden. Anschließend sollen für jeden Mieter in der Tabelle Mieter die Summen der Mietpreise im Feld Bemerkung mit einem zusätzlichen Kommentar gespeichert werden.

    Die erste Teil soll mithilfe eines Command-Objektes erfolgen, der zweite schreibende Zugriff mithilfe der Execute()-Methode der Connection-Instanz.


    Ihr findet meinen Code als Aufgabe 6 in der Datei:

    Public Sub Aufgabe_6()
    Dim cmd As New ADODB.Command
    Dim con As New ADODB.Connection
    Dim rs As ADODB.Recordset

    Set con = CurrentProject.Connection

    con.BeginTrans

    With cmd
    Set .ActiveConnection = con
    .Name = "Mietpreise_erhoehen"
    .CommandText = "UPDATE Belegung SET Mietpreis = Mietpreis * 1.01"
    .CommandType = adCmdText
    End With
    .Mietpreise_erhoehen
    End With

    With cmd
    Set .ActiveConnection = con

    Set rs = .Execute("SELECT MieterNr, Sum(Mietpreis) AS MietPreisSumme FROM Belegung GROUP BY MieterNr", , adCmdText)
    With rs
    While Not .EOF
    With con.Execute("UPDATE Mieter " & _
    "SET Bemerkung = Mietpreissumme: " & rs!MietPreisSumme & "WHERE MieterNr = '" & rs!MieterNr & "'", , adCmdText)
    .MoveNext
    End With
    Wend
    .Close
    End With
    End With

    If MsgBox("Sollen die Änderungen jetzt gespeichert werden?", vbYesNo + vbQuestion) = vbYes Then
    con.CommitTrans
    Else
    con.RollbackTrans
    End If

    Set cmd = Nothing
    Set rs = Nothing
    Set con = Nothing
    End Sub


    Ich erhalte die folgende Fehlermeldung:

    "Fehler beim Kompilieren:
    Unzulässiger oder nicht ausreichend definierter Verweis" bei folgender Textstelle: .Mietpreise_erhoehen
    Das End With darunter muss natürlich entfernt werden

    Ich wäre Euch sooo dankbar, wenn ihr mir helfen könntet. Habe schon so viele Stunden damit verbracht *eek.gif*

    Vielen lieben Dank vorab

    :)
     
    JoBo1987, 17. Mai 2020
    #1
  2. So was verwendet doch niemand in der Praxis.
    Zum Nachdenken: Auf welches Objekt bezieht sich denn die benannte Methode?

    Schau einfach in deinen schlauen Unterlagen nach. *wink.gif*
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
    markusxy, 19. Mai 2020
    #2
  3. Hallo JoBo1987,

    selbst wenn du die Zeile darunter enfernen solltest, wäre der Syntaxerror immer noch vorhanden. Was möchtest du mit dieser Zeile
    Code:
    erreichen?

    Bitte benutze für Code die Code-Tags und rücke die Zeile richtig ein, damit der Code besser gelesen werden kann.
    So sieht man auch gleich, was wozu gehört und ob ein schließenden Part zu einer Schleife oder With Anweisung fehlt.
    Im Übrigen würde ich auf die With Anweisung in dem Stadium verzichten, schon gar, wenn sie geschlachtelt verwendet werden.

    Ulrich

    PS:
    bitte verwende das Zip-Format, weil das in Windows enthalten ist.
     
    knobbi38, 19. Mai 2020
    #3
  4. Aufgabe zu lösen

    Auf das Command-Objekt.
    "Der Name des Command-Objekts soll als Method der COmmand-Instanz aufgerufen werden, was zum Ausführen des CommandTextes führt:"
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
    JoBo1987, 19. Mai 2020
    #4
  5. erreichen?

    Bitte benutze für Code die Code-Tags und rücke die Zeile richtig ein, damit der Code besser gelesen werden kann.
    So sieht man auch gleich, was wozu gehört und ob ein schließenden Part zu einer Schleife oder With Anweisung fehlt.
    Im Übrigen würde ich auf die With Anweisung in dem Stadium verzichten, schon gar, wenn sie geschlachtelt verwendet werden.

    Ulrich

    PS:
    bitte verwende das Zip-Format, weil das in Windows enthalten ist.


    Hier nochmal als Zip.
    Danke schon einmal für Eure Hilfe.
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
    JoBo1987, 19. Mai 2020
    #5
  6. Hallo JoBo1987,

    Wie kommst du denn darauf, daß das so möglich sein sollte?

    Es gibt so ein Konstrukt, daß aber erst ab Access 2013 unterstützt wird und das ich in der Praxis noch nie verwendet habe.

    Du bist hier zwei Problemen aufgesessen:

    1.) Fehlerhafte Verwendung von With -> lass das weg, wenn du es noch nicht beherrscht, und strukturiere deinen Code!

    2.) Lese dir nochmal die Doku durch, wie man dieses "Feature" richtig anwendet.
    https://docs.microsoft.com/de-de/off...named-commands

    Ulrich
     
    knobbi38, 19. Mai 2020
    #6
  7. Dein String ist falsch formatiert:

    Code:
     
    fredfred, 19. Mai 2020
    #7
  8. Aufgabe zu lösen

    Wow, vielen Dank. Damit ist der Fehler im ersten Teil der Aufgabe erledigt. Vielen Dank!!
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
    JoBo1987, 19. Mai 2020
    #8
  9. Vielen Dank auch für diesen Hinweis.
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
    JoBo1987, 19. Mai 2020
    #9
  10. Ich glaube, dass ich dank Eurer Hilfe ganz kurz vorm Ziel bin:

    Ich habe nun noch einen kleinen Fehler. Vll bekommen wir das auch noch hin.

    Public Sub Aufgabe_6()
    Dim con As New ADODB.Connection
    Dim cmd As New ADODB.Command
    Dim rs As ADODB.Recordset

    Set con = CurrentProject.Connection

    con.BeginTrans

    With cmd
    .CommandText = "UPDATE Belegung SET Mietpreis = Mietpreis * 1.01"
    .CommandType = adCmdText
    .Name = "Mietpreise_erhoehen"
    Set .ActiveConnection = con
    End With
    con.Mietpreise_erhoehen

    Set rs = con.Execute("SELECT MieterNr, Sum(Mietpreis) AS MietPreisSumme FROM Belegung GROUP BY MieterNr", , adCmdText)
    With rs
    While Not .EOF
    With con.Execute("UPDATE Mieter " & _
    "SET Bemerkung = Mietpreissumme: " & rs!MietPreisSumme & "WHERE MieterNr = rs!MieterNr", , adCmdText)

    .MoveNext
    End With
    Wend
    .Close
    End With

    If MsgBox("Sollen die Änderungen jetzt gespeichert werden?", vbYesNo + vbQuestion) = vbYes Then
    con.CommitTrans
    Else
    con.RollbackTrans
    End If

    Set cmd = Nothing
    Set rs = Nothing
    Set con = Nothing
    End Sub


    Zum Fett-markierten Teil bekomme ich folgende Fehlermeldung:
    Laufzeitfehler:
    Syntaxfehler (fehlender Operator) in Abfrageausdruck "Mietpreissumme: 1191'

    Könnt ihr mir noch einen Tipp geben, wie ich den Code für Euch einrücken kann?
     
    JoBo1987, 19. Mai 2020
    #10
  11. Ich habe dir die richtige Syntax gezeigt, hast sie aber nicht zu 100% übernommen.
    Außerdem muss .Execute auf eigener Zeile stehen, wenn man mit WITH arbeitet. WEgen einer Zeile würde ich aber auf das with mit con verzichten
    Mögliche Lösung:

    Code:
     
    fredfred, 19. Mai 2020
    #11
  12. WOW!!!
    Vielen lieben Dank.
    Jetzt kann ich endlich gut schlafen gehen!!

    Das hat mich richtig genervt die letzten 2-3 Tage, dass ich es nicht hinbekommen habe.

    Danke, danke, danke!
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
    JoBo1987, 19. Mai 2020
    #12
  13. Aufgabe zu lösen

    nochmal eine Überarbeitung. Du hattest rs nicht als NEW deklariert, deshalb scheiterte der Versuch über .Mietpreise erhöhen rs
    Code:
     
    fredfred, 19. Mai 2020
    #13
  14. Mit Access hat das eher weniger zu tun.
    In meinem ersten Access Buch, das ich aus dem Müll habe aus dem Jahr 1998 wird das schon behandelt. *wink.gif*
    Nur verwendet habe ich das nie.
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
    markusxy, 19. Mai 2020
    #14
  15. Der Aussage fehlt jetzt aber jede Logik.
    Connection Execute erstellt ja ein eigenes Recordset und bei der Zuweisung wird das bestehende welches mit New erstellt wurde wieder freigegeben.

    Edit:
    @fredfred,
    außerdem finde ich es ziemlich unterirdisch, wenn man jemandem der am Lernen ist sofort fertige Lösungen präsentiert.
    Mein Zugang ist da eher auf die Fehler hinweisen, ihn aber Lösungen eigenständig erarbeiten lassen.
    Oder besser noch Strategien, wie er selbst auf die Fehler drauf kommt.
    Fertige Lösungen sind nmM dumm und kontraproduktiv - wo soll da der Lerneffekt bleiben?
     
    Zuletzt von einem Moderator bearbeitet: 7. Januar 2021
    markusxy, 19. Mai 2020
    #15
Thema:

Aufgabe zu lösen

Die Seite wird geladen...
  1. Aufgabe zu lösen - Similar Threads - Aufgabe lösen

  2. Aufgaben exportieren

    in Microsoft Outlook Hilfe
    Aufgaben exportieren: Hallo, ich benutze noch Windows 10 und habe in "Office 2019" > "Outlook > "Aufgaben" über 300 Dateien von meinen Wanderungen, Reisen u.a.gepeichert. Nächste Woche bekomme ich einen neuen PC mit...
  3. Pivot Zeit Aufgaben je Arbeitszeit

    in Microsoft Excel Hilfe
    Pivot Zeit Aufgaben je Arbeitszeit: Moin zusammen, ich habe ne Tabelle wo ich verschiedene Aufgaben von Mitarbeitern habe. Da ich diese filtern und in der Darstellung variieren möchte, habe ich das ganze in eine Pivot gepackt. Nun...
  4. Bearbeitung von Aufgaben Fehlermeldung

    in Microsoft Outlook Hilfe
    Bearbeitung von Aufgaben Fehlermeldung: Hallo zusammen! Ich synchronisiere 2x Outlook 365 auf zwei Rechnern mit simplesyn. Das funktioniert sehr gut. Bei beiden Rechnern kann ich Aufgaben erstellen. Erstelle ich aber beim Server eine...
  5. Erinnerung bei Team-Aufgaben

    in Microsoft Outlook Hilfe
    Erinnerung bei Team-Aufgaben: Hallo! Wir nutzen im Outlook 2016 neben unseren persönlichen Postfächern (MS Exchange) auch Team/Gruppenpostfächer. Diese sind als "zusätzliche Postfächer" eingebunden. Die Kalenderfunktion wird...
  6. Aufgaben lassen sich nicht nach Fälligkeitsdatum sortieren

    in Microsoft Outlook Hilfe
    Aufgaben lassen sich nicht nach Fälligkeitsdatum sortieren: Hallo zusammen, ich würde gerne meine Aufgaben (echte Aufgaben + nachverfolgte E-Mails) nach Fälligkeitsdatum sortieren. Anders als andere Sortieroptionen (Priorität, Ordner etc.) klappt das...
  7. Aufgaben mit Emails verknüpfen

    in Microsoft Outlook Hilfe
    Aufgaben mit Emails verknüpfen: Hallo allerseits! Gibt es ein Möglichkeit, Emails einer Aufgabe als Korrespondenz dazu zuzuordnen, ohne dass ich erst die Aufgabe öffnen muss, um das Emailelement als Anhang in die Aufgabe zu...
  8. schwere aufgabe in word 2000 zu lösen

    in Microsoft Word Hilfe
    schwere aufgabe in word 2000 zu lösen: hallo leutz! hab ne schwierige aufgabe die ich in word umsetzen soll, falls das möglich ist. also das projekt besteht aus einer vielzahl an seiten und ist gegliedert mit 1 1.1 1.2 2 2.1...
  1. Diese Seite verwendet Cookies, um Inhalte zu personalisieren, diese deiner Erfahrung anzupassen und dich nach der Registrierung angemeldet zu halten.
    Auf dieser Website werden Cookies für die Zugriffsanalyse und Anzeigenmessung verwendet.
    Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden