title image


Smiley Re: ne generelle Frage zum Thema Datenbanken
Mahlzeit,die INI-Datei ist sicher ein gangbarer Weg. Setzt aber auch voraus, dass die Einträge gepflegt werden.Eine andere Möglichkeit wäre die automatische Suche nach der Datenbank. Ein ähnliches Problem hatte ich mal in einer Access-Anwendung. Unter Access 97 hilft die Verwendung der imagehlp.dll beim Suchen nach Dateien.Das sieht dann so aus:1. Allgemeine Definitionen:Global Const MAX_PATH = 260Public g_letzteslw As StringDeclare Function SearchTreeForFile Lib "imagehlp.dll" _(ByVal sRootPath As String, _ ByVal InputPathName As String, _ ByVal OutputPathBuffer As String) As Boolean2. Suchen nach der Datei (in meiner Datenbank wird die Suche gestartet, wenn verknüpfte Tabellen nicht gefunden werden):Der Part mit den Laufwerksbuchstaben ist nicht sonderlich elegant, aber für eine bessere Lösung fehlte mir die Zeit.Function HoleDatenbank(strFileName As String) As String ' Übergeben wird der Name der Datenbank-Datei ' Suchen der Datenbanken Dim sResult As String Dim x As Byte Dim v_ant As Byte Dim sDrive2Scan As String, sFile2Find As String Dim getfilelocation As String sFile2Find = strFileName sResult = Space(MAX_PATH) ' Versuchen wir es zuerst mit der letzten Einstellung If IsNull(g_letzteslw) Or IsEmpty(g_letzteslw) Then g_letzteslw = "c" Else sDrive2Scan = g_letzteslw & ":\" If SearchTreeForFile(sDrive2Scan, sFile2Find, sResult) Then getfilelocation = Left(sResult, InStr(sResult, vbNullChar) - 1) GoTo gefunden End If End If ' 1. Chance mit Eingabe des Buchstabens Dim v_lw As String Dim v_mel As String v_mel = "Geben Sie bitte den Laufwerksbuchstaben an," & Chr(13) v_mel = v_mel & "auf dem sich die Datenbank " & Chr(13) v_mel = v_mel & strFileName & " befindet." & Chr(13) & Chr(13) v_mel = v_mel & "Es genügt nur der Buchstabe, den Zusatz ':\' lassen Sie bitte weg." v_lw = InputBox(v_mel, "Laufwerksauswahl", g_letzteslw) If v_lw = "" Or IsNull(v_lw) Or IsEmpty(v_lw) Then Else sDrive2Scan = v_lw & ":\" If SearchTreeForFile(sDrive2Scan, sFile2Find, sResult) Then getfilelocation = Left(sResult, InStr(sResult, vbNullChar) - 1) g_letzteslw = Mid(sDrive2Scan, 1, 1) GoTo gefunden End If End If ' Chance nicht genutzt, jetzt beginnt die Ochsentour DoCmd.Hourglass True v_mel = "Es werden jetzt alle angeschlossenen Laufwerke überprüft." & Chr(13) v_mel = v_mel & "Dieser Vorgang kann einige Minuten daueren." MsgBox v_mel, 48, "Hinweis" For x = 1 To 27 Step 1 Select Case x Case 1 sDrive2Scan = "a:\" Case 2 sDrive2Scan = "b:\" Case 3 sDrive2Scan = "c:\" Case 4 sDrive2Scan = "d:\" Case 5 sDrive2Scan = "e:\" Case 6 sDrive2Scan = "f:\" Case 7 sDrive2Scan = "g:\" Case 8 sDrive2Scan = "h:\" Case 9 sDrive2Scan = "i:\" Case 10 sDrive2Scan = "j:\" Case 11 sDrive2Scan = "k:\" Case 12 sDrive2Scan = "l:\" Case 13 sDrive2Scan = "m:\" Case 14 sDrive2Scan = "n:\" Case 15 sDrive2Scan = "o:\" Case 16 sDrive2Scan = "p:\" Case 17 sDrive2Scan = "q:\" Case 18 sDrive2Scan = "r:\" Case 19 sDrive2Scan = "s:\" Case 20 sDrive2Scan = "t:\" Case 21 sDrive2Scan = "u:\" Case 22 sDrive2Scan = "v:\" Case 23 sDrive2Scan = "w:\" Case 24 sDrive2Scan = "x:\" Case 25 sDrive2Scan = "y:\" Case 26 sDrive2Scan = "z:\" Case Else sDrive2Scan = "c:\" End Select If SearchTreeForFile(sDrive2Scan, sFile2Find, sResult) Then getfilelocation = Left(sResult, InStr(sResult, vbNullChar) - 1) g_letzteslw = Mid(sDrive2Scan, 1, 1) GoTo gefunden End If Next x DoCmd.Hourglass False Dim meldg As String meldg = "Die Datenbank " & strFileName & " wurde nicht gefunden." & Chr(13) meldg = meldg & "Stellen Sie sicher, dass die Datenbank sich auf einem angeschlossenen Laufwerk" & Chr(13) meldg = meldg & "befindet und starten Sie dann das Programm erneut!" MsgBox meldg, 48, "Fehlermeldung" DoCmd.Quit acQuitSaveNonegefunden: DoCmd.Hourglass False HoleDatenbank = getfilelocationEnd FunctionVielleicht liefert dir das ja eine paar Ideen für dein Problem. Manche Befehle sind natürlich Access-typisch, z.B. Docmd....GrußJörg

geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: