快速开发平台(企业版)--无法为更新定位行,一些值可能已在最后一次读取后已更改。
时 间:2014-05-06 09:15:52
作 者:金宇 ID:43 城市:江阴
摘 要:无法为更新定位行,一些值可能已在最后一次读取后已更改
正 文:
在用快速开发平台(企业版)1.7.2版本+后端使用SQLServer开发项目时遇到一个问题,如果表中存在是否类型的字段,并且通过平台的数据模块生成器生成了编辑窗体,如果打开编辑窗体将某条记录中是否类型字段的值有true改为false(窗体上应该是复选框有选中状态改为非选中状态),保存修改时会弹出如下图的提示。
经检查是由于调用的平台函数OpenADORecordset中ADO使用了本地游标引起的,改为服务器端游标就能正常,但如果是从非选中状态改为选中状态,本地游标也能正常保存更新,由此猜测SQLServer表中存在是否类型的字段,并做为access的链接表,如果使用ADO修改记录是否类型字段的值由true转成False时必须使用服务器端游标(或者不设置游标类型因为默认就是服务器端游标),针对平台现有的问题如果有些网友也遇到了,可以通过自己重新定义OpenADORecordset函数来解决,将以下这个函数保存至平台新建的模块中就能解决遇到的问题,后续的版本会修正。
Public Function OpenADORecordset(RecordSource As String, _ Optional LockType As ADOLockTypeEnum = adLockReadOnly, _ Optional Connection As Variant _ ) As Object 'ADODB.Recordset Dim cnn As Object 'ADODB.Connection Const adUseClient = 3 Const adLockReadOnly = 1 Const adLockOptimistic = 3 Const adOpenKeyset = 1 Set OpenADORecordset = CreateObject("ADODB.Recordset") With OpenADORecordset .Source = RecordSource If IsMissing(Connection) Then .CursorLocation = adUseClient .ActiveConnection = GetADOConnection() Else .ActiveConnection = Connection End If .CursorType = adOpenKeyset If LockType = adLockUnspecified Then .LockType = adLockReadOnly Else .LockType = LockType End If .Open End With Set cnn = Nothing End Function
Access快速开发平台QQ群 (群号:321554481) Access源码网店
常见问答:
技术分类:
源码示例
- 【源码QQ群号19834647...(12.17)
- 【Access选项卡示例】Ac...(09.09)
- 【Access源码示例】按输入...(09.02)
- 【Access日期区间段查询】...(08.29)
- 【Access日期区间段查询】...(08.27)
- Access怎样才能实现日期时...(08.21)
- 【Access定时打开查询】A...(08.19)
- Access生成固定数量的记录...(08.13)
- Access怎样才能实现日期时...(08.12)
- Access利用导航窗体控件对...(08.03)
学习心得
最新文章
- Access表中的字段名、字段标题...(09.19)
- Access快速开发平台--更改“...(09.18)
- 【中秋及国庆优惠】Access培训...(09.15)
- Access如何将日期型的数值转换...(09.14)
- 英文输入法输入数据中存在单引号引起...(09.11)
- 【Access选项卡示例】Acce...(09.09)
- 让Access光标停留在指定的控件...(09.07)
- 关于Access查询条件里使用通配...(09.06)
- Access报表偷懒制作法--Ac...(09.05)
- Access快速开发平台--窗体数...(09.04)