ini文件如下:
[DataSource]
ServerName = "aaa"
DataBaseName = "bbb"在modules裡:Global GStrServer As String '服务器
Global GStrDatabase As String '数据库Private Const IniFileName As String = "\ini文件名"
Public 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 LongPublic Sub main()
GetSysPara
End Sub
Public Sub GetSysPara() GStrServer = GetParaFromIni("datasource", "servername")
GStrDatabase = GetParaFromIni("datasource", "databasename")
End SubPublic Function GetParaFromIni(ByVal Mainkey As String, ByVal Childkey As String) As String
Dim StrLen As Long
Dim Buffer As String * 255
StrLen = GetPrivateProfileString(Mainkey, Childkey, "", Buffer, Strings.Len(Buffer), App.Path + IniFileName)
GetParaFromIni = Strings.Mid(Buffer, 1, StrLen)
End Function
[DataSource]
ServerName = "aaa"
DataBaseName = "bbb"在modules裡:Global GStrServer As String '服务器
Global GStrDatabase As String '数据库Private Const IniFileName As String = "\ini文件名"
Public 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 LongPublic Sub main()
GetSysPara
End Sub
Public Sub GetSysPara() GStrServer = GetParaFromIni("datasource", "servername")
GStrDatabase = GetParaFromIni("datasource", "databasename")
End SubPublic Function GetParaFromIni(ByVal Mainkey As String, ByVal Childkey As String) As String
Dim StrLen As Long
Dim Buffer As String * 255
StrLen = GetPrivateProfileString(Mainkey, Childkey, "", Buffer, Strings.Len(Buffer), App.Path + IniFileName)
GetParaFromIni = Strings.Mid(Buffer, 1, StrLen)
End Function
解决方案 »
- 变量的作用域问题, 想不通...
- sql 或 access 存入的word文件片段,如何读取后在连接起来?
- 在VB中调用数据库时,datagrid 或是文本框 显示的小数数字前面的零不显示 ,如何解决?在线等!
- 如何使listbox中的项 分别响应不同的Click事件
- 中控指纹头开发包
- 各位大虾,怎么才能把ACCESS中的内容输出到EXCEL中啊!!
- 怎样用VB实现反方向切换输入法?
- VB数组求救
- 在 access 中构造 sql 查询语句,有具体的用法吗?
- 一个sql server触发器的问题,因为我不知道,我想对大家应当是很简单的!
- 各位大虾:如何用vb实现对SQLserver的备份和恢复,有兴趣者,希望您参加讨论
- 关于MSHFLexGrid的问题?
[database]
Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As Any, ByVal lpFileName As String) As Long
Declare Function WritePrivateProfileSection Lib "kernel32" Alias "WritePrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpString As String, ByVal lpFileName As String) As Long
Declare Function GetPrivateProfileSection Lib "kernel32" Alias "GetPrivateProfileSectionA" (ByVal lpAppName As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As Long
Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Long, ByVal lpFileName As String) As LongFunction ReadWriteINI(Mode As String, FileName As String, tmpSecname As String, Optional tmpKeyname As String, Optional tmpKeyValue) As String
Dim tmpString As String
Dim secname As String
Dim keyname As String
Dim keyvalue As String
Dim anInt
Dim defaultkey As StringOn Error GoTo ReadWriteINIError
If IsNull(Mode) Or Len(Mode) = 0 Then
ReadWriteINI = "MODE ERROR "
Exit Function
End If
If Len(FileName) = 0 Then
ReadWriteINI = "FileName ERROR "
Exit Function
End If
If IsNull(tmpSecname) Or Len(tmpSecname) = 0 Then
ReadWriteINI = "Secname ERROR "
Exit Function
End If
If IsNull(tmpKeyname) Or Len(tmpKeyname) = 0 Then
ReadWriteINI = "Keyname ERROR "
Exit Function
End If' WRITE MODE
If UCase(Mode) = "WRITE" Then
If IsNull(tmpKeyValue) Or Len(tmpKeyValue) = 0 Then
ReadWriteINI = "ERROR KeyValue"
Exit Function
Else
secname = tmpSecname
keyname = tmpKeyname
keyvalue = tmpKeyValue
anInt = WritePrivateProfileString(secname, keyname, keyvalue, FileName)
End If
End If
' READ MODE
If UCase(Mode) = "GET" Then
secname = tmpSecname
keyname = tmpKeyname
defaultkey = "Failed"
keyvalue = String$(50, 32)
anInt = GetPrivateProfileString(secname, keyname, defaultkey, keyvalue, Len(keyvalue), FileName)
If Left(keyvalue, 6) <> "Failed" Then
tmpString = keyvalue
tmpString = RTrim(tmpString)
tmpString = Left(tmpString, Len(tmpString) - 1)
End If
ReadWriteINI = tmpString
End If
Exit Function
ReadWriteINIError:
MsgBox Error
Stop
End FunctionFunction fileexist(fname As String) As Boolean
On Local Error Resume Next
fileexist = (Dir(fname) <> "")
End FunctionPublic Sub Create_file(fname As String)
Dim fs
Dim aa
Set fs = CreateObject("Scripting.FileSystemObject")
Set aa = fs.CreateTextFile(fname, True)
aa.Close
Set fs = Nothing
End Sub
ByVal lpKeyName As Any, '子鍵名字
ByVal lpDefault As String, '缺省字符串
ByVal lpReturnedString As String, '保存得到的字符串的變量
ByVal nSize As Long, '保存得到的字符串的變量的長度
ByVal lpFileName As String 'ini文件的路徑) As Long '函數返回得到的字符串的實際長度
[database]
server="dbserver1"
dbname="db1"
----------------------------------------------------------
在模块中声明如下:
Public 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
Public 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 LongPublic Function WriteIni(ByVal section As String, ByVal key As String, ByVal value As String) As Boolean
Dim x As Long, Buff As String * 128, i As Integer
Buff = value + Chr(0)
x = WritePrivateProfileString(section, key, Buff, App.Path + "\MenuSetting.ini")'** 此处假定你的INI文件在VB工程文件当前目录下
WriteIni = x
End FunctionPublic Function ReadIni(ByVal section As String, ByVal key As String) As String
Dim x As Long, Buff As String * 128, i As Integer
x = GetPrivateProfileString(section, key, "", Buff, 128, App.Path + "\MenuSetting.ini")'
i = InStr(Buff, Chr(0))
ReadIni = Trim(Left(Buff, i - 1))
End Function
假设你在主窗体加载时即从INI读出服务器名称和数据库名称;
Private Sub Form_Load()
dim sDBServer as string
dim sDBName as string
sDBServer = ReadIni("database", "server")'这样服务器名称赋于
sDBServer
sDBName = ReadIni("database", "dbname")'这样数据库名称赋于
sDBName
End Sub'将服务器名称和数据库名称写入INI文件,以备以后读出
假定你已将服务器名称赋于sDBServer,数据库名称赋于sDBName
调用函数writerini()
WriteIni("database", "server", sDBServer)
WriteIni("database", "dbname", sDBName) 我想这样差不多可以解决你的问题
Dim pwd As string
Dim cnstr As string
CALL CInt(ReadWriteINI("WRITE", App.Path + "\db.ini", "数据库配置", "connectionstring",cnstr ))
CALL CInt(ReadWriteINI("WRITE", App.Path + "\db.ini", "数据库配置", "password",pwd))
读INI
Dim pwd As string
Dim cnstr As string
cnstr= CInt(ReadWriteINI("get", App.Path + "\db.ini", "数据库配置", "connectionstring"))
pwd = CInt(ReadWriteINI("get", App.Path + "\db.ini", "数据库配置", "password"))
INI文件:[数据库配置]
connectionstring=
password=
Option Explicit
Private 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
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias _
"WritePrivateProfileStringA" ( _
ByVal lpApplicationName As String, _
ByVal lpKeyName As Any, _
ByVal lpString As Any, _
ByVal lpFileName As String _
) As LongPublic Sub writeText()
Call WritePrivateProfileString("TextBox1", "Text", Form1.txtText1.Text, "d:\test.ini")
Call WritePrivateProfileString("TextBox1", "Text2", "etdd", "d:\test.ini")
Call WritePrivateProfileString("Textroot", "T", "d", "d:\test.ini")
End SubPublic Function getText() As String
Dim sBuffer As String
sBuffer = String(255, 0)
Call GetPrivateProfileString("TextBox1", "Text", "&&&&&", sBuffer, 255, "d:\test.ini")
getText = sBuffer
End FunctionPrivate Sub Form_Load()
txtText1.Text = getText()
End SubPrivate Sub Form_Unload(Cancel As Integer)
Call writeText
End Sub
Private Declare Function WritePrivateProfileString Lib "Kernel32" Alias "WritePrivateProfileStringA" (ByVal AppName As String, ByVal KeyName As String, ByVal keydefault As String, ByVal Filename As String) As LongPrivate sDefInitFileName As String'读取Ini文件
Public Function GetInitEntry(ByVal sSection As String, ByVal sKeyName As String, Optional ByVal sDefault As String = "", Optional ByVal sInitFileName As String = "") As StringDim sBuffer As String
Dim sInitFile As String If Len(sInitFileName) = 0 Then
If Len(sDefInitFileName) = 0 Then
sDefInitFileName = App.Path
If Right$(sDefInitFileName, 1) <> "\" Then
sDefInitFileName = sDefInitFileName & "\"
End If
sDefInitFileName = sDefInitFileName & App.EXEName & ".ini"
End If
sInitFile = sDefInitFileName
Else
sInitFile = sInitFileName
End If
sBuffer = String$(2048, " ")
GetInitEntry = Left$(sBuffer, GetPrivateProfileString(sSection, ByVal sKeyName, sDefault, sBuffer, Len(sBuffer), sInitFile))End Function'写Ini文件
Public Function SetInitEntry(ByVal sSection As String, Optional ByVal sKeyName As String, Optional ByVal sValue As String, Optional ByVal sInitFileName As String = "") As LongDim sInitFile As String If Len(sInitFileName) = 0 Then
If Len(sDefInitFileName) = 0 Then
sDefInitFileName = App.Path
If Right$(sDefInitFileName, 1) <> "\" Then
sDefInitFileName = sDefInitFileName & "\"
End If
sDefInitFileName = sDefInitFileName & App.EXEName & ".ini"
End If
sInitFile = sDefInitFileName
Else
sInitFile = sInitFileName
End If
If Len(sKeyName) > 0 And Len(sValue) > 0 Then
SetInitEntry = WritePrivateProfileString(sSection, ByVal sKeyName, ByVal sValue, sInitFile)
ElseIf Len(sKeyName) > 0 Then
SetInitEntry = WritePrivateProfileString(sSection, ByVal sKeyName, vbNullString, sInitFile)
Else
SetInitEntry = WritePrivateProfileString(sSection, vbNullString, vbNullString, sInitFile)
End IfEnd Function
以上属于网友 gump2000(阿甘) 提供
IniPath = App.path
IniFile = Dir(IniPath & "\" & "123.INI")
If IniFile <> "" Then
MYINI = IniPath & "\" & IniFile
Open MYINI For Input As #1
Input #1, strLine
Input #1, strLine
gstrServer = Trim(Mid(strLine, 12, Len(strLine)))
Input #1, strLine
gstrDatabase = Trim(Mid(strLine, 10, Len(strLine)))
Input #1, strLine
gstrDSN = Trim(Mid(strLine, 5, Len(strLine)))
Input #1, strLine
Input #1, strLine
gHTDataPath = Trim(Mid(strLine, 12, Len(strLine)))
Input #1, strLine
gstrDataSource = Trim(Mid(strLine, 13, Len(strLine)))
Input #1, strLine
gstrUserID = Trim(Mid(strLine, 9, Len(strLine)))
Input #1, strLine
gstrPassword = Trim(Mid(strLine, 10, Len(strLine)))
Input #1, strLine
ComPort = Trim(Mid(strLine, 6, Len(strLine)))
Close #1
Else
MsgBox "Can not Open INI File"
End If
Public Function GetProfileStr(ByVal Appname As String, ByVal Key As String) As String
Dim GetStr As String * 256
Dim ret As Long
On Error Resume Next
ret = GetPrivateProfileString(Appname, Key, "", GetStr, 256, App.Path & "\" & "connection.ini")
If ret = 0 Then
GetProfileStr = ""
Else
GetProfileStr = Left(GetStr, ret)
End If
End Function'函数 取得connection.ini的数据库连接属性
Public Function WriteProfileStr(ByVal Appname As String, ByVal Key As String, ByVal strData As String) As Boolean
Dim ret As Long
On Error Resume Next
ret = WritePrivateProfileString(Appname, Key, strData, App.Path & "\" & "connection.ini")
If ret = 0 Then
WriteProfileStr = False
Else
WriteProfileStr = True
End If
End Function