Hej !! Hej Tack för det snabba svaret.. men Under ca 20 tecken är Like snabbare. Vet du varför? Jag skulle nog kompletera App.Path med anrop till registret. Hej igenHur fungerar App.path ??
Jag har "knepat" ihop ett program och "hårdkodat" in sökvägen till databasen direkt i datakopplaren (data1).
Vid installationen (via installationsprogrammet) får man välja var man vill installera programmet i den lokala datorn. Efter installationen stämmer inte den "hårdkodade" sökvägen, p.g.a. att användaren ville installera på ett annat ställe. Jag vet att detta kan skötas via App.path, men kommer inte ihåg hur detta går till.
Hjälp och tips önskas snarast ...
Tack på förhand !!Sv: Hur fungerar App.path ??
För att vara riktigt korrekt bör du göra så här
Om användaren mot förmodan lägger applikationen
direkt under tex C: kan du att få två "backslash"
Dim SearchPath As String
SearchPath = App.Path
If Right$(SearchPath, 1) <> "\" Then _
SearchPath = SearchPath & "\"
Data1.DatabaseName = SearchPath & "mindb.mdb"
mvh
SvenSv: Hur fungerar App.path ??
Hur fungerar det lokalt när jag arbetar med programutvecklingen om jag anger ex.vis:
Dim SearchPath As String
SearchPath = App.Path
If Right$(SearchPath, 1) <> "\" Then _
SearchPath = SearchPath & "\"
Data1.DatabaseName = SearchPath & "mindb.mdb"
.. istället för ex.vis:
Data1.DataBaseName = "c:\mina dokument\mind.mdb"
.. eller skall jag ange app.path endast vid distributionen ???
ArneSv: Hur fungerar App.path ??
Exempel:
Public Function Test(Chars As Long)
Dim sTemp As String
Dim Index As Long
Dim StartCount As Long
sTemp = Space(Chars) & "\"
StartCount = GetTickCount()
For Index = 1 To 100000
If sTemp Like "*\" Then
End If
Next
Debug.Print "Like: " & GetTickCount() - StartCount
StartCount = GetTickCount()
For Index = 1 To 100000
If Right$(sTemp, 1) <> "\" Then
End If
Next
Debug.Print "Right$: " & GetTickCount() - StartCount
StartCount = GetTickCount()
For Index = 1 To 100000
If sTemp Like "*\" Then
End If
Next
Debug.Print "Like: " & GetTickCount() - StartCount
StartCount = GetTickCount()
For Index = 1 To 100000
If Right$(sTemp, 1) <> "\" Then
End If
Next
Debug.Print "Right$: " & GetTickCount() - StartCount
StartCount = GetTickCount()
For Index = 1 To 100000
If sTemp Like "*\" Then
End If
Next
Debug.Print "Like: " & GetTickCount() - StartCount
StartCount = GetTickCount()
For Index = 1 To 100000
If Right$(sTemp, 1) <> "\" Then
End If
Next
Debug.Print "Right$: " & GetTickCount() - StartCount
End FunctionSv: Hur fungerar App.path ??
Något sådant här:
'mdlSettings(Module)
Option Explicit
Public Function MapPath(Path As String) As String
Dim sTemp As String
sTemp = App.Path
If Right$(sTemp, 1) <> "\" Then
MapPath = sTemp & "\" & Path
Else
MapPath = sTemp & Path
End If
End Function
Public Property Get DBFileName() As String
DBFileName = GetSetting(App.Title, "Settings", "DBFileName", MapPath("mindb.mdb"))
End Property
Public Property Let DBFileName(vData As String)
SaveSetting App.Title, "Settings", "DBFileName", vData
End Property
'Form1(Form)
Option Explicit
Private Sub Form_Load()
Data1.DatabaseName = DBFileName
End Sub
Private Sub Command1_Click()
Dim sTemp As String
sTemp = InputBox("Ange databas:")
If Len(sTemp) Then
DBFileName = sTemp
End If
End SubSv: Hur fungerar App.path ??
>Hur fungerar det lokalt när jag arbetar med programutvecklingen
Jag arbetar på så sätt att projektet redan vid start ligger
i en arbetsmapp.Dvs jag använder alltid exemplet ovan,
även under utveckling.Jag distruberar projektet i en mapp.
Ett undantag är när man kopplar Data1 till fält, just då
hårdkodar man tillfälligt DataBaseName.
DS