CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  VB >  基础类

全局变量传递问题

楼主flashasp(flashasp)2003-02-01 17:28:34 在 VB / 基础类 提问

----------------------------  
   
  Public   Function   sqlconection()'数据库连接函数  
  Dim   cn   As   New   ADODB.Connection  
  Dim   rs   As   New   ADODB.Recordset  
  cn.Open   "Provider=SQLOLEDB.1;Password=sa;User   ID=sa;Initial   Catalog=jake;Data   Source=jian"  
  MsgBox   ("数据库连接成功!")  
  End   Function  
   
  Private   Sub   Form_Load()  
  sqlconection'调用数据库连接函数  
  rs.Open   "select   *   from   t_user",   cn,   adOpenKeyset,   adLockOptimistic  
  '为什么运行到上面就出错?要怎么修改才能将cn,rs传递过来呢  
  Set   DataGrid1.DataSource   =   rs  
    DataGrid1.Refresh  
  End   Sub  
   
  ----------------------------------------我试图用下面的方法  
  Public   Function   sqlconection(ByVal   cn   As   String,   ByVal   rs   As   String)  
  Dim   cn   As   New   ADODB.Connection  
  Dim   rs   As   New   ADODB.Recordset  
  cn.Open   "Provider=SQLOLEDB.1;Password=sa;User   ID=sa;Initial   Catalog=jake;Data   Source=jian"  
  MsgBox   ("数据库连接成功!")  
  End   Function  
   
  Private   Sub   Form_Load()  
  sqlconection(cn,rs)'运行到这里就出错  
  rs.Open   "select   *   from   t_user",   cn,   adOpenKeyset,   adLockOptimistic  
  Set   DataGrid1.DataSource   =   rs  
    DataGrid1.Refresh  
  End   Sub  
  --------------------------------  
  目的只有一个:  
  就是不能在任何地方都可以调用数据库连接函数并传递参数cn,rs,可以不? 问题点数:20、回复次数:12Top

1 楼iriscole(突然空闲)回复于 2003-02-01 18:53:33 得分 0

数据库的连接是这样  
  Public   Function   exesql(ByVal   sql   As   String)   As   ADODB.Recordset  
  Dim   cn   As   ADODB.Connection  
  Dim   rs   As   ADODB.Recordset  
  Dim   exestr()   As   String  
  exestr   =   Split(sql)  
  Set   cn   =   New   ADODB.Connection  
  ConnectString="FileDSN=数据名;UID=sa;PWD="  
  If   InStr("INSERT,DELETE,UPDATE",   UCase$(exestr(0)))   Then  
  cn.Execute   sql  
  Else  
  Set   rs   =   New   ADODB.Recordset   (你少这一句啊!!!!!!)  
  rs.Open   Trim$(sql),   cn,   adOpenDynamic,   adLockOptimistic  
  Set   exesql   =   rs  
  End   If  
  End   Function  
  Top

2 楼flashasp(flashasp)回复于 2003-02-01 19:13:33 得分 0

我的数据库连接函数测试通过了的Top

3 楼lee_j()回复于 2003-02-01 21:33:33 得分 5

1.变量重复定义  
  Public   Function   sqlconection(ByVal   cn   As   String,   ByVal   rs   As   String)  
  Dim   cn   As   New   ADODB.Connection  
  Dim   rs   As   New   ADODB.Recordset  
   
  cn和rs重复定义。  
   
  2.判断数据库连接是否成功的语句有误,应该如下:  
  If   cn.State=1   Then  
          MsgBox   "数据库连接成功"  
  End   If  
   
  Top

4 楼flashasp(flashasp)回复于 2003-02-01 22:10:15 得分 0

没错!但我改过来其参数还是传不过来啊!今天我第一次接触VB  
  希望大家给我一个全局变量传递参数成功的实际例子,小弟先谢了  
  在此祝贺大家在羊年里:  
                  \\\|//////  
              \\   -   -   //    
            (   @   @   )    
  +----------------oOOo-(_)-oOOo---------------+    
  |                          
  |真心祝福:羊年穿洋装,开洋车,泡洋妞    
  |    
  |      羊年发洋财,心里暖洋洋,事事得意洋洋Oooo         
  +---------------oooO------(    )--------------+    
            (    )        )   /    
            \   (        (_/Top

5 楼chenyu5188(来自东方的狼)回复于 2003-02-02 17:26:30 得分 0

可以的  
   
  用publicTop

6 楼flashasp(flashasp)回复于 2003-02-02 17:40:37 得分 0

各位能否来个实际的例子?Top

7 楼ForrestSun(佑佑)回复于 2003-02-02 17:41:26 得分 0

把它加到  
  Private   Sub   Class_Initialize()  
   
  End   Sub  
   
  不要用functionTop

8 楼flashasp(flashasp)回复于 2003-02-02 17:50:19 得分 0

好啊!为什么?Top

9 楼billj(小金)回复于 2003-02-02 23:45:49 得分 10

sqlconection函数第一种方法并未返回所要的数据集  
  在sqlconection函数最后加上  
      set   sqlconection   =   rs  
   
  在Form_Load调用中应加  
      dim   rs   as   new   adodb.recordset  
   
      set   rs   =   sqlconection()  
   
  另外函数定义格式和调用格式虽然可行,但不规范,应添加返回参数类型。不然会与过程混淆。Top

10 楼zjxgold(稻草人)回复于 2003-02-03 10:29:50 得分 0

可以将这两句的定义,定在通用声明里  
  Dim   cn   As   New   ADODB.Connection  
  Dim   rs   As   New   ADODB.Recordset  
  Top

11 楼CityhunterID(城市猎人)回复于 2003-02-03 11:15:47 得分 5

定义出来的变量只有函数体本身有。这个建议你看看基础类的书。  
   
  楼上这位的写法是可行的。  
   
  不过我个人,认为把   cn   定义出来就OK了。  
   
  Private   cn   As   New   ADODB.ConnectionTop

12 楼flashasp(flashasp)回复于 2003-02-03 16:42:57 得分 0

终于搞顶,谢谢大家,看来我要买本书来看看了,我公司下一个项目很可能要用VB来开发,揭贴!  
   
  Public   Function   sqlconection()   '数据库连接函数  
  Dim   cn   As   New   ADODB.Connection  
  cn.Open   "Provider=SQLOLEDB.1;Password=elite;User   ID=sa;Initial   Catalog=his;Data   Source=jian"    
  Set   sqlconection   =   cn  
  MsgBox   ("数据库连接成功")  
  End   Function  
   
  Private   Sub   Form_Load()   '数据绑定  
  Dim   rs   As   New   ADODB.Recordset  
  Set   cn   =   sqlconection()  
  rs.Open   "select   *   from   t_user",   cn,   adOpenKeyset,   adLockOptimistic  
  Set   DataGrid1.DataSource   =   rs  
    DataGrid1.Refresh  
  End   Sub  
  Top

相关问题

  • 如何在mfc中传递全局变量?
  • 变量传递
  • 全局变量
  • 全局变量!!
  • 全局变量
  • 全局变量?
  • 全局变量
  • 全局变量
  • 两个对话框之间如何进行通信,如传递变量值。只能通过全局变量吗?
  • 怎样打开一个窗口并向其传递多个变量?(不使用全局变量)谢谢

关键词

  • 函数
  • 数据库
  • 连接
  • sa
  • datagrid
  • 数据
  • sqlconection
  • connectiondim
  • 变量
  • rs

得分解答快速导航

  • 帖主:flashasp
  • lee_j
  • billj
  • CityhunterID

相关链接

  • Visual Basic类图书
  • Visual Basic类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo