[AccessD] Read External File for Path String

Stuart McLachlan stuart at lexacorp.com.pg
Wed Jan 18 19:59:30 CST 2006


On 18 Jan 2006 at 18:37, Dan Waters wrote:

> Hello Everyone,
> 
> I just spent half the day struggling with the movement of a system from one
> server to another.  The server path is hardcoded in one place in a startup
> form.  What would have helped me a lot is to have the path in a text file or
> ini file external to the database and stored in the same folder.
> 
> Security is not an issue here, just my convenience, as my plans for the day
> were pretty much blown up!
> 
> Using a file for information like this sounds like it might be a fairly
> typical solution.  Does anyone do this or something like it?
> 

Either an INI file  or store it in a System table  in the FE.

Two common approaches to a System Table are:
1.a table with only one record which stores each parameters in a separate 
field. 
2. A table with one record per parameter. Each record  consisting of PName, 
DataType and Value fields.  


If you use an INI file, you should use the standard Windows INI file format 
and  write/read  using API calls:

Option Compare Database
Option Explicit

Declare Function GetPrivateProfileString Lib "kernel32" _
    Alias "GetPrivateProfileStringA" ( _
        ByVal lpApplicationName As String, _
        ByVal lpKeyName As Any, _
        ByVal lpDefault As String, _
        ByVal lpReturnedString As String, _
        ByVal nSize As Long, _
        ByVal lpFileName As String) As Long

Declare Function WritePrivateProfileString Lib "kernel32" _
    Alias "WritePrivateProfileStringA" ( _
        ByVal lpApplicationName As String, _
        ByVal lpKeyName As Any, _
        ByVal lpString As Any, _
        ByVal lpFileName As String) As Long

Const cstrIniFilename As String = "MyApp.Ini"

''****************************
'' Write to INI file
''****************************
Public Function WriteIniFileString( _
        ByVal Sect As String, _
        ByVal Key As String, _
        ByVal Value As String) As Boolean

Dim intCharsReturned As Integer
If Sect = "" Or Key = "" Then
    MsgBox "Section Or Key To Write Not Specified !!!", _
        vbExclamation, "INI"
Else
    WriteIniFileString = WritePrivateProfileString(Sect, _
        Key, Value, ApplDir() & "\" & cstrIniFilename)
End If
End Function

'"****************************
'' Read from INI file
''****************************
Public Function ReadIniFileString( _
        ByVal Sect As String, _
        ByVal Key As String) As String

Dim strReturned As String * 128
Dim intSize As Integer
Dim intCharsReturned As Integer

If Sect = "" Or Key = "" Then
    MsgBox "Section Or Key To Read Not Specified !!!", _
        vbExclamation, "INI"
Else
    strRet = Space$(128)
    intSize = Len(strRet)
    intCharsReturned = GetPrivateProfileString(Sect, Key, "", _
        strReturned, intSize, ApplDir() & "\" & cstrIniFilename)
   If intCharsReturned Then
       ReadIniFileString = Left$(strRet, intCharsReturned)
   End If
End If
End Function

'"****************************
'' Get the application directory
''****************************
Static Function ApplDir() As String
Dim strApplDir As String
Dim strTemp As String
If strApplDir = "" Then
    strTemp = DBEngine(0)(0).Name
    strApplDir = Left$(strTemp, InStrRev(strTemp, "\"))
   End If
   ApplDir = strApplDir
End Function

-- 
Stuart





More information about the AccessD mailing list