locktype ltBatchOptimistic;
  DsBill.Filtered := True;
  DsBill.FilterGroup := fgPredicate;
显示删除数据时总报错,不知各位是否遇到类似问题,又是如何解决的?
如果有补丁,请告知,谢谢!
(错误信息:参数类型不正确,或不在可以接受的范围之内,或与其它参数有冲突)

解决方案 »

  1.   

    是否与打开参数有关.
    Recordset.Open参数说明
    语法:
    recordset.Open Source, ActiveConnection, CursorType, LockType, Options
    参数说明:
    Source 可选,变体型,计算 Command 对象的变量名、SQL 语句、表名、存储过程调用或持久 Recordset 文件名。 ActiveConnection 可选。变体型,计算有效 Connection 对象变量名;或字符串,包含 ConnectionString 参数。
    CursorType 可选,CursorTypeEnum 值,确定提供者打开 Recordset 时应该使用的游标类型。
    可为下列常量之一(参阅 CursorType 属性可获得这些设置的定义)。
    值 常量 说明
    --- ------------------- ----------------------- 
    0 AdOpenForwardOnly 默认值)打开仅向前类型游标。 
    1 AdOpenKeyset 打开键集类型游标。
    2 AdOpenDynamic 打开动态类型游标。
    3 AdOpenStatic 打开静态类型游标。
    LockType 可选。确定提供者打开 Recordset 时应该使用的锁定(并发)类型的 LockTypeEnum 值,可为下列常量之一(参见 LockType 属性可获得详细信息)。
    值 常量 说明
    --- -------------------------------- ----------------------- 
    1 AdLockReadOnly (默认值)只读 ― 不能改变数据。 
    2 AdLockPessimistic 保守式锁定,提供者完成确保成功编辑记录所需的工作,通常通过在编辑时立即锁定数据源的记录。
    3 AdLockOptimistic 开放式锁定(逐个) ― 提供者使用开放式锁定,只在调用Update 方法时才锁定记录。
    4 AdLockBatchOptimistic 开放式批更新―用于批更新模式(与立即更新模式相对)。
      

  2.   

    你的sql代码可能是要更新或者修改数据库,而rs.open Conn,AdOpenKeyset,AdLockOptimistic,adCmdText
    是用只读方式打开数据库的。 
      

  3.   

    谢谢3位的回答
     to bluesky23 是有关;我的设置如下:
      CursorType ctStatic
      LockType ltBatchOptimistic 也只有这种情况下才可以批处理的;
    我可以得到所有异动过的记录
    如有修改过的记录,还有添加的记录,删除的记录;
    对于修改,添加的信息字段值都有值;
    但是删除的记录是字段值都为null所有要对这条删除的记录进行操作,没有值是无法完成的;
    所有设置这个问题,你弄一个简单的表open后直接对他进行操作,然后最一下异动过的记录。
     to angle097113(深思不解) 
      D7
     to darkliu(钢铁工人甲) 
     不是以只读方式打开
      LockType ltBatchOptimistic
      

  4.   

    补充
    在帮助文件中说 用这个可以得到删除记录 fgPredicate
    提是用了他就是会报错!
    各位出招啊!
    谢谢