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



新手开发进销存(私人收单)数据库访问不了


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


新手开发进销存(私人收单)数据库访问不了[已结贴,结贴人:janly]
发表于:2007-06-30 19:40:39 楼主
本人对asp很懂,对vb就不太懂了,也没有开发过什么项目,前几天接了单,问问几个问题?
数据库是sql
我想把连接数据库   dim   conn         as   new   adodb.connection   作为全局变量,在每个form   里新建rs   对数据库进行访问
但在form   里执行EXECutesql发生错误   错误号:3001   错误信息:参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突。
------module1.bas-------
sub   main()

dim   strconn   as   string
dim   conn         as   new   adodb.connection
dim   rs             as   adodb.recordset
dim   sql           as   string
on   error   goto   on_error:

strconn   =   "provider=sqloledb;data   source=janly;user   id=sa;password=sa;initial   catalog=juhongerp;persist   security   info=true "
conn.commandtimeout   =   5
conn.open   strconn

on_error:
if   err.number   =   -2147467259   or   err.number   =   -2147217900   then
        msgbox   "服务器无响应,请确认服务器是正常工作的! ",   vbinformation   +   vbokonly,   "系统错误提示 "
        end
end   if


'启动登陆对话框
        dim   flogin   as   new   login
        flogin.show   vbmodal
        if   not   flogin.islogining   then
                end
        end   if
        unload   flogin

        set   fmainform   =   new   mainform
        fmainform.show
end   sub

public   function   EXECutesql(byval   sql   as   string)   as   adodb.recordset
        on   error   goto   errhandler:
        dim   rs     as   new   adodb.recordset
        rs.open   trim$(sql),   conn,   adopenkeyset,   adlockoptimistic
        set   EXECutesql   =   rs
       
errhandler:
        '显示错误信息
        msgbox   "发生错误   错误号: "   &   err.number   &   "   错误信息: "   &   err.description,   vbexclamation
        call   rsclose
end   function

public   sub   rsclose()
on   error   resume   next
if   rs.state   <>   adstateclosed   then   rs.close
set   rs   =   nothing
end   sub
-----------------------
--------form-----------
private   sub   form_load()
dim   rs             as   adodb.recordset
set   rs   =   EXECutesql( "select   *   from   productsort ")   '就是这里返回有问题??
end   sub
-----------------------

EXECutesql是不是写得不够好,要怎么写,我的conn作为全局行不行的?
发表于:2007-06-30 20:04:311楼 得分:50
dim   conn         as   new   adodb.connection


这个写个一个公共模块里声明成

public   conn   as   new   adodb.connection
发表于:2007-06-30 20:59:182楼 得分:0
为什么大家不用数据环境+存储过程呢
发表于:2007-06-30 21:00:133楼 得分:0
不用写多少代码
发表于:2007-06-30 21:13:484楼 得分:30
conn   在子模块中声明的   只有子模块可以调用了
发表于:2007-06-30 21:25:365楼 得分:20
一般conn   都是public的
发表于:2007-06-30 22:23:536楼 得分:0
自己搞定了,conn   修改为public的了

public   function   EXECutesql(byval   sql   as   string)   as   adodb.recordset

      dim   stokens()   as   string
      on   error   goto   EXECutesql_error
 
      stokens   =   split(sql)
      if   instr( "insert,delete,update,EXECute ",   ucase$(stokens(0)))   then
            conn.EXECute   (sql)
      else
            set   rs   =   new   adodb.recordset
            rs.open   trim$(sql),   conn,   adopenkeyset,   adlockoptimistic
            set   EXECutesql   =   rs
      end   if
             
     
EXECutesql_error:
if   err.number   <>   0   then
        msgbox   "刚才操作失败   错误号: "   &   err.number   &   "   错误信息: "   &   err.description,   ,   vbinformation   +   vbokonly,   "读取数据错误提示 "
        call   rsclose
end   if
end   function
发表于:2007-06-30 22:46:387楼 得分:0
搞定就给分啊


快速检索

最新资讯
热门点击