Office中国论坛/Access中国论坛

标题: 什么样的recordset可以使用fields.delete方法? [打印本页]

作者: duanmouse    时间: 2012-8-2 17:05
标题: 什么样的recordset可以使用fields.delete方法?
对于打开的Recordset 无法调用 Fields.Delete和Append 方法, 问题是如果需要,如何才能执行这2个方法呢?下面是我的代码,再下面是网上查到的资料。


    Dim dbs As DAO.Database
    Dim rsSQL As DAO.Recordset
    Dim strSQL As String
   
    Set dbs = CurrentDb
   
    'Open a snapshot-type Recordset based on an SQL statement
    strSQL = "SELECT top 1 * FROM Table1"
    Set rsSQL = dbs.OpenRecordset(strSQL, dbOpenDynaset)
   
    rsSQL.Fields.Delete ("name")
    rsSQL.Fields.append ("choose", Boolean)  'append的语法不知道怎么写

------------------------------------------------------------------------------------

Delete 方法 (ADO Fields 集合)

从 Fields 集合中删除对象。

语法

Fields.Delete Field

参数

Field 变体型,指定将要删除的 Field 对象。该参数必须是 Field 对象名而不能是序号位置或 Field 对象本身。

说明

对打开的 Recordset 调用 Fields.Delete 方法将引起运行时错误

----------------------------------------------------------------------------------------------------

Append 方法

对打开的 Recordset 或已设置 ActiveConnection 属性的 Recordset,调用其 fields.Append 方法将引发运行时错误。只能将字段追加到没有打开并且尚未连接到数据源的 Recordset。一般地,通过 CreateRecordset 方法或通过将新 Recordset 对象显式赋给对象变量所创建的都是新 Recordset 对象

作者: roych    时间: 2012-8-2 19:27
记录集没有对字段的操作(ADOx倒是可以),字段的增删是在表对象中执行的,——当然不止一种方法(据我所知至少有4种),以下是DAO的增删字段。
  1. Sub test()
  2. Dim db As DAO.Database
  3. Dim tbl As DAO.TableDef
  4. Set db = CurrentDb
  5. Set tbl = db.TableDefs("表1")
  6. '前提是必须有ss字段,否则会出错。可以增加On Error Resume Next跳过错误。
  7. tbl.Fields.Delete ("ss")
  8. '创建一个长度为50的文本类型字段m(同样地,如果已存在这个字段则会出错)。
  9. tbl.Fields.Append tbl.CreateField("m", dbText, 50)
  10. End Sub
复制代码

作者: duanmouse    时间: 2012-8-3 10:36
谢谢版主,看来recordset不像想象的那么灵活,那么你知道access VBA里能用dataset吗?这个功能应该更强些。
作者: roych    时间: 2012-8-3 21:00
对此我不清楚。年前TodayNew(老汉)正在钻研ASP.Net,请教他可能更合适些。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3