Dim db As Database
Dim td As TableDef
Dim fields(2) As Field
Dim CN   As New ADODB.Connection                '定义数据库的连接
Dim Rs   As New ADODB.RecordsetSet db = CreateDatabase("c:\vbfile\record.mdb", dbLangGeneral, dbEncrypt) '***创建数据库,第三项不能少
Set td = db.CreateTableDef("danbao")    '***建表
Set fields(0) = td.CreateField("a", dbInteger, 2)
Set fields(1) = td.CreateField("b", dbInteger, 3)
Set fields(2) = td.CreateField("c", dbSingle, 4)
td.fields.Append fields(0)
td.fields.Append fields(1)
td.fields.Append fields(2)
db.TableDefs.Append td
MsgBox "c:\vbfile\record.mdb has been created" & "'", vbInformation
db.Close
'*********************创建数据库************************CN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\vbfile\record.MDB;Persist Security Info=False"
CN.OpenRs.AddNew   ‘***我想更新一条记录记录
Rs("a") = 1
Rs("b") = 2
Rs("c") = 3
Rs.Update'*******************用DataGrid控件显示记录*******
CN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\vbfile\record.MDB;Persist Security Info=False"
CN.Open
Rs.CursorLocation = adUseClient
Rs.Open "select * from danbao", CN, adOpenDynamic, adLockBatchOptimistic
Set DataGrid1.DataSource = Rs是不是程序中的DataGrid控件限制太多这样编译的话提示对象关闭时,操作不被允许

解决方案 »

  1.   

    '*******************用DataGrid控件显示记录*******
    CN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\vbfile\record.MDB;Persist Security Info=False"
    CN.Open
    RS.CursorLocation = adUseClient
    Rs.Open "select * from danbao", CN, adOpenKeyset, adLockOptimistic
    Set DataGrid1.DataSource = Rs
    set Rs=nothing
    set CN=nothing
      

  2.   

    应该在添加记录之前定义ADO对象Connection和Recordset啊!应该改成这样Dim db As Database
    Dim td As TableDef
    Dim fields(2) As Field
    Dim CN   As New ADODB.Connection                '定义数据库的连接
    Dim Rs   As New ADODB.RecordsetSet db = CreateDatabase("c:\vbfile\record.mdb", dbLangGeneral, dbEncrypt) '***创建数据库,第三项不能少
    Set td = db.CreateTableDef("danbao")    '***建表
    Set fields(0) = td.CreateField("a", dbInteger, 2)
    Set fields(1) = td.CreateField("b", dbInteger, 3)
    Set fields(2) = td.CreateField("c", dbSingle, 4)
    td.fields.Append fields(0)
    td.fields.Append fields(1)
    td.fields.Append fields(2)
    db.TableDefs.Append td
    MsgBox "c:\vbfile\record.mdb has been created" & "'", vbInformation
    db.Close
    '*********************创建数据库************************'*******************显示记录**************************
    CN.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=c:\vbfile\record.MDB;Persist Security Info=False"
    CN.Open
    Rs.CursorLocation = adUseClient
    Rs.Open "select * from danbao", CN, adOpenDynamic, adLockBatchOptimisticRs.AddNew
    Rs("a") = 1
    Rs("b") = 2
    Rs("c") = 3
    Rs.UpdateSet DataGrid1.DataSource = Rs
      

  3.   


    Rs.Open "select * from danbao", CN, adOpenDynamic, adLockBatchOptimistic改成
    Rs.Open "select * from danbao", CN, adOpenStatic, adLockBatchOptimistic

    Rs.Open "select * from danbao", CN, adOpenKeyset, adLockBatchOptimistic
    (注意CursorType参数)
    原因好象是DataGrid控件只支持静态和键集临时表