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.