Office Forum
www.Office-Loesung.de
Access :: Excel :: Outlook :: PowerPoint :: Word :: Office :: Wieder Online ---> provisorisches Office Forum <-
Dokumentenmanagement
zurück: Dynamische Tabelle samt Bericht. weiter: Automatisch bestimmte Anzahl Datensätze anlegen Unbeantwortete Beiträge anzeigen
Neues Thema eröffnen   Neue Antwort erstellen     Status: Feedback Facebook-Likes Diese Seite Freunden empfehlen
Zu Browser-Favoriten hinzufügen
Autor Nachricht
Gast



Verfasst am:
07. März 2007, 12:53
Rufname:

Dokumentenmanagement - Dokumentenmanagement

Nach oben
       Version: Office 2k (2000)

Hallo Leute,

erstmal muss ich sagen, dass das Forum top ist. Ich habe hier schon einige gute Sachen heraus ziehen können, jedoch finde ich diesmal nichts.... Vielleicht habe ich aber auch nur noch nicht die richtigen Suchbegriffe eingegeben Very Happy

Vielleicht könnt ihr mir ja trotzdem helfen. Ich habe mir ein kleines Dokumentenmanagement aufgebaut, da mir die suche mit Windows immer zu lang dauert. Habe aber folgendes Problem. Ich lasse z. B. die Festplatte C: durchsuchen und lasse alle gefunden Datensätze in eine Datenbank schreiben. Jedoch schreibt er mir im Augenblick wesentlich weniger Daten als eigentlich auf der Platte vorhanden sind in die Datenbak. Wenn ich die Datenbank auf einen anderen PC aufspiele schreibt er zwar mehr Datensätze, aber auch noch nicht alle. Auf dem jetztigen PC findet er ca. 11.000 Sätze, ich habe aber weit über 80.000 auf der Platte. Woran könnte das liegen. Einen Auszug aus meinem Code habe ich mal beigefügt.

Wäre dankbar für jeden Lösungsansatz.

Danke.
René
Code:
    Set fs = Application.FileSearch
    fs.NewSearch
    fs.LookIn = gVerzeichnis
    fs.SearchSubFolders = Unterverzeichnis_Antwort
    fs.FileName = Suche
    If fs.Execute > 0 Then
        Status_Schreiben = SysCmd(acSysCmdInitMeter, "Datensätze schreiben", _
                                  fs.FoundFiles.Count)
        If Antwort = vbYes Then
            For i = 1 To fs.FoundFiles.Count
