|
早在几年前写过一个帖子《【新手进阶】之九:浅谈不绑定数据源操作记录》,关于在窗体上不绑定数据源时,如何处理数据的事情。 对于已经入门的版友,我的建议是:不推荐在窗体上绑定数据源。原因如下:
比如,有些数据发现有错,想修改好才保存,如果窗体绑定了数据源,按下回车键可能一不小心就保存了。而在不绑定窗体的情况下,需要点击“保存”才会保存数据。这样,更加便于检查数据。
今天有人在群里问到在没有表,——也就是只使用记录集的情况下,如何处理数据的问题。比如,排序,查询什么的。
窗体绑定的数据源,其实是一个记录集。至于它的形式是表,链接表,查询,或者传递查询,还是本色出演的记录集,这并不重要。重要的是,如何去设计和操作。
为了阐明这个原理,我决定做个简单的例子供大家去理解和体会。这里大致做了三个功能,查询,排序和删除记录。
增删改都属于操作查询,实现方式大同小异。比如,新增记录,无非就是将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
复制代码
有什么问题欢迎回复本帖~~~
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
评分
-
查看全部评分
|