Office: (Office 2019) Edit und Update

Helfe beim Thema Edit und Update in Microsoft Access Hilfe um das Problem gemeinsam zu lösen; 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... Dieses Thema im Forum "Microsoft Access Hilfe" wurde erstellt von Genusstaucher2, 19. Oktober 2023.

  1. Edit und Update


    Hallo liebe Gemeinde. Ich beiße mir die Zähne aus und benötige ein wenig Hilfe.
    Zunächst der Code:
    Code:
    Public Sub WriteFilesInTable()
    
    Dim db As DAO.Database
    Dim rs, rs1 As DAO.Recordset
    Dim strTbl, strTbl2, strPath As String
    Dim Ext, strDatei, strArtist, strTitel, strNoten, strSong, strTitel1 As String
    Dim fldPfad, fldDatei, fldArtist, fldTitel, fldNoten, fldSong, fldTitel1 As String
    Dim Ordner As Variant
    Dim SQL As String
    
    'Benutzerauswahl Ordner
    Set Ordner = Application.FileDialog(msoFileDialogFolderPicker)
    'Ordner ausgewählt?
    If Ordner.Show = False Then Exit Sub
    'Pfad definieren
    strPath = Ordner.SelectedItems(1)
    
    'Welche Tabelle, welche Daten in welche Felder?
    strTbl = "tbl_Files_Import"
    strTbl2 = "tbl_Files_Edited"
    
    'tbl Felder tbl_Files_Import
    fldPfad = "Pfad"
    fldDatei = "Datei"
    fldArtist = "Artist"
    fldTitel1 = "Titel1"
    fldTitel = "Titel"
    fldNoten = "Noten"
    fldSong = "Song"
    
    'tbl_Files_Import und tbl_Files_Edited Inhalt löschen
    DoCmd.SetWarnings False 'Ausschalten der Meldungen
    DoCmd.RunSQL "DELETE * from tbl_Files_Import;", False 'Löschen aller DS
    DoCmd.RunSQL "DELETE * from tbl_Files_Edited;", False 'Löschen aller DS
    DoCmd.SetWarnings True 'Einschalten der Meldungen
    
    'öffnen tbl_Files_Import
    Set db = CurrentDb
    Set rs = db.OpenRecordset(strTbl, dbOpenDynaset)
    
    'auslesen Verzeichnis, Extension 'berechnen'
    strDatei = Dir(strPath & "\*.*")
    Ext = (Right(strDatei, 3))
    
    'tbl_Files_Import aus Verzeichnis füllen, bis alle Dateien abgearbeitet sind
    Do While strDatei <> ""
        rs.AddNew
        rs(fldPfad) = strPath
        rs(fldDatei) = strDatei
        strArtist = Left(strDatei, InStr(1, strDatei, "-") - 2)
        rs(fldArtist) = strArtist
                
        strTitel1 = Mid(strDatei, InStr(1, strDatei, "-") + 2, Len(strDatei) + 1 - InStr(1, strDatei, "-") + 1)
        rs(fldTitel1) = strTitel1
        strTitel = Left(strTitel1, InStr(1, strTitel1, "-") - 2)
        rs(fldTitel) = strTitel
                
        rs.Update
        strDatei = Dir
    Loop
    
    'Distinct über tbl_Files_Import, da alle Dateien 2 x (mp3 und pdf)
    'und füllen der Tabelle tbl_Files_Edited
        Dim SQL As String
        DoCmd.SetWarnings False 'Ausschalten der Meldungen
        SQL = "SELECT DISTINCT tbl_Files_Import.Pfad, tbl_Files_Import.Artist, tbl_Files_Import.Titel, tbl_Files_Import.Noten, tbl_Files_Import.Song INTO tbl_Files_Edited FROM tbl_Files_Import"
        DoCmd.RunSQL SQL
        DoCmd.SetWarnings True 'Einschalten der Meldungen
    
    'nochmal das gleiche Verzeichnis wie oben auslesen
    strDatei = Dir(strPath & "\*.*")
    
    'Tabelle tbl_Files_Edited öffnen
    Set rs1 = db.OpenRecordset(strTbl2, dbOpenDynaset)
    
    'tbl_Files_Edited mit Dateien aus Verzeichnis anreichern, bis alle Dateien abgearbeitet sind
    Do While strDatei <> ""
        'pdf oder mp3 - nachher wichtig für Zuordnung zum Datensatz
        Ext = (Right(strDatei, 3))
        'Titel aus Datei lesen
        strTitel1 = Mid(strDatei, InStr(1, strDatei, "-") + 2, Len(strDatei) + 1 - InStr(1, strDatei, "-") + 1)
        strTitel = Left(strTitel1, InStr(1, strTitel1, "-") - 2)
                
    'Wenn die Datei eine pdf ist, dann gehe in Tabelle tbl_Files_Edited
    'suche dort nach dem Titel strTitel, öffne den Satz, packe die Datei dazu
    'und mache ein update auf die Tabelle - das gleiche für mp3 unter else
        If Ext = "pdf" Then
            rs1.FindFirst "Titel = 'strTitel'"
            rs1.Edit
            rs1!Noten = strDatei
            rs1.Update
        Else
            rs1.FindFirst "Titel = 'strTitel'"
            rs1.Edit
            rs1!Song = strDatei
            rs1.Update
        End If
        
        'nächste Datei
        strDatei = Dir
    Loop
    
    'Recordset schließen
    rs.Close
    Set rs = Nothing
    rs1.Close
    Set rs1 = Nothing
    Set db = Nothing
    
        MsgBox "Quellverzeichnis eingelesen."
    
    End Sub
    Ziel des Ganzen: Ich habe wechselnde Verzeichnisse mit jeweils nach einem bestimmten Muster benannten Dateien. Interpret - Titel.pdf und Interpret - Titel.mp3. Diese lese ich ein und zum Schluss habe ich ein Formular mit Interpret Titel pdf (=Notenblatt) und mp3 (Song), die ich mit einem jew. follow.me Befehl öffne. Soweit so gut.
    In der 2. Loop Schleife öffne ich eine Tabelle und möchte zu den einzelnen Datensätzen jeweils die pdf-Datei bzw. mp3-Datei zuspielen. Das funktioniert nur beim allerersten Datensatz. Warum auch immer. Ich vermute den Fehler im Edit/Update.
    Aber vlt. geht das auch nicht? Oder nur ganz anders? Oder sowieso ganz anders?
    Ich hoffe, ich konnte es Stand jetzt einigermaßen erklären. Ich habe auch mal meine ganze accdb hochgeladen.
     
    Genusstaucher2, 19. Oktober 2023
    #1
  2. Doming
    Doming hat Ahnung
    Moin,
    hast Du den Code mal im Einzelschritt durchlaufen lassen?
    (Haltepunkt setzen, Code starten und ab Haltepunkt mit F8 zeilenweise weiter)
    Vielleicht kannst Du so erkennen, wo der Code von Deinen Wünschen abweicht.
    Gruß
    Doming
     
  3. Hallo Domin. Ja, durchaus. Script läuft ja auch durch. Mittlerweile habe ich feststellen können, dass beim
    rs1.FindFirst "Titel = 'strTitel'"
    der Satz einfach nicht gewechselt oder geschlossen wird oder was auch immer. Script schreibt statt in den gesuchten Satz immer in den ersten Satz. FindNext bringt auch nichts. Im Augenblick experimentiere ich mit einem sql, der den Satz dann updaten soll. Mal sehen, ob der script das dann anders macht.
     
    Genusstaucher2, 19. Oktober 2023
    #3
  4. Edit und Update

    ...und seltsam, ja, mit SQLs schreibt er in die Datensätze, bzw. hängt das dran, was dran soll... Warum auch immer. Ich habe das 'Editieren' jetzt wie folgt gelöst:

    Code:
    'nochmal das gleiche Verzeichnis wie oben auslesen
    strDatei = Dir(strPath & "\*.*")
    
    Do While strDatei <> ""
        Ext = (Right(strDatei, 3))
        strTitel1 = Mid(strDatei, InStr(1, strDatei, "-") + 2, Len(strDatei) + 1 - InStr(1, strDatei, "-") + 1)
        strTitel = Left(strTitel1, InStr(1, strTitel1, "-") - 2)
                
        If Ext = "pdf" Then
            sqlTitel = "SELECT * FROM tbl_Files_Edited WHERE Titel='" & strTitel & "'"
            Set rs1 = db.OpenRecordset(sqlTitel)
        
            If Not rs1.EOF Then
                rs1.Edit
                rs1!Noten = strDatei
                rs1.Update
            Else
                MsgBox "Datensatz nicht gefunden!"
            End If
            rs1.Close
      
        Else
            sqlTitel = "SELECT * FROM tbl_Files_Edited WHERE Titel='" & strTitel & "'"
            Set rs1 = db.OpenRecordset(sqlTitel)
        
            If Not rs1.EOF Then
                rs1.Edit
                rs1!Song = strDatei
                rs1.Update
            Else
                MsgBox "Datensatz nicht gefunden!"
            End If
            rs1.Close
        End If
        
        strDatei = Dir
    Loop
    
    Set rs = Nothing
    Set rs1 = Nothing
    Set db = Nothing
    
        MsgBox "Quellverzeichnis eingelesen."
    
    End Sub
    Damit mag er das und dann funktioniert es auch. Access lebt...
     
    Genusstaucher2, 19. Oktober 2023
    #4
