您的位置:程序门 -> vb -> 数据库(包含打印,安装,报表)



cat.create pstr错误提示"实时错误424"要求对象


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


cat.create pstr错误提示"实时错误424"要求对象
发表于:2008-01-17 10:13:16 楼主


private   sub   command1_click()
        dim   fm   as   string   'fm变量用来获取用户输入的文件名
        commondialog1.filter   =   "mdb文件(*.mdb) ¦*.mdb ¦allfiles(*.*) ¦*.* ¦"
        commondialog1.filterindex   =   1
        commondialog1.initdir   =   "e:jthpaper"
        commondialog1.flags   =   6
        commondialog1.action   =   2
        if   commondialog1.filename   =   ""   then
        msgbox   "你必须输入一个文件名,请重新保存一次!"
        exit   sub
        else
        fm   =   commondialog1.filename
        end   if
        pstr   =   "provider=microsoft.jet.oledb.4.0:"     '不能把这里的4.0改为3.51
        pstr   =   pstr   &   "data   source="   &   fm
        cat.create   pstr         ????????????运行出出错位置
        '创建数据库
        dim   tbl   as   new   table
        cat.activeconnection   =   pstr
        tbl.name   =   "mytable"   '表的名称
        tbl.columns.append   "编号",   adinteger   '表的第一个字段
        tbl.columns.append   "姓名",   advarwchar,   8   '表的第二个字段
        tbl.columns.append   "住址",   advarwchar,   50   '表的第三个字段
        cat.tables.append   tbl   '建立数据表
        conn.open   pstr
        rs.cursorlocation   =   aduseclient
        rs.open   "mytable",   conn,   adopenkeyset,   adlockpessimistic
        rs.addnew   '往表中添加新记录
        rs.fields(0).value   =   9801
        rs.fields(1).value   =   "孙悟空"
        rs.fields(2).value   =   "广州市花果山"
        rs.update
 

end   sub

private   sub   command2_click()
        set   datagrid1.datasource   =   rs
end   sub
private   sub   command3_click()
        rs.updatebatch
       
end   sub

private   sub   form_load()
        dim   cat   as   new   adox.catalog   '不用cat用另外一个名字也可以
        dim   conn   as   new   adodb.connection
        dim   rs   as   new   adodb.recordset
        dim   pstr   as   string   '定义该变量是为了后面的书写方便
end   sub


之前已经引用了"microsoft   activex   data   objects   2.5   library"和"microsoft   ado   ext   2.1.   for   ddl   security"。
请大家帮忙分析一下。是因为什么出错呢,是我的vb中没有某项功能吗,比如microsoft.jet.oledb.4.0,adox.catalog谢谢
发表于:2008-01-17 10:17:081楼 得分:0
你msgbox   pstr看看pstr是不是正确
发表于:2008-01-17 10:18:382楼 得分:0
还有,要'引用   microsoft   ado   ext.   2.7   for   ddl   and   security
发表于:2008-01-17 10:27:193楼 得分:0
可是我的引用里只有microsoft       ado       ext       2.1.       for       ddl       security这个啊,怎么样办啊.我试了msgbox   pstr       =provider=microsoft.jet.oledb.4.0:data   source=e:\新建文件夹\xxx.mdb
发表于:2008-01-17 10:33:504楼 得分:0
cat没实例化?
dim   cat   as   adox.catalog
set   cat=new   adox.catalog
cat.create   pstr                                  
发表于:2008-01-17 10:39:235楼 得分:0
能说具体一点吗?对了,我又看了一下引用,我引用的是microsoft       activex       data       objects       2.6       library"和"microsoft       ado       ext       2.8.       for       ddl       security"。  
发表于:2008-01-17 10:42:016楼 得分:0
我把set   cat   =   new   adox.catalog加到:
private   sub   command1_click()
set   cat   =   new   adox.catalog
        dim   fm   as   string   'fm变量用来获取用户输入的文件名
        commondialog1.filter   =   "mdb文件(*.mdb) ¦*.mdb ¦allfiles(*.*) ¦*.* ¦"
        commondialog1.filterindex   =   1
        commondialog1.initdir   =   "e:jthpaper"
        commondialog1.flags   =   6
        commondialog1.action   =   2
        if   commondialog1.filename   =   ""   then
        msgbox   "你必须输入一个文件名,请重新保存一次!"
        exit   sub
        else
        fm   =   commondialog1.filename
        end   if
        pstr   =   "provider=microsoft.jet.oledb.4.0:"     '不能把这里的4.0改为3.51
        pstr   =   pstr   &   "data   source="   &   fm
        'msgbox   pstr
        cat.create   pstr
        '创建数据库
        dim   tbl   as   new   table
        cat.activeconnection   =   pstr
        tbl.name   =   "mytable"   '表的名称
        tbl.columns.append   "编号",   adinteger   '表的第一个字段
        tbl.columns.append   "姓名",   advarwchar,   8   '表的第二个字段
        tbl.columns.append   "住址",   advarwchar,   50   '表的第三个字段
        cat.tables.append   tbl   '建立数据表
        conn.open   pstr
        rs.cursorlocation   =   aduseclient
        rs.open   "mytable",   conn,   adopenkeyset,   adlockpessimistic
        rs.addnew   '往表中添加新记录
        rs.fields(0).value   =   9801
        rs.fields(1).value   =   "孙悟空"
        rs.fields(2).value   =   "广州市花果山"
        rs.update
 

