北京 | 上海 | 天津 | 重庆 | 广州 | 深圳 | 珠海 | 汕头 | 佛山 | 中山 | 东莞 | 南京 | 苏州 | 无锡 | 常州 | 南通 | 扬州 | 徐州 | 杭州 | 温州 | 宁波 | 台州 | 福州 | 厦门 | 泉州 | 龙岩 | 合肥 | 芜湖 | 成都 | 遂宁 | 长沙 | 株洲 | 湘潭 | 武汉 | 南昌 | 济南 | 青岛 | 烟台 | 潍坊 | 淄博 | 济宁 | 太原 | 郑州 | 石家庄 | 保定 | 唐山 | 西安 | 大连 | 沈阳 | 长春 | 昆明 | 兰州 | 哈尔滨 | 佳木斯 | 南宁 | 桂林 | 海口 | 贵阳 | 西宁 | 乌鲁木齐 | 包头 |
老师们好,偶然遇到一个问题,结果自己怎么想都无法解决,不得不来求助,在此先谢过。
问题描述:
我像往常一样用DAO的Recordset对象打开一个表的数据,然后再用这个Recordset对象向一个窗体的子窗体的Recordset属性赋值。但是问题来了,当我多次重复这项操作时,会导致Access没有响应(或者说停止工作);
在实验中我发现,只要我查找的内容是该表的第一条数据(“青椒鸡蛋”)时,不用多次点击,只要一次,Access也会直接停止响应;
代码如下:
Private Sub Command_查找_Click()
Dim Db As DAO.Database
Dim Rst As DAO.Recordset
Dim StrSQL As String
StrSQL = "select 菜品ID,菜品名称,菜品价格 from T0030_菜品价目表 " & _
"where 菜品名称 like '*" & Me.Text_查找 & "*'"
Set Db = CurrentDb()
Set Rst = Db.OpenRecordset(StrSQL, dbOpenDynaset, dbReadOnly)
With Me.Child_修改明细
If Rst.BOF Then
Exit Sub
End If
.SourceObject = "F_子窗体_修改明细"
.Form.Text_菜品名称.ControlSource = "菜品名称"
.Form.Text_菜品价格.ControlSource = "菜品价格"
Set .Form.Recordset = Rst
End With
Set Rst = Nothing
End Sub
自己实验的发现:
我自己在对比实验中发现,似乎和引用的数据是数据集中的第一条数据后很大的关系。如果我删除SQL里的where条件时,不会出现这种问题。但是这段代码又是我之前常用的代码,以前都没事结果这次出现这种问题,实令人费解。我又怀疑是子窗体的某些属性设置有问题,但是并没有找到什么可疑的差错。这个问题已经困扰我几天了,实在是想不出答案,如果解决不了恐怕我得放弃DAO改用ADO(ADO不会出现这种问题),所以真心请求知道答案的好心人不吝赐教,在此万分感谢!!!
以下是原件: