Office: Mit CurrentDb.Execute Update Tabelle aktualisieren aus einer anderen Tabelle

Helfe beim Thema Mit CurrentDb.Execute Update Tabelle aktualisieren aus einer anderen Tabelle in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; Hallo Leute, ich hoffe ihr könnt mir weiter helfen... ich habe folgendes Modul erstellt: Public Sub Regiesum() Dim Summe As Double Dim db As... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von dejupp, 16. Januar 2024.

  1. dejupp User

    Mit CurrentDb.Execute Update Tabelle aktualisieren aus einer anderen Tabelle


    Hallo Leute,

    ich hoffe ihr könnt mir weiter helfen... ich habe folgendes Modul erstellt:

    Code:
    Public Sub Regiesum()
    
    Dim Summe As Double
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim rsAZ As DAO.Recordset
    Dim i As Integer
    Dim digiti As String
    Dim digitiAZ As String
    
    
    Set db = CurrentDb
    Set rs = db.OpenRecordset("select * from RegieImp")
    Set rsAZ = db.OpenRecordset("select * from RegieAZImp")
    'On Error Resume Next
    
    
    Do Until rs.EOF
        digiti = rs![DigiTi ID]
        
        Summe = Nz(DSum("[Feld6]", "RegieAZImp", "[DigiTi_ID] = '" & digiti & "'"))
        'Debug.Print Summe
        Do Until rsAZ.EOF
            digitiAZ = rsAZ![DigiTi_ID]
            rsAZ.MoveNext
            
        Loop
        If Summe <> DLookup("[StdSumme]", "RegieImp", "[DigiTi ID] = '" & digitiAZ & "'") Then
        'Debug.Print digiti & " = " & Summe   nur zum testen
        'CurrentDb.Execute "Update RegieImp set StdSumme=" & Summe & " Where StdSumme=" & 0   nur zum testen
        CurrentDb.Execute "Update RegieImp set StdSumme=" & Summe & " Where [DigiTi ID] = " & digitiAZ
        
        End If
        rs.MoveNext
    Loop
    
    End Sub
    Ziel des Modules ist es, mit Hilfe von currentdb.Execute update ... Daten aus einer Tabelle "RegieAZImp" zusammen zu addieren und dann in eine Tabelle "RegieImp" in ein Feld "StdSumme" ein zu tragen. In beiden Tabellen gibt es (u.a.) eine eindeutige Nummer. In "RegieAZImp" ist es "DigiTi_ID" und in "RegieImp" ist es "DigiTi ID". In der Tabelle "RegieImp" importiere ich Daten aus Excel-Dateien mit Stunden(Regie)Nachweisen, jeweils mit einer eindeutigen Digiti ID, je Nachweis. In die Tabelle "RegieAZImp" importiere ich Detaildaten (aus csv-Dateien) zu den einzelnen Regienachweisen, hier jeweils mit der dazugehörigen Digiti ID kombniert mit einer PersonenID (damit es wieder eindeutig wird). hier stehen dann auch Stundenanzahlen drin. Die Summe der einzelnen Stunden pro Digiti ID möchte ich gern dann in der Tabelle "RegieImp" im Feld "StdSumme" ergänzen.
    Bei der Currentdb.execute update Zeile bringt er mir ständig Laufzeitfehler 3144. Es muss was mit der Synthax zutun haben.
    Wenn ich mit Hochkommes, und Anführungszeichen und & versuche herumzu spielen kommt auch manchmal "1 Parameter wurde erwartet, es wurden zu wenig Prameter übergeben".
    Kann mir jemand die richtige Sythax verraten?

    Vielen Dank
    De Jupp
     
  2. andyfau
    andyfau Erfahrener User
    Hallo,
    die Update-Anweisung würde ich nicht unmittelbar hinter der .Execute-Anweisung setzen. Da muss der Compiler jedes mal alles auflösen und das ist schwer nachzuvollziehen. Baue den SQL-String doch zuerst in einer Variablen zusammen. Dann kannst Du ihn mit Debug.Print im Direktfenster anschauen. Da wird Dir dann sicher ein Hochkomma zu viel oder eine Variable die nicht aufgelöst wird, auffallen.
     
    andyfau, 17. Januar 2024
    #2
  3. dejupp User
    Hallo andyfau,
    danke für deine Antwort.
    ich hab s wie folgt gelöst:
    Code:
    Public Sub Regiesum()
    
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim rsAZ As DAO.Recordset
    Dim Summe As String
    Dim digiti As String
    Dim digitiAZ As String
    
    Set db = CurrentDb
    Set rs = db.OpenRecordset("select * from Regie")
    Set rsAZ = db.OpenRecordset("select * from RegieAZImp")
    On Error Resume Next
    
    Do Until rs.EOF
        digiti = rs![Digiti_ID]
        digitiAZ = Nz(DLookup("[Digiti_ID]", "RegieAZImp", "[DigiTi_ID] = '" & digiti & "'"))
        Summe = Nz(DSum("[Feld6]", "RegieAZImp", "[DigiTi_ID] = '" & digiti & "'"))
        
        If Summe <> Nz(DLookup("[StdSumme]", "Regie", "[DigiTi_ID] = '" & digitiAZ & "'")) Then
            'Debug.Print Summe & " Stunden für " & digiti
            CurrentDb.Execute "Update Regie set StdSumme= '" & Summe & "' Where " & "[DigiTi_ID] = '" & digitiAZ & "'"
        'Else
            'Debug.Print Summe & " Stunden für " & digiti
        End If
        rs.MoveNext
    Loop
    
    End Sub
     
    1 Person gefällt das.
  4. Doming
    Doming hat Ahnung

    Mit CurrentDb.Execute Update Tabelle aktualisieren aus einer anderen Tabelle

    Moin DeJupp,
    eigentlich macht es keinen großen Sinn, Summen in einem Feld abzulegen, die kann man aktuell mit Abfragen errechnen.
    Und mit On Error Resume Next schaltest Du ja jede Warnung ab und siehst nicht mehr, was mit Deinen Daten passiert.
    Gruß
    Doming
     
  5. dejupp User
    Hallo Doming,
    ja danke dir für den Tip. Das ist etwas gewachsen. Ich greife ja mit den Formularen und Berichten immer auf die Tabelle direkt zu. Und da ich die Daten ja jetzt erst neu) aus einer XLS und mehreren CSV Dateien importieren muss (früher habe ich die Daten selber geschrieben und da war das alles kein Problem), würde das etwas kompliziert werden.
    Wo müsste ich denn die Abfrage reinschreiben?

    Ja, das ist mir bewusst. Das habe ich auch erst mit reingenommen, als ich es getestet habe und es funktioniert hat.
    Viele Grüße
    DeJupp
     
