ad

《Excel VBA+SQL数据管理与应用模板开发》_4.4 通过窗体对数据进行维护

网友投稿 118 2023-11-07

【摘要】 本书摘自《Excel VBA+SQL数据管理与应用模板开发》一书中第4章,第4节,韩小良著。

4.4 通过窗体对数据进行维护: 一个简单示例

在实际的工作表维护中,需要经常对数据进行修改、添加、删除等操作,若在 代码中修改就非常不方便了,况且也不是这么做数据管理的。此时,可以设计一个 用户窗体,通过窗体界面来添加数据、查询数据、修改数据和删除数据等。关于窗 体及控件的介绍,请参阅第6章的内容。

数据表结构请参阅前面的图4-1。

4.4.1 设 计 用 户 窗 体

《Excel VBA+SQL数据管理与应用模板开发》_4.4 通过窗体对数据进行维护

下面是一个简单的窗体示例,可以实现数据的浏览、保存、查询、修改、删除等功能

6个文本框的名字被命名为了字段的名称,这样便于识别、引用字段和引用文本框。 9 个命令按钮的名称和标题(Caption)是一样的,这样也便于使用命令按钮。

在启动窗体时,自动建立与工作簿的连接,查询工作表所有数据,以便可以通过单击窗 口底部的4个浏览按钮来浏览每个合同的信息。窗体的初始化程序如下:

'定义窗体模块级变量

Dim cnn As New ADODB.Connection

Dim rs AsADODB.Recordset

Dim ws As Worksheet

Dim Ctr As Variant

Private Sub UserForm_Initialize)

Dim SQL As String

'指定工作表

Set ws = ThisWorkbook.Worksheets("合同信息")

'指定控件数组

Ctr= Array("合同号","合同名称","供货单位","合同金额","签订日期","交货日期")

'建立与工作簿的连接

With cnn

.Provider ="microsoft.ace.oledb.12.0"

. ConnectionString ="Extended Properties=Excel 12.0;"_

&" Data Source=" & ThisWorkbook.FullName

.Open

End With

'查找所有数据

SQL=" select * from [合同信息$]"

Set rs = New ADODB.Recordset

rs.Open SQL, cnn, adOpenKeyset, adLockOptimistic

End Sub

4.4.3 浏览数据

窗体底部是4个浏览按钮,单击它们可以分别查看某条合同数据。这4个游览按钮的 Click 事件程序代码如下:

Private Sub 第一条_Click0

rs.MoveFirst

If rs.BOF =True Then Exit Sub

Dim i As Integer

Fori=0 To UBound(Ctr)

Me.Controls(Ctr(i)).Value =rs.Fields(i)

Next i

End Sub

Private Sub 上一条_Click0

rs.MovePrevious

If rs.BOF =True Then Exit Sub

Dim i As Integer

Fori=0 To UBound(Ctr)

Me.Controls(Ctr(i).Value =rs.Fields(i)

Next i

End Suh

Private Sub 下一条_Click0

rs.MoveNext

If rs.EOF =True Then Exit Sub

Dim i As Integer

Fori=0 To UBound(Ctr)

Me.Controls(Ctr(i).Value =rs.Fields(i)

Nexti

End Sub

Private Sub 最末条_Click(

rs.MoveLast

If rs.EOF =True Then Exit Sub

Dim i AsInteger

Fori =0 To UBound(Ctr)

Me.Controls(Ctr(i). Value =rs.Fields(i)

Next i

End Sub

当在窗体中输入了一个新合同数据后,单击“保存”按钮,就将数据保存到工作表中。这里, 我们使用 Recordset 对象的 AddNew 方法来保存数据。程序代码如下:

Private Sub 保存_Click0

Dim i AsInteger

With rs

.AddNew

Fori =0 To UBound(Ctr)

.Fields(i).Value = Me.Controls(Ctr(i). Value

Next i

.Update

End With

MsgBox "保存成功!"

End Sub

单击“查询”按钮,就可以查询并显示指定的合同号信息,这里我们以“合同号”为关 键字段来查询。程序代码如下:

Private Sub 查询_Click)

DimID As String, SQL As String,i As Integer

Dim rsx As New ADODB.Recordset

'清空窗体中的旧数据

Fori =0 To UBound(Ctr)

Me.Controls(Ctr(i).Value =""

Next i

'指定合同号

ID=InputBox(" 请输入要查询的合同号:","输入合同号")

'查询指定的合同

SQL="select*from [合同信息$]where 合同号='"'&ID&"""

rsx.Open SQL,cnn,adOpenKeyset,adLockOptimistic

'将查询出的数据显示到窗体中

If rsx.RecordCount =0 Then

MsgBox" 没有查找指定合同号的信息!"vbCritical,"查询"

Exit Sub

End If

Fori=0 To UBound(Ctr)

Me.Controls(Ctr(i).Value =rsx.Fields(i)

Next i

rsx.Close

Set rsx =Nothing

End Sub

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:《自己动手写 Python 虚拟机》_更理解虚拟机的意义_2.1 Python字节码
下一篇:《Excel VBA+SQL数据管理与应用模板开发》_工作效率UP!_3.2.9 利用合计函数
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×