Einfache Lösungen für MS Access
Die folgenden Funktionen habe ich sorgfältig geprüft und in eigenen Projekten genutzt. Trotzdem kann ich keine Haftung übernehmen. Die Verwendung ist auf eigenen Gefahr.
- DScores
- Diese Funktion liefert die Anzahl der Datensätze einer Tabelle gfls. mit Filterbedingung.
- CountFiles
- Diese Funktion gibt die Anzahl der Dateien in einem bestimmten Verzeichnis und gfls. den darunter liegenden Verzeichnissen aus.
- IsOpen
- Diese Funktion ermittelt, ob eine Datei bereits geöffnet ist - Idee von mvps.org/access, Erweiterung (err.number) Thomas Eicker
- DBSize
- Die Funktion liefert die Dateigröße der aktuellen Datenbank, gfls. mit formatierter Ausgabe
- GetAccVersAndSP
- Diese Funktion liefert Version und Servicepack von Access
DScores
Public Function DScores(Domain As String, Optional SQLWhereClaus As String) As Long On Error GoTo er_DScores Dim cnx As ADODB.Connection, rst As ADODB.Recordset If Left(Domain, 6) <> "SELECT" Then If Left(Domain, 1) <> "[" Then Domain = "[" & Domain If Right(Domain, 1) <> "]" Then Domain = Domain & "]" If SQLWhereClaus <> "" Then _ Domain = "SELECT * FROM " & Domain & " WHERE (" & SQLWhereClaus & ");" End If Set cnx = CurrentProject.Connection Set rst = New ADODB.Recordset rst.Open Domain, cnx, adOpenStatic, adLockReadOnly DScores = rst.RecordCount ex_DScores: On Error Resume Next rst.Close Set rst = Nothing cnx.Close Set cnx = Nothing Exit Function er_DScores: DScores = 0 Resume ex_DScores End Function
CountFiles
Public Function CountFiles(Directory As String, _ Optional Filetype As String, _ Optional InclSubFolders As Boolean) As Long Dim lngFT As Long If Directory = "" Then GoTo WithoutFiles Select Case Filetype Case "xls", "xlsx": lngFT = msoFileTypeExcelWorkbooks Case "doc", "docx": lngFT = msoFileTypeWordDocuments Case Else: lngFT = msoFileTypeAllFiles End Select With Application.FileSearch .LookIn = Directory .SearchSubFolders = InclSubFolders .Filetype = lngFT If .Execute() > 0 Then CountFiles = .FoundFiles.count Exit Function End If End With WithoutFiles: CountFiles = 0 End Function
IsOpen
Public Function IsOpen(sDateiname) As Boolean On Error GoTo er_IsOpen Dim intFree As Integer intFree = FreeFile() Open sDateiname For Input Lock Read As intFree IsOpen = False ex_IsOpen: On Error Resume Next Close #intFree Exit Function er_IsOpen: Select Case Err.Number Case 70 ' Zugrif verweigert IsOpen = True Case Else IsOpen = False End Select Resume ex_IsOpen End Function
DBSize
Function DBSize(Optional sDatabase As String, Optional fFormated As Boolean) As Variant If Len(sDatabase) = 0 Then sDatabase = CurrentDb.Name DBSize = FileLen(sDatabase) If fFormated Then Select Case DBSize Case Is < 10240 Case Is < 1048576 DBSize = Round(DBSize / 1024, 0) & " KB" Case Is < 1073741824 DBSize = Round(DBSize / 1048576, 1) & " MB" Case Else DBSize = Round(DBSize / 1073741824, 2) & " GB" End Select End If End Function
GetAccVersAndSP
Function GetAccVersAndSP(Optional ShowServicePack As Boolean = True) As String Dim strVers As String, strSP As String Select Case Val(SysCmd(acSysCmdAccessVer)) Case 9 'Access 2000 strVers = "Access 2000" Select Case SysCmd(715) Case 2719: strSP = "Kein SP!" Case Is >= 6620: strSP = "SP-3" Case Is >= 4506: strSP = "SP-2" Case Is >= 3822: strSP = "SP-1" Case Else: strSP = "Unbekanntes SP!" End Select Case 10 'Access 2002/XP strVers = "Access 2002/XP" Select Case SysCmd(715) Case 2627: strSP = "Kein SP!" Case Is >= 6501: strSP = "SP-3" Case Is >= 4302: strSP = "SP-2" Case Is >= 3409: strSP = "SP-1" Case Else: strSP = "Unbekanntes SP (" & SysCmd(715) & ")" End Select Case 11 'Access 2003 strVers = "Access 2003" Select Case SysCmd(715) Case 5614: strSP = "Kein SP!" Case Is >= 8166: strSP = "SP-3" Case Is >= 6566: strSP = "SP-2" Case Is >= 6355: strSP = "SP-1" Case Else: strSP = "Unbekanntes SP (" & SysCmd(715) & ")" End Select Case 12 'Access 2007 strVers = "Access 2007" Select Case SysCmd(715) Case Is >= 6423: strSP = "SP-1" Case Else: strSP = "Unbekanntes SP (" & SysCmd(715) & ")" End Select Case 14 'Access 2010 strVers = "Access 2010" Select Case SysCmd(715) Case Is >= 7104: strSP = "SP-1" Case Else: strSP = "Unbekanntes SP (" & SysCmd(715) & ")" End Select Else strVers = "unbekannte Version" ShowServicePack = False End Select If ShowServicePack Then GetAccVersAndSP = strVers & ", " & strSP Else GetAccVersAndSP = strVers End If End Function