end   sub
又提示没有注册类别
发表于:2008-01-17 10:46:387楼 得分:0
给你个示例,你自己找原因吧:
vbscript code
private sub command1_click() dim cat as adox.catalog dim idx as adox.index dim tb as table dim ikey as key dim strdb as string dim mydefaultvalue '创建数据库 strdb = "newdb" '指定数据库名称 if dir(app.path & "\" & strdb & ".mdb") <> "" then kill app.path & "\" & strdb & ".mdb" end if set cat = new adox.catalog cat.create "provider=microsoft.jet.oledb.4.0;" & _ "data source=" & app.path & "\" & strdb & ".mdb;" & _ "jet oledb:database password=abc" '不要密码,可以省略 '连接数据库 set cat = new adox.catalog cat.activeconnection = _ "provider=microsoft.jet.oledb.4.0;" & _ "data source=" & app.path & "\" & strdb & ".mdb;" & _ "jet oledb:database password=abc" '创建新数据库中的表 tb_info set tb = new table tb.name = "tb_info" tb.columns.append "id", adinteger tb.columns.append "iname", advarwchar, 50 tb.columns.append "idub", addouble cat.tables.append tb '创建字段 id 为主键 set ikey = new key ikey.name = "mtb" ikey.type = adkeyprimary ikey.relatedtable = "tb_info" ikey.columns.append "id" cat.tables("tb_info").keys.append ikey '创建字段id的索引 set idx = new adox.index idx.name = "mul" idx.columns.append "id" ' 将索引追加到表上 tb.indexes.append idx '指定idub的默认值 mydefaultvalue = 0 cat.tables("tb_info").columns("idub").properties("default").value = mydefaultvalue set tb = nothing set cat = nothing msgbox "你成功创建了数据库" & strdb end sub
发表于:2008-01-17 11:01:518楼 得分:0
你能说说set   cat   =   new   adox.catalog语句是放在加载过程里还是必须在子过程里定义。还有能说说set是什么意思吗?我现在可以建立数据库和表了,谢谢你,但是这两条又不对了   set   datagrid1.datasource   =   rs、
        rs.updatebatch
麻烦你真不好意思啊!
发表于:2008-01-17 11:12:409楼 得分:0
你能说说set       cat       =       new       adox.catalog语句是放在加载过程里还是必须在子过程里定义。还有能说说set是什么意思吗?我现在可以建立数据库和表了,谢谢你,但是这两条又不对了       set       datagrid1.datasource       =       rs、  
                rs.updatebatch  
麻烦你真不好意思啊!
发表于:2008-01-17 12:28:4010楼 得分:0
声明了对象,使用的时候要用new关健字实例化,实例化对象的语句就是用set......
 
发表于:2008-01-17 12:31:1911楼 得分:0
我不怎么用   datagrid1,而且看不到你相关代码,   还有错误提示是什么  


快速检索

最新资讯
热门点击