全局变量传递问题
----------------------------
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