Thema:

Edit und Update

Die Seite wird geladen...
  1. Edit und Update - Similar Threads - Edit Update

  2. Mit CurrentDb.Execute Update Tabelle aktualisieren aus einer anderen Tabelle

    in Microsoft Access Hilfe
    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: Public Sub Regiesum() Dim Summe As Double Dim db As DAO.Database Dim rs As DAO.Recordset Dim rsAZ As...
  3. Update oder CancelUpdate ohne AddNew oder Edit

    in Microsoft Access Hilfe
    Update oder CancelUpdate ohne AddNew oder Edit: Hallo zusammen Die obige Fehlermeldung erhalte ich bezogen auf die folgenden Codezeilen, mit welchen ich den Benutzer und das Aktualisierungsdatum speichere: Code: Private Sub...
  4. Edit Datensatz

    in Microsoft Access Hilfe
    Edit Datensatz: Hallo, ich habe mal eine generelle Frage zum Editieren von Datensätzen: Im Beispiel habe ich ein Formular zum Erfassen/Editieren und Löschen von Datensätzen erstellt. In diesem befindet sich ein...
  5. update oder CancelUpdate ohne AddNew oder EDIT

    in Microsoft Access Hilfe
    update oder CancelUpdate ohne AddNew oder EDIT: Ich habe ein lästiges Problem in meinem Accessprogramm. Oft wenn ein User einen Datensatz schlüsseln möchte kommt die Fehlermeldung: "Update oder CancelUpdate ohne AddNew oder Edit". Google habe...
  6. Monatlich verschiedene Beträge addieren (edit)

    in Microsoft Excel Hilfe
    Monatlich verschiedene Beträge addieren (edit): Hallo Leute, ich habe eine Tabelle ( mit ach und krach und wenig Ahnung) mit VBA erstellt,in der abhäging von der Kinderanzahl Punkte vergeben werden (1 Kind 40Pkt, 2 Kinder 70Pkt, usw.). In...
  7. Ref edit Control fehlt

    in Microsoft Excel Hilfe
    Ref edit Control fehlt: Hallo zusammen, ich habe mal wieder ein Problem: Habe 2 Rechner, auf dem einen habe ich 3 Makros geschrieben die auch einwandfrei funtionieren. nachdem ich diese auf einen anderen Rechner, der...
  8. Edit Links

    in Microsoft Excel Hilfe
    Edit Links: Möchte in einer Datei nicht gebrauchte Links zu anderen Quelldateien löschen, nur geht das via Datei-Connections-Edit Links-Break Link nicht. Wie kieg ich die Links da weg?
Schlagworte:
  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