Office中国论坛/Access中国论坛
标题:
Recordset的骚操作——再谈不绑定数据源操作记录
[打印本页]
作者:
roych
时间:
2020-12-18 16:11
标题:
Recordset的骚操作——再谈不绑定数据源操作记录
早在几年前写过一个帖子《
【新手进阶】之九:浅谈不绑定数据源操作记录
》,关于在窗体上不绑定数据源时,如何处理数据的事情。 对于已经入门的版友,我的建议是:不推荐在窗体上绑定数据源。原因如下:
比如,有些数据发现有错,想修改好才保存,如果窗体绑定了数据源,按下回车键可能一不小心就保存了。而在不绑定窗体的情况下,需要点击“保存”才会保存数据。这样,更加便于检查数据。
今天有人在群里问到在没有表,——也就是只使用记录集的情况下,如何处理数据的问题。比如,排序,查询什么的。
窗体绑定的数据源,其实是一个记录集。至于它的形式是表,链接表,查询,或者传递查询,还是本色出演的记录集,这并不重要。重要的是,如何去设计和操作。
为了阐明这个原理,我决定做个简单的例子供大家去理解和体会。这里大致做了三个功能,查询,排序和删除记录。
增删改都属于操作查询,实现方式大同小异。比如,新增记录,无非就是将rst.Delete改成rst.AddNew,然后给各个字段赋值,rst(字段)=xxx;而更新查询连rst.AddNew都不需要了,直接删掉rst.Delete,后面也是赋值。所以这里就不再加这几个按钮了。如果大家确实有需要,请回帖,我到时候重新设置一些子窗体来录入或者修改数据。
按惯例,还是继续上代码,供有(没)需(注)要(册)的版友使用。
'模块:
Function get_rst(Optional ByVal strFilter As String = "") As ADODB.Recordset
Dim strSQL As String
Dim rst As New ADODB.Recordset
Dim cnn As New ADODB.Connection
cnn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & CurrentProject.Path & "\db2.mdb"
rst.CursorLocation = adUseClient
If strFilter = "" Then
strSQL = "select * from TbCarnet"
Else
strSQL = "select * from TbCarnet where 工单编号='" & strFilter & "'"
End If
rst.Open strSQL, cnn, adOpenKeyset, adLockOptimistic
Set get_rst = rst
End Function
'数据表子窗体
Private Sub Form_Load()
Dim rst As New ADODB.Recordset
Set rst = get_rst()
Set Me.Form.Recordset = rst
rst.Close
End Sub
'主窗体
Private Sub cmdDel_Click()
If Not IsNull(Me.comb_NO) Then
If MsgBox("确定删除这条记录?", vbOKCancel + vbInformation, "提醒") = vbOK Then
get_rst(Me.comb_NO.Value).Delete
Set Me.frm_Carnet_sub.Form.Recordset = get_rst("")
End If
End If
Me.frm_Carnet_sub.Requery
End Sub
Private Sub cmdQry_Click()
If IsNull(Me.comb_NO) Then
Set Me.frm_Carnet_sub.Form.Recordset = get_rst("")
Else
Set Me.frm_Carnet_sub.Form.Recordset = get_rst(Me.comb_NO.Value)
End If
Me.frm_Carnet_sub.Requery
End Sub
Private Sub cmdSort_Click()
Dim rst As New ADODB.Recordset
If IsNull(Me.comb_NO) Then
Set rst = get_rst("")
Else
Set rst = get_rst(Me.comb_NO.Value)
End If
rst.Sort = "款号"
Set Me.frm_Carnet_sub.Form.Recordset = rst
Me.frm_Carnet_sub.Requery
End Sub
复制代码
[attach]63931[/attach]
有什么问题欢迎回复本帖~~~
作者:
iico
时间:
2020-12-18 16:37
先學了再說,謝謝大佬
作者:
5988143
时间:
2020-12-18 16:41
繼續學習中。。。。。。
作者:
admin
时间:
2020-12-19 11:05
不错!!赞
作者:
zpy2
时间:
2020-12-19 12:06
不错,赞
作者:
yanwei82123300
时间:
2020-12-21 15:41
不错!!赞
作者:
ly
时间:
2020-12-23 08:24
大佬的课程怎么能少了我!
欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/)
Powered by Discuz! X3.3