Thema:

Mit CurrentDb.Execute Update Tabelle aktualisieren aus einer anderen Tabelle

Die Seite wird geladen...
  1. Mit CurrentDb.Execute Update Tabelle aktualisieren aus einer anderen Tabelle - Similar Threads - CurrentDb Execute Update

  2. Edit und Update

    in Microsoft Access Hilfe
    Edit und Update: Hallo liebe Gemeinde. Ich beiße mir die Zähne aus und benötige ein wenig Hilfe. Zunächst der Code: Public Sub WriteFilesInTable() Dim db As DAO.Database Dim rs, rs1 As DAO.Recordset Dim strTbl,...
  3. Outlook Signaturen fehlen nach update

    in Microsoft Outlook Hilfe
    Outlook Signaturen fehlen nach update: Hallo, ich nutze Win 10 und Outlook 2016. Anscheinend gab es ein größeres Update im April und als erstes fiel mir auf, dass die Statusleiste von unten nach links verschoben wurde. Das konnte ich...
  4. Outlook AutoVervollständigen-Liste

    in Microsoft Outlook Hilfe
    Outlook AutoVervollständigen-Liste: Hallo zusammen, seitdem Microsoft Office Home and Business 2019 ein Update auf Version 16.0.16227.20280 am 18.04. automatisch installiert hat, werden keine E-Mail-Adressen mehr vorgeschlagen,...
  5. Access Tabelle mit Excel Daten updaten

    in Microsoft Access Hilfe
    Access Tabelle mit Excel Daten updaten: Hallo zusammen, ich habe eine Excel Arbeitsmappe die ständig aktualisiert wird. Die Spaltennamen stimmen mit den Spaltennamen der Tabelle in Access überein. Jetzt möchte ich gerne einen VBA Code...
  6. Attribut Schreibschutz

    in Microsoft Excel Hilfe
    Attribut Schreibschutz: Hallo Wissen...! In einem Excel-Dokument habe ich diverse Makros, welche jeweils ein spezifisches Word Dokument öffnen und in diesem Daten aus dem Excel an bestimmte Stellen im Word-Dokument,...
  7. Transaktionen und CurrentDB()?

    in Microsoft Access Hilfe
    Transaktionen und CurrentDB()?: Hallo zusammen, ich habe in meiner Anwendung eine globale Variable Dim db as DAO.Database definiert, welche beim Starten mit set db = CurrentDB initialisiert wird. Alle folgenden Zugriffe auf...
  8. EXECUTE-Anweisung

    in Microsoft Access Tutorials
    EXECUTE-Anweisung: EXECUTE-Anweisung Access für Microsoft 365 Access 2019 Access 2016 Access 2013 Access 2010 Access 2007 Mehr... Weniger...
  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