MyDesk2.0 数据库访问的方法,一直以来都是很多用户讨论的焦点,在这里,我们将以一个简单的“通讯录”的制作过程,详细的为大家介绍如何通过 MyDesk2.0 在不使用数据库控件情形下对数据库的一些操作。当然,如果使用了数据库控件和数据绑定控件,相关做法肯定会更加简单。
程序名称:Address_List.mds
数据库名称:Address_List.mdb
一.数据库中数据查询功能设置:
主要控件说明:复选框(2个),用于确定是否应用相应的数据查询条件。
编辑框,用于数据查询时的条件设置(姓名)。
组合框,用于数据查询时的条件设置(性别)。
列表视图控件,用于显示查询数据结果。
1.界面设置如下:
2.“宏”窗口代码设置说明:
(1)创建数据库连接字符串,源代码如下:
Function OpenConn(ByVal sUserID, ByVal sPass, ByVal sServerName)
'参数说明:sUserID:用户名ID; sPass:用户密码; sServerName:服务器名称
Dim sDir, sDataFile
Call API_GetModuleFileName(0, sDir, 1024 )
'获得应用程序所在目录的完整路径sDir
sDir = Left( sDir, InstrRev(sDir, "\", -1) - 1 )
sDataFile = sDir + "\Address_List.mdb"
'获得 Address_List.mdb 数据库文件所在文件目录sDataFile
Dim sConnStr
sC & sDataFile
'建立数据库连接字符串
Dim conn
set conn = createobject("ADODB.Connection")
conn.open sConnStr
set OpenConn = conn
End Function
(2)打开数据库并执行相应的数据查询,代码如下:
Function OpenRs( ByVal sSql )
Dim rsTemp
Dim itmX
Dim conn
Set conn = OpenConn( "sa", "",sDataFile)
set rsTemp = CreateObject("adodb.recordset")
'建立 recordset 对象
If CheckBox.Value = True And CheckBox1.Value = False Then
sSql = "Select * From Address_List Where Name Like" + "'" + "%" + Name.text + "%" + "'"
Else
If (CheckBox.Value = True And CheckBox1.Value = True) Then
sSql = "Select * From Address_List Where Name Like" + "'" + "%" + Name.text + "%" + "'" + " And Sex Like " + "'" + "%" + Sex.Value + "%" + "'"
Else
If (CheckBox.Value = False And CheckBox1.Value = True) Then
sSql = "Select * From Address_List Where Sex Like" + "'" + "%" + Sex.Value + "%" + "'"
else
If (CheckBox.Value = False And CheckBox1.Value = False) Then
sSql = "Select * From Address_List"
End If
End If
End If
End If
'根据不同的条件设置,选择相应的 SQL 查询语句
rsTemp.Open sSql,conn,1,1
'表示打开数据库的方式
rsTemp.MoveFirst
ListView.ColumnHeaders.Add 1,,"编号"
ListView.ColumnHeaders.Add 2,,"姓名"
ListView.ColumnHeaders.Add 3,,"性别"
ListView.ColumnHeaders.Add 4,,"出生日期"
ListView.ColumnHeaders.Add 5,,"籍贯"
ListView.ColumnHeaders.Add 6,,"住址"
ListView.ColumnHeaders.Add 7,,"联系电话"
ListView.ColumnHeaders.Add 8,,"传真"
ListView.ColumnHeaders.Add 9,,"Email"
ListView.ColumnHeaders.Add 10,,"备注"
'创建10个 ColumnHeader 对象(列),分别用于对应数据库Address_List.mdb 中的字段名
do while not rsTemp.Eof
Set itmX = ListView.ListItems.Add()
itmX.Text = rsTemp("Code")
itmX.SubItems(1) = rsTemp("Name")
itmX.SubItems(2) = rsTemp("Sex")
itmX.SubItems(3) = rsTemp("Birthday")
itmX.SubItems(4) = rsTemp("Nation")
itmX.SubItems(5) = rsTemp("Address")
itmX.SubItems(6) = rsTemp("Phone")
itmX.SubItems(7) = rsTemp("Fax")
itmX.SubItems(8) = rsTemp("Email")
itmX.SubItems(9) = rsTemp("Remark")
rsTemp.MoveNext
Loop
'将查询所得到的数据分别给到所对应的列中
rsTemp.close
Set RsTemp = Nothing
conn.close
set conn = Nothing
'这几句是用来关闭数据库的
End Function
Function Delete()
ListView.ListItems.Clear()
ListView.ColumnHeaders.Clear()
'用来清空 ListView 控件中的数据
End Function
(3)该自定义函数用于 ListView 控件的 DbClick 双击事件,打开修改界面并将相应的数据传给修改界面中,代码如下:
Function Amend()
Dim iNumber
iNumber = ListView.SelectedItem
'将ListView 控件的SelectedItem 属性值赋给iNumber
Dim rsTemp
Dim itmX
Dim conn
Set conn = OpenConn( "sa", "", sDataFile)
set rsTemp = CreateObject("adodb.recordset")
'创建 recordset 对象
sSql = "Select * From Address_List Where Code =" + iNumber
'设置 SQL 查询语句
rsTemp.Open sSql,conn,1,1
'表示打开数据库的方式
rsTemp.MoveFirst
Dim sCode,sName,sSex,sBirthday,sNation,sAddress,sPhone,sFax,sEmail,sRemark
sCode = ""
sName = ""
sSex = ""
sBirthday = ""
sNation = ""
sAddress = ""
sPhone = ""
sFax = ""
sEmail = ""
sRemark = ""
do while not rsTemp.Eof
sCode = rsTemp("Code")
sName = rsTemp("Name")
sSex = rsTemp("Sex")
sBirthday = rsTemp("Birthday")
sNation = rsTemp("Nation")
sAddress = rsTemp("Address")
sPhone = rsTemp("Phone")
sFax = rsTemp("Fax")
sEmail = rsTemp("Email")
sRemark = rsTemp("Remark")
rsTemp.MoveNext
Loop
'定义变量,用于存放查询所得数据的各字段值
rsTemp.close
Set RsTemp = Nothing
conn.close
set conn = Nothing
'关闭数据库
Call Form.OpenForm("Rework",1,0,sCode,sName,sSex,sBirthday,sNation,sAddress,sPhone,sFax,sEmail,sRemark,iNumber)
'调用窗体 Form 的 OpenForm 函数,打开并传递所列参数给 Rework 窗体
End Function
3.控件事件设置:
(1)”查询”按钮的 Click 事件设置:
Delete() '调用自定义函数 Delete ,用于每次查询前清空 ListView 控件的数据
Call OpenRs("") '调用自定义函数 OpenRs ,用于查询显示数据结果
(2) ListView 控件的DbClick 事件设置:
作用:用于通过鼠标双击打开修改界面,并数据定位到鼠标双击的数据。
Amend() '调用自定义函数 Amend ,用于打开修改界面并定位显示数据.
二.数据库中数据新增功能设置:
1.界面设置如下:
2.“宏”窗口代码设置说明:
(1)创建数据库连接字符串,源代码如下:
Function OpenConn()
Dim sDir, sDataFile, hFile
Call API_GetModuleFileName(0, sDir, 1024 )
sDir = Left( sDir, InstrRev(sDir, "\", -1) - 1 )
sDataFile = sDir + "\Address_List.mdb"
Dim sConnStr
sC & sDataFile
Dim conn
set conn = createobject("ADODB.Connection")
conn.open sConnStr
set OpenConn = conn
End Function
(2)输入数据保存并写如数据库设置,源代码如下:
Function Save
Set conn = OpenConn()
set rs = CreateObject("adodb.recordset")
'建立recordset对象
sqlstr="select * from Address_List"
'Address_List为数据库中的一个数据表,即你要显示的数据所存放的数据表
rs.open sqlstr,conn,1,3
'表示打开数据库的方式
rs.addnew
'新增加一条记录
rs("Name")= Name.Text
'将Name.Text的值传给Name字段
If Boy.Value = True Then
rs("Sex") = "男"
Else
rs("Sex") = "女"
End If
rs("BirthDay")= BirthDay.Year & "-" & BirthDay.Month & "-" & BirthDay.Day
rs("Nation")= Nation.Text
rs("Address")= Address.Text
rs("Phone")= Phone.Text
rs("Fax")= Fax.Text
rs("Email")= Email.Text
rs("Remark")= Remark.Text
'将各控件的值传给相应的字段.
rs.update
'刷新数据库
rs.close
set rs=nothing
conn.close
set conn=nothing
'这几句是用来关闭数据库的。
End Function
3.控件事件设置:
(1)复选框(男) Change 事件设置:
If (Boy.Value = True) Then
Girl.Value = False
Else
End If
复选框(女) Change 事件设置:
If (Girl.Value = True) Then
Boy.Value = False
Else
End If
(2)”保存”按钮 Click 事件设置:
If (Name.Text = "") Then [color=#3300ff]'确保保存数据不为空数据
Else
Save() '调用自定义函数 Save
End If
Name.Text = ""
Nation.Text = ""
Address.Text = ""
Phone.Text = ""
Fax.Text = ""
Email.Text = ""
Remark.Text = ""
BirthDay.Year = 2000
BirthDay.Month = 01
BirthDay.Day = 01
Girl.Value = True[/color]
'数据保存后清空相应控件值以及定义控件默认值
三.数据库中数据修改以及删除功能设置:
1.界面设置如下:
2.“宏”窗口代码设置说明:
(1)创建数据库连接字符串,源代码如下:
Function OpenConn()
Dim sDir, sDataFile, hFile
Call API_GetModuleFileName(0, sDir, 1024 )
sDir = Left( sDir, InstrRev(sDir, "\", -1) - 1 )
sDataFile = sDir + "\Address_List.mdb"
Dim sConnStr
sC & sDataFile
Dim conn
set conn = createobject("ADODB.Connection")
conn.open sConnStr
set OpenConn = conn
End Function
(2)修改各字段所对应的数据,代码如下:
注意:修改与数据新增代码之间的差别在于,修改是在源数据上操作,而数据新增是首先新增加一条空记录,然后再将数据写入该空记录中的操作。
Function Save
Set conn = OpenConn()
set rs = CreateObject("adodb.recordset")
'建立recordset对象
sqlstr="select * from Address_List Where Code =" + iNumber
'Address_List为数据库中的一个数据表,即你要显示的数据所存放的数据表
rs.open sqlstr,conn,1,3
'表示打开数据库的方式
rs("Name")= Name.Text
'将Name.Text的值传给Name字段
If Boy.Value = True Then
rs("Sex") = "男"
Else
rs("Sex") = "女"
End If
rs("BirthDay")= BirthDay.Year & "-" & BirthDay.Month & "-" & BirthDay.Day
rs("Nation")= Nation.Text
rs("Address")= Address.Text
rs("Phone")= Phone.Text
rs("Fax")= Fax.Text
rs("Email")= Email.Text
rs("Remark")= Remark.Text
'将各控件的值传给相应的字段
rs.update
'刷新数据库
rs.close
conn.close
'这几句是用来关闭数据集及连接
set rs=nothing
set conn=nothing
End Function
(3)数据删除操作设置,代码如下:
Function Delete
Set conn = OpenConn()
set rs = CreateObject("adodb.recordset")
'建立recordset对象
sqlstr="DELETE from Address_List Where Code =" + iNumber
'删除查询所得出的数据
rs.open sqlstr,conn,1,3
'表示打开数据库的方式
End Function
3.控件事件设置:
各按钮控件分别调用相应的修改与删除的自定义函数即可。
四.附录:
(1)创建Sql Server 数据库连接字符串,源代码如下:
'Connect to a Sql Server Database
Function OpenConn(ByVal sUserID, ByVal sPassWord, ByVal sDBName, ByVal sServerName)
'Parameter
'sUserID:User's ID
'sPassWord: User's Pasworld
'sDBName: DatbaseName
'sServerName: Sql Server Name
Dim ConnString, conn
C & sPassWord & ";Persist Security
Info=True;User ID=" & sUserID &";Initial Catalog = " & sDBName &"; Data Source=" & sServerName
'Connection String
set conn= createobject("ADODB.Connection")
conn.open ConnString
set OpenConn=conn
End Function
(2)创建 Oracle 数据库连接字符串,源代码如下:
Function OpenConn( ByVal sUserID, ByVal sPassWord )
'参数说明
'sUserID:用户名ID
'sPassWord:用户密码
Dim ConnString , conn
C & sPassWord &";User ID=" & sUserID &
";Persist Security Info=True"
'建立数据库连接字符串
set conn= createobject("ADODB.Connection")
conn.open ConnString
set OpenConn=conn
End Function
(3)创建 Access 数据库连接字符串,源代码如下:
[color=#ff6600]'Connect to a Access Database
Function OpenConn( ByVal sUserID, ByVal sPassWord, ByVal sDBFile )
'Parameter
'sUserID: User's ID
'sPassWord: User Passworld
'sDBFile:DabaseName
Dim ConnString, conn
C & sPassWord & ";Data Source = "& sDBFile &";Persist Security Info=True"
'Connection String
set conn= createobject("ADODB.Connection")
conn.open ConnString
set OpenConn=conn
End Function
[/color]