Juni 21, 2021, 02:50:01

Neuigkeiten:

Ist euer Problem gelöst, dann bitte den Knopf "Thema gelöst" drücken!


Dateien auslesen und in Tabelle schreiben bzw. updaten

Begonnen von mikepo, Mai 06, 2021, 19:38:04

⏪ vorheriges - nächstes ⏩

mikepo

Hallo zusammen, ich habe folgenden code, der so funktioniert, das er alle dateien (auch in allen unterordnern) ausliest und in eine tabelle schreibt. jedoch schreibt er dies immer wieder rein. ich möchte den code so ändern, das der dateiname nur dann reingeschrieben wird, wenn er noch nicht vorhanden ist. sollte der dateiname schon vorhanden sein, dann soll nur die spalte "DatumLetzteAenderung" geupdated werden.

hier der code:

Private Function OrdnerDateienAuslesen(ByVal strOrdner As String)
    Dim fso As Object
    Dim objFld As Object
    Dim objSubFld As Object
    Dim objFiles As Object
    Dim fld, file
    Dim rs As DAO.Recordset
    Dim db As DAO.Database

    '# Recordset referenzieren
    Set db = CurrentDb
    Set rs = db.OpenRecordset("dbo_tblFreigabe", dbOpenDynaset, dbSeeChanges)
    '# File-System-Object, Startordner, Unterordner referenzieren
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set objFld = fso.GetFolder(strOrdner)
    Set objFiles = objFld.Files
         For Each file In objFiles
             '# Dateiname speichern
             rs.AddNew
             rs!Dateiname = file.Name 'Dateiname
             rs!Dateipfad = file.Path 'Dateipfad
             rs!DatumLetzteAenderung = file.DateLastModified 'Datum Letzte Änderung der Datei
             rs.Update
         Next file
         Set objSubFld = objFld.SubFolders
         For Each fld In objSubFld
         '# Rekursiver Aufruf
         OrdnerDateienAuslesen fld
         Next fld
    '# Objektreferenzen zerstören
    Set db = Nothing
    rs.Close
    Set fso = Nothing
    Set objFld = Nothing
End Function

habe den code selbst von einem anderen forum und dann ein wenig adaptiert. nur leider bin ich bei den next for schleifen mit zuwenig wissen unterwegs.

wäre über eure hilfe sehr dankbar.

danke u lg michael

DF6GL

Hallo,

setze einen zusammengesetzten eindeutigen Tabellen-Index auf die Felder "Dateiname" und "Dateipfad".

Beim Auftreten eines Fehlers wegen doppelten Dateinamens kann dann im aktuellen DS das Feld "DatumLetzteAenderung" aktualisiert werden.

steffen0815

Hallo,
... und was passiert, wenn  eine Datei nicht mehr vorhanden ist?
Gruß Steffen


steffen0815

@DF6GL:
... mal so in den Raum gestellt :)
Der TO will eine Tabelle mit einem Dateisystem synchronisieren.
Er erfasst Änderungen und neue Dateien. Ich habe mich halt gefragt, was mit gelöschten Dateien wird ...
Gruß Steffen

DF6GL

Hallo,

naja, das muss er halt selber herausfinden, bzw. sich ein Konzept dazu  überlegen.

Z. B. ob eine "Backup"-Funktion beteiligt ist oder eine Historie aufgestellt werden soll.  Das hätte zur Folge, dass weitere Datum-Felder und/oder Staus-Felder eingeführt/gepflegt werden müssen.

Beim aktuellen Zustand haben gelöschte Dateien keine Auswirkung auf die entspr. DS in der Tabelle.