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 Long '读取INI文件 Function GetIni(ByVal Key$, ByVal Data$ = "",ByVal sIniFileName, Optional ByVal DefaltValue$) As String Dim ReturnS As String * 256, tempStr$ If sIniFileName = "" Then sIniFileName = MainS.IniFile GetPrivateProfileString Key, Data, "", ReturnS, 256, sIniFileName tempStr = Left(ReturnS, InStr(ReturnS, Chr(0)) - 1) GetIni = tempStr End Function'执行指定的程序 sub stst() dim Prog$ prog=getini("程序组","程序","c:\test.ini") '判断是否由##括起来,如果是的话就执行 if left(prog,1)="#" and right(prog,1)="#" then prog=mid(prog) prog=left(prog,len(prog)-1) shell(prog) endif end sub
Public ADO_Cnn As New ADODB.Connection Public ADO_Cmm As New ADODB.Command Public ADO_Rs As New ADODB.Recordset Public str As String Public ComputerList As Collection Public MessageList As Collection Public G_sysdate As String '数据库系统时间 Dim ErrADO As Error 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 LongPublic Function Connect() On Error GoTo err_txt: Connect = False Dim ServerName As String Dim DataBaseName As String Dim MoneyDate As String Dim returni As Long Dim SQLError As Boolean Dim SQLErrorNumber As Long Dim SQLErrorDescription As String Dim SQLErrorState As Long Dim SQLErrorSource As String Dim SQLNativeError As String Dim AppPath As String
returni = GetPrivateProfileString("SERVER", "servername", "", ServerName, 20, AppPath & "\dblinkw.ini") returni = GetPrivateProfileString("DATABASE", "databasename", "", DataBaseName, 30, AppPath & "\dblinkw.ini") returni = GetPrivateProfileString("DATE", "date", "", MoneyDate, 16, AppPath & "\dblinkw.ini") DataBaseName = Mid(Trim(DataBaseName), 1, Len(Trim(DataBaseName)) - 1) ServerName = Mid(Trim(ServerName), 1, Len(Trim(ServerName)) - 1) MoneyDate = Mid(Trim(MoneyDate), 1, Len(Trim(MoneyDate)) - 1) On Error GoTo ErrConn str = "Provider=SQLOleDB;Data Source=" & ServerName & _ ";Initial Catalog=" & _ DataBaseName & _ ";User Id=sa;Password=;" Set ADO_Cnn = New ADODB.Connection With ADO_Cnn .ConnectionString = str .Open End With Connect = True Exit Function ErrConn: '访问数据库出错时的记录 For Each ErrADO In M_Conn.Errors SQLError = True SQLErrorNumber = ErrADO.number SQLErrorDescription = ErrADO.Description SQLErrorState = ErrADO.SQLState SQLErrorSource = ErrADO.Source SQLNativeError = ErrADO.NativeError Exit For Next MsgBox Err.number & Err.Description Exit Function err_txt: If Err.number = -2147467259 Then MsgBox "无法从服务器取得数据!", 48, "信息提示窗口" Exit Function End If End Function
还要对数据库进行操作吗?太难了啊! to:: zjcxc(邹建) Function GetIni(ByVal Key$, ByVal Data$ = "",ByVal sIniFileName, Optional ByVal DefaltValue$) As String这句怎么理解啊?缺少分隔符吗?
Windows API函数,并在其中封装自定义的读取、写入INI的函数:
Option Explicit
'读写INI的API函數 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 Long
'自定义写入INI函數 Public 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") WriteIni = x End Function
'自定义读取INI函數 Public 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 主窗体代码:
Option Explicit '声明用于判断写入INI中的FileName(n)中的n变量 Dim I As String '为了能添在FileName串的后面,声明为String
Private Sub Form_Load() I = 0 '初值 Text1.Left = 0 Text1.Top = 0 Text1 = "" Text1.FontSize = 12 Me.Caption = "txtEditor" Me.Width = 8000 Me.Height = 6000 AddMenu '添加动态菜单 End Sub
Private Sub Form_Resize() '这个没什么可说,为了使例程完整而已 Text1.Width = Me.ScaleWidth Text1.Height = Me.ScaleHeight End Sub
Private Sub mnuExit_Click() End '退出 End Sub
'打开文件 Private Sub mnuOpen_Click() Dim sF As String CommonDialog1.Filter = "文档文件(*.txt)|*.txt|所有文件(*.*)|*.*" CommonDialog1.ShowOpen Open CommonDialog1.FileName For Input As #1 Text1.Text = StrConv(InputB$(LOF(1), 1), vbUnicode) Close #1 If I > = 3 Then I = 0 '如大于等于3则返回原值 I = I + 1 sF = "FileName" + I '打开后写进INI文件 CommonDialog1.FileName = WriteIni("Open", sF, CommonDialog1.FileName) AddMenu '立即添加使动态菜单生效 End Sub
'添加菜单 Private Sub AddMenu() Dim fN1 As String, fN2 As String, fN3 As String '從INI文件中读取数据 fN1 = ReadIni("Open", "FileName1") fN2 = ReadIni("Open", "FilEName2") fN3 = ReadIni("Open", "FileName3") '如数据存在则令动态菜单可见并给其Caption属性赋值 If fN3 < > "" Then mnuSep02.Visible = True: mnuAdd(1).Visible = True: mnuAdd(1).Caption = fN1 If fN2 < > "" Then mnuSep02.Visible = True: mnuAdd(2).Visible = True: mnuAdd(2).Caption = fN2 If fN1 < > "" Then mnuSep02.Visible = True: mnuAdd(3).Visible = True: mnuAdd(3).Caption = fN3 End Sub
Option Explicit'INI文件读取操作APIDeclare Function WritePrivateProfileString _ Lib "kernel32" Alias "WritePrivateProfileStringA" _ (ByVal lpApplicationname As String, ByVal _ lpKeyName As Any, ByVal lsString As Any, _ ByVal lplFilename As String) As LongDeclare 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 LongPublic Function GetIniStr(ByVal AppName As String, ByVal In_Key As String, ByVal sFileName As String) As String '******************************************* '读ini文件,不固定节点,in_key为读取的主键 '针对字符串值,空值表示出错 '******************************************* On Error GoTo GetIniStrErr If VBA.Trim(In_Key) = "" Then GoTo GetIniStrErr End If Dim GetStr As String GetStr = VBA.String(128, 0) GetPrivateProfileString AppName, In_Key, "", GetStr, 256, sFileName GetStr = VBA.Replace(GetStr, VBA.Chr(0), "") If GetStr = "" Then GoTo GetIniStrErr Else GetIniStr = GetStr GetStr = "" End If Exit Function
GetIniStrErr: Err.Clear GetIniStr = "" GetStr = "" End Function Public Function WriteIniStr(ByVal AppName As String, ByVal In_Key As String, ByVal In_Data As String, ByVal sFileName As String) As Boolean '******************************************* '写ini文件,不固定节点,in_key为写入的主键 '针对字符串值,False表示出错 '******************************************* On Error GoTo WriteIniStrErr WriteIniStr = True If VBA.Trim(In_Data) = "" Or VBA.Trim(In_Key) = "" Or VBA.Trim(AppName) = "" Then GoTo WriteIniStrErr Else WritePrivateProfileString AppName, In_Key, In_Data, sFileName End If Exit Function
WriteIniStrErr: Err.Clear WriteIniStr = False End Function
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 Long
'读取INI文件
Function GetIni(ByVal Key$, ByVal Data$ = "",ByVal sIniFileName, Optional ByVal DefaltValue$) As String
Dim ReturnS As String * 256, tempStr$
If sIniFileName = "" Then sIniFileName = MainS.IniFile
GetPrivateProfileString Key, Data, "", ReturnS, 256, sIniFileName
tempStr = Left(ReturnS, InStr(ReturnS, Chr(0)) - 1)
GetIni = tempStr
End Function'执行指定的程序
sub stst()
dim Prog$
prog=getini("程序组","程序","c:\test.ini")
'判断是否由##括起来,如果是的话就执行
if left(prog,1)="#" and right(prog,1)="#" then
prog=mid(prog)
prog=left(prog,len(prog)-1)
shell(prog)
endif
end sub
Public ADO_Cmm As New ADODB.Command
Public ADO_Rs As New ADODB.Recordset
Public str As String
Public ComputerList As Collection
Public MessageList As Collection
Public G_sysdate As String '数据库系统时间
Dim ErrADO As Error
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 LongPublic Function Connect()
On Error GoTo err_txt:
Connect = False
Dim ServerName As String
Dim DataBaseName As String
Dim MoneyDate As String
Dim returni As Long
Dim SQLError As Boolean
Dim SQLErrorNumber As Long
Dim SQLErrorDescription As String
Dim SQLErrorState As Long
Dim SQLErrorSource As String
Dim SQLNativeError As String
Dim AppPath As String
ServerName = Space(20)
DataBaseName = Space(30)
MoneyDate = Space(2)
AppPath = App.Path
returni = GetPrivateProfileString("SERVER", "servername", "", ServerName, 20, AppPath & "\dblinkw.ini")
returni = GetPrivateProfileString("DATABASE", "databasename", "", DataBaseName, 30, AppPath & "\dblinkw.ini")
returni = GetPrivateProfileString("DATE", "date", "", MoneyDate, 16, AppPath & "\dblinkw.ini") DataBaseName = Mid(Trim(DataBaseName), 1, Len(Trim(DataBaseName)) - 1)
ServerName = Mid(Trim(ServerName), 1, Len(Trim(ServerName)) - 1)
MoneyDate = Mid(Trim(MoneyDate), 1, Len(Trim(MoneyDate)) - 1)
On Error GoTo ErrConn
str = "Provider=SQLOleDB;Data Source=" & ServerName & _
";Initial Catalog=" & _
DataBaseName & _
";User Id=sa;Password=;"
Set ADO_Cnn = New ADODB.Connection
With ADO_Cnn
.ConnectionString = str
.Open
End With
Connect = True
Exit Function
ErrConn:
'访问数据库出错时的记录
For Each ErrADO In M_Conn.Errors
SQLError = True
SQLErrorNumber = ErrADO.number
SQLErrorDescription = ErrADO.Description
SQLErrorState = ErrADO.SQLState
SQLErrorSource = ErrADO.Source
SQLNativeError = ErrADO.NativeError
Exit For
Next
MsgBox Err.number & Err.Description
Exit Function
err_txt:
If Err.number = -2147467259 Then
MsgBox "无法从服务器取得数据!", 48, "信息提示窗口"
Exit Function
End If
End Function
to:: zjcxc(邹建)
Function GetIni(ByVal Key$, ByVal Data$ = "",ByVal sIniFileName, Optional ByVal DefaltValue$) As String这句怎么理解啊?缺少分隔符吗?
Option Explicit
'读写INI的API函數
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 Long
'自定义写入INI函數
Public 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")
WriteIni = x
End Function
'自定义读取INI函數
Public 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
主窗体代码:
Option Explicit
'声明用于判断写入INI中的FileName(n)中的n变量
Dim I As String '为了能添在FileName串的后面,声明为String
Private Sub Form_Load()
I = 0 '初值
Text1.Left = 0
Text1.Top = 0
Text1 = ""
Text1.FontSize = 12
Me.Caption = "txtEditor"
Me.Width = 8000
Me.Height = 6000
AddMenu '添加动态菜单
End Sub
Private Sub Form_Resize() '这个没什么可说,为了使例程完整而已
Text1.Width = Me.ScaleWidth
Text1.Height = Me.ScaleHeight
End Sub
Private Sub mnuExit_Click()
End '退出
End Sub
'打开文件
Private Sub mnuOpen_Click()
Dim sF As String
CommonDialog1.Filter = "文档文件(*.txt)|*.txt|所有文件(*.*)|*.*"
CommonDialog1.ShowOpen
Open CommonDialog1.FileName For Input As #1
Text1.Text = StrConv(InputB$(LOF(1), 1), vbUnicode)
Close #1
If I > = 3 Then I = 0 '如大于等于3则返回原值
I = I + 1
sF = "FileName" + I
'打开后写进INI文件
CommonDialog1.FileName = WriteIni("Open", sF, CommonDialog1.FileName)
AddMenu '立即添加使动态菜单生效
End Sub
'添加菜单
Private Sub AddMenu()
Dim fN1 As String, fN2 As String, fN3 As String
'從INI文件中读取数据
fN1 = ReadIni("Open", "FileName1")
fN2 = ReadIni("Open", "FilEName2")
fN3 = ReadIni("Open", "FileName3")
'如数据存在则令动态菜单可见并给其Caption属性赋值
If fN3 < > "" Then mnuSep02.Visible = True: mnuAdd(1).Visible = True: mnuAdd(1).Caption = fN1
If fN2 < > "" Then mnuSep02.Visible = True: mnuAdd(2).Visible = True: mnuAdd(2).Caption = fN2
If fN1 < > "" Then mnuSep02.Visible = True: mnuAdd(3).Visible = True: mnuAdd(3).Caption = fN3
End Sub
Lib "kernel32" Alias "WritePrivateProfileStringA" _
(ByVal lpApplicationname As String, ByVal _
lpKeyName As Any, ByVal lsString As Any, _
ByVal lplFilename As String) As LongDeclare 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 LongPublic Function GetIniStr(ByVal AppName As String, ByVal In_Key As String, ByVal sFileName As String) As String
'*******************************************
'读ini文件,不固定节点,in_key为读取的主键
'针对字符串值,空值表示出错
'*******************************************
On Error GoTo GetIniStrErr
If VBA.Trim(In_Key) = "" Then
GoTo GetIniStrErr
End If
Dim GetStr As String
GetStr = VBA.String(128, 0)
GetPrivateProfileString AppName, In_Key, "", GetStr, 256, sFileName
GetStr = VBA.Replace(GetStr, VBA.Chr(0), "")
If GetStr = "" Then
GoTo GetIniStrErr
Else
GetIniStr = GetStr
GetStr = ""
End If
Exit Function
GetIniStrErr:
Err.Clear
GetIniStr = ""
GetStr = ""
End Function
Public Function WriteIniStr(ByVal AppName As String, ByVal In_Key As String, ByVal In_Data As String, ByVal sFileName As String) As Boolean
'*******************************************
'写ini文件,不固定节点,in_key为写入的主键
'针对字符串值,False表示出错
'*******************************************
On Error GoTo WriteIniStrErr
WriteIniStr = True
If VBA.Trim(In_Data) = "" Or VBA.Trim(In_Key) = "" Or VBA.Trim(AppName) = "" Then
GoTo WriteIniStrErr
Else
WritePrivateProfileString AppName, In_Key, In_Data, sFileName
End If
Exit Function
WriteIniStrErr:
Err.Clear
WriteIniStr = False
End Function
在vb中读写INI文件
http://www.easthot.net/article_read.asp?id=40