快速开发平台(企业版)--无法为更新定位行,一些值可能已在最后一次读取后已更改。
时 间: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)
- 统计当月之前(不含当月)的记录...(03.11)
- 【Access Inputbo...(03.03)
- 按回车键后光标移动到下一条记录...(02.12)
- 【Access Dsum示例】...(02.07)
- Access对子窗体的数据进行...(02.05)
- 【Access高效办公】上月累...(01.09)
- 【Access高效办公】上月累...(01.06)
- 【Access Inputbo...(12.23)
- 【Access Dsum示例】...(12.16)

学习心得
最新文章
- 仓库管理实战课程(9)-开发往来单...(04.02)
- 仓库管理实战课程(8)-商品信息功...(04.01)
- 仓库管理实战课程(7)-链接表(03.31)
- 仓库管理实战课程(6)-创建查询(03.29)
- 仓库管理实战课程(5)-字段属性(03.27)
- 设备装配出入库管理系统;基于Acc...(03.24)
- 仓库管理实战课程(4)-建表操作(03.22)
- 仓库管理实战课程(3)-需求设计说...(03.19)
- 仓库管理实战课程(2)-软件背景和...(03.18)
- 仓库管理实战课程(1)-讲师介绍(03.16)