[About]

[SPEED Ferret Knowledge Base]

[Lillig & Zahn Company Logo]
Wie kann ich einem SPEED Ferret Workspace programmgesteuert Projekte hinzufügen

Zurück zum Hauptindex

Artikel ID: SFKB0027
Datum: 17. Mai 2001
Gilt für: SPEED Ferret 4.0

Zusammenfassung

Sie können das Automation Interface von SPEED Ferret verwenden, um programmgesteuert Projekte zu einem Workspace hinzuzufügen. Dies kann hilfreich sein, wenn Sie periodisch eine große Anzahl von Datenbanken erstellen, die Sie später mit SPEED Ferret durchsuchen möchten. Die Projekte automatisch hinzuzufügen spart Zeit und stellt sicher, dass Sie keines übersehen.

Beispielcode

Der folgende Beispielcode zeigt, wie Sie eine Kollektion von Access 2000 Datenbanken zu einem SPEED Ferret Workspace hinzufügen.

Dieser Code lokalisiert alle MDB Dateien in einem angegebenen Ordner und allen Unterverzeichnissen. Es wird davon ausgegangen, dass alle MDB Dateien Access 2000 Dateien sind.

Sub AddProjects()
  Const cRootFolder = "c:\"
  Const cNamePrefix = "auto_"
  Dim FileList() As String
  Dim FileCount As Long
  Dim i As Long
  Dim Workspace As sflib.Workspace
  Dim ProjectName As String
  Dim Project As sflib.Project

  ' SPEED Ferret Workspace Objekt erstellen.
  Set Workspace = New sflib.Workspace

  ' Alle existierenden Projekte mit dem angegebenen prefix löschen.
  ' Dies verhindert das Löschen manuell hinzugefügter Projekte
  For i = Workspace.Projects.Count - 1 To 0 Step -1
    Set Project = Workspace.Projects.Item(i)
    If Project.Name Like cNamePrefix + "*" Then Workspace.Projects.Remove i, False
  Next

  ' Alle Projekte im angegebenen Ordner und Untervertzeichnissen anfügen
  EnumFolders cRootFolder, FileList(), FileCount
  For i = 0 To FileCount - 1
    ProjectName = cNamePrefix + MakeProjectName(FileList(i))
    Set Project = Workspace.Projects.Item(ProjectName)
    If Project Is Nothing Then Set Project = Workspace.Projects.Add("MSAC90", ProjectName)
    Project.Parameters = "Database=""" + FileList(i) + """;"
    Project.Parameters = Project.Parameters + "Workgroup=""c:\winnt\system32\system.mdw"";"
    Project.Save
  Next
End Sub

Sub EnumFolders(ByVal Folder As String, FileList() As String, FileCount As Long)
  Dim FileName As String
  Dim SubfolderList() As String
  Dim SubfolderCount As Long
  Dim i As Long

  If Right$(Folder, 1) <> "\" Then Folder = Folder + "\"

  ' Alle MDB Dateien in angegebenen Ordner anzeigen
  FileName = Dir$(Folder + "*.*", vbNormal + vbDirectory)
  Do While Len(FileName) > 0
    If FileName <> "." And FileName <> ".." Then
      If GetAttr(Folder + FileName) And vbDirectory Then
        ReDim Preserve SubfolderList(SubfolderCount)
        SubfolderList(SubfolderCount) = Folder + FileName
        SubfolderCount = SubfolderCount + 1
      ElseIf (FileName Like "*.mdb") Then
        ReDim Preserve FileList(FileCount)
        FileList(FileCount) = Folder + FileName
        FileCount = FileCount + 1
      End If
    End If
    FileName = Dir$()
  Loop

  ' Alle MDB Dateien in den Unterverzeichnissen anzeigen
  For i = 0 To SubfolderCount - 1
    EnumFolders SubfolderList(i), FileList(), FileCount
  Next
End Sub

Function MakeProjectName(ByVal Path As String)

  ' Konvertiert einen kompletten Dateipfad in einen Projektnamen
  ' indem \ zu _ konvertiert wird und ungültige Zeichen entfernt werden.
  ' Modifizieren Sie diese Routine um die Namen Ihren Wünschen anzupassen.
  Const cValidChars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQUSTUVWXYZ0123456789_"
  Dim c As String
  Dim i As Long
  Dim Result As String

  For i = 1 To Len(Path)
    c = Mid$(Path, i, 1)
    If InStr(cValidChars, c) <> 0 Then
      Result = Result + c 'omit invalid chars
    ElseIf c = "\" Then
      Result = Result + "_"
    End If
  Next
  MakeProjectName = Result
End Function

Anmerkungen

Um diesen Code durchführen zu können, müssen Sie eine Referenz zur SPEED Ferret 4.0 Object Library hinzufügen.

In Access wählen Sie Extras/Verweise (der Menüpunkt existiert nur, wenn Sie ein Modul im Entwurfsmodus geöffnet haben) und klicken wählen Sie die Checkbox neben der "SPEED Ferret 4.0 Object Library". Es wird ein Prefix an den Projektnamen angefügt, um die programmtechnisch erzeugten Projekte von den manuell erstellten zu unterscheiden.

MSAC90 ist der Name des Access 2000 Interfaces. Dieser wird der Projects.Add Methode als erster Parameter übergeben. Um Projekte unterschiedlichen Typs zu erstellen, verwenden Sie einen anderen Interfacenamen. Wenn Sie ein Projekt hinzufügen, muß auch eine Zeichenfolge mit Projektparametern übergeben werden. Das Format der Zeichenfolge ist treiberabhängig. Für den Access 2000 Treiber hat die Zeichenfolge das Format "Database={database_path};Workgroup={workgroup_path}.

Beispiel:

Database="c:\MyStuff\MyDatabase.mdb";Workgroup="c:\winnt\system32\system.mdw".

Zur Ansicht des kompletten SPEED Ferret Objektmodells drücken Sie F2 um den Objektbrowser zu Öffnen. Wählen Sie dann die sflib Bibliothek in der oberen linken Listbox.

Copyright (c) 1998-2004 Lillig & Zahn Softwarentwicklung und Black Moshannon Systems. Alle Rechte vorbehalten.
SPEED Ferret ist ein Warenzeichen von Black Moshannon Systems.