Naechster_Datensatz:
                Dim db As DAO.Database
                Dim rs As DAO.Recordset
                Status_Schreiben = SysCmd(acSysCmdUpdateMeter, i)
                Set db = CurrentDb()
                Set rs = db.OpenRecordset("d_Dokumente", dbOpenTable)
                'nur Dateiname
                d = StrReverse(fs.FoundFiles(i))
                d = Left(d, InStr(d, "\"))
                d = StrReverse(d)
                d = Replace(d, "\", "")
                rs.AddNew
                rs!Dateiname = d
                'nur Verzeichnis
                Abschneiden = StrReverse(fs.FoundFiles(i))
                Abschneiden = Left(Abschneiden, InStr(Abschneiden, "\"))
                Abschneiden = StrReverse(Abschneiden)
                v = Replace(fs.FoundFiles(i), Abschneiden, "\")
                rs!Verzeichnis = v
                rs.Update
                rs.Close
                db.Close
Nouba
nicht ganz unwissend :)


Verfasst am:
08. März 2007, 06:14
Rufname:
Wohnort: Berlin

AW: Dokumentenmanagement - AW: Dokumentenmanagement

Nach oben
       Version: Office 2k (2000)

Hallo,

Du solltest das Recordset am besten außerhalb der Schleife öffnen. Die Position des letzten Backslashs kann mit der InstrRev-Funktion ermittelt werden. Eine Prozedur könnte ungefähr so ausschauen.

Code:
Sub GetDocuments(InitialPath As String, _
                 Optional WithSubFolders As Boolean = False, _
                 Optional Pattern As String = "*.*")
  Dim rs            As DAO.Recordset
  Dim strMsg        As String
  Dim i             As Long
  Dim lngDocCnt     As Long
  Dim strDocName    As String
  Dim lngPos        As Long

  On Error GoTo LocalError

  With Application.FileSearch
    Call SysCmd(acSysCmdSetStatus, "Bitte warten, suche Dokumente...")
    DoCmd.Hourglass True
    .NewSearch
    .LookIn = InitialPath
    .SearchSubFolders = WithSubFolders
    .FileName = Pattern
    If .Execute() > 0 Then
      lngDocCnt = .FoundFiles.Count
      strMsg = lngDocCnt & " Dokument" _
             & IIf(lngDocCnt = 1, "", "e" & " gefunden")
      Call SysCmd(acSysCmdSetStatus, strMsg)
      DoCmd.Hourglass False
      If MsgBox("Wollen Sie die gefundenen Dokumente in die Tabelle " _
              & "d_Dokumente übernehmen?", _
                vbQuestion Or vbYesNo, "Daten schreiben") = vbYes Then
        Set rs = CurrentDb().OpenRecordset("d_Dokumente", _
                                           dbOpenDynaset, dbAppendOnly)
        DoCmd.Hourglass True
        Call SysCmd(acSysCmdInitMeter, " ", lngDocCnt)
        For i = 1 To lngDocCnt
          Call SysCmd(acSysCmdUpdateMeter, i)
          strDocName = .FoundFiles(i)
          lngPos = InStrRev(strDocName, "\")
          rs.AddNew
          rs!Verzeichnis = Left$(strDocName, lngPos - 1)
          rs!Dateiname = Mid$(strDocName, lngPos + 1)
          rs.Update
        Next i
      End If
    Else
      MsgBox "Es wurden keine Dokumente gefunden"
    End If
  End With

LocalErrorExit:
  On Error Resume Next
  rs.Close
  Call SysCmd(acSysCmdClearStatus)
  DoCmd.Hourglass False
  Exit Sub

LocalError:
  MsgBox Err.Description & " in GetDocuments", , "Fehler-Nr.: " & Err.Number
  Resume LocalErrorExit
End Sub

_________________
mit freundlichen Grüssen Nouba

Wenn beim Lesen eines Beitrags der Eindruck entsteht, dass sich der Fragesteller wenig Mühe gegeben hat, so erhöht das nicht unbedingt die Motivation, eine Antwort zu verfassen.


Zuletzt bearbeitet von Nouba am 08. März 2007, 15:23, insgesamt einmal bearbeitet
Gast



Verfasst am:
08. März 2007, 10:59
Rufname:


AW: Dokumentenmanagement - AW: Dokumentenmanagement

Nach oben
       Version: Office 2k (2000)

Gast am 08. März 2007 um 09:44 hat folgendes geschrieben:
Hi Nouba,

vielen Dank für deine Antwort. Ich bin nicht gerade der Profi bei VBA.... Aber dank für den Tip, werde es gleich mal ausprobierben.

Gruß
René

Wunderbar. Es funktioniert jetzt endlich, wieso auch immer.... Question
Danke Nouba.

Gruß aus dem sonnigen Süden

René
Neues Thema eröffnen   Neue Antwort erstellen Alle Zeiten sind
GMT + 1 Stunde

Diese Seite Freunden empfehlen

Seite 1 von 1
Gehe zu:  
Du kannst Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.
Du kannst Dateien in diesem Forum nicht posten
Du kannst Dateien in diesem Forum herunterladen

----> Diese Seite Freunden empfehlen <------ Impressum - Besuchen Sie auch: Microsoft-Excel Diagramme