如何在一个Action内执行多个SQL语句?
代码1:将查询字段设为常量LoginUserName="吴静"
SupplyExportCodeName="需求09110000149"
Dim con
Dim conset
Dim rs
Dim sql
Dim con2
Dim conset2
Dim rs2
Dim sql2
If (UseCase="代管物资出库") Then
'//建立连接
Set con=createobject("adodb.connection")
conset="MSDASQL.1;Persist Security Info=False;User ID=sa;PWD=1111;Data Source=datasource_gzmmis;Initial Catalog=gzscene"
'//打开数据源链接
con.open conset
'//建立空的记录集
Set rs=createobject("adodb.recordset")
'//设置SQL语句
msgbox SupplyExportCodeName
sql="use gzscene select SupplyExportCode from im_supplyexport where stockapplycode like'%"+SupplyExportCodeName+"%' "
'//打开记录集
rs.open sql,con,1,2
rs.Movefirst
SupplyExportCodeValue=rs("SupplyExportCode").value
msgbox SupplyExportCodeValue
End If
'//建立连接
Set con2=createobject("adodb.connection")
conset2="MSDASQL.1;Persist Security Info=False;User ID=sa;PWD=1111;Data Source=datasource_gzmmis;Initial Catalog=gzscene"
Set rs2=createobject("adodb.recordset")
'//打开数据源链接
con2.open conset2
msgbox "LoginUserName="+LoginUserName
sql2="use gzscene select PWD from S_USER where UNAME like'%"+LoginUserName+"%' "
rs2.open sql2,con,1,2
rs2.Movefirst
LogPwd=rs2("PWD").value
msgbox LogPwd
代码2:将查询字段设为变量,而变量由excel提供
LoginUserName=bsSheet.Cells(2,3)
SupplyExportCodeName=bsSheet.Cells(2,2)
Dim con
Dim conset
Dim rs
Dim sql
Dim con2
Dim conset2
Dim rs2
Dim sql2
If (UseCase="代管物资出库") Then
'//建立连接
Set con=createobject("adodb.connection")
conset="MSDASQL.1;Persist Security Info=False;User ID=sa;PWD=1111;Data Source=datasource_gzmmis;Initial Catalog=gzscene"
'//打开数据源链接
con.open conset
'//建立空的记录集
Set rs=createobject("adodb.recordset")
'//设置SQL语句
msgbox SupplyExportCodeName
sql="use gzscene select SupplyExportCode from im_supplyexport where stockapplycode like'%"+SupplyExportCodeName+"%' "
'//打开记录集
rs.open sql,con,1,2
rs.Movefirst
SupplyExportCodeValue=rs("SupplyExportCode").value
msgbox SupplyExportCodeValue
End If
'//建立连接
Set con2=createobject("adodb.connection")
conset2="MSDASQL.1;Persist Security Info=False;User ID=sa;PWD=1111;Data Source=datasource_gzmmis;Initial Catalog=gzscene"
Set rs2=createobject("adodb.recordset")
'//打开数据源链接
con2.open conset2
msgbox "LoginUserName="+LoginUserName
sql2="use gzscene select PWD from S_USER where UNAME like'%"+LoginUserName+"%' "
rs2.open sql2,con,1,2
rs2.Movefirst
LogPwd=rs2("PWD").value
msgbox LogPwd
问题描述:如果单独执行代码1,是成功的,执行代码2时此时执行到rs2.open sql2,con,1,2的时候就会提示”参数类型不正确,或不在可以接受的范围之内,或与其他参数冲突“,请问我将两个sql即:sql,sql2z放在同一个Action里面该如何处理?
PS:代码2中的两个LoginUserName等是放在excel里面,且存在循环
[ 本帖最后由 walker1020 于 2009-12-1 10:15 编辑 ] 建议楼主 直接 在 PL/SQL 里面执行 你说的sql,sql2,看看那两个SQL 语句是否有问题。 当然,你需要先用SQL语句把代码1和代码2实现出来。 好乱啊, 建议楼主 把连接数据库, 获取数据, 断开连接
都写成 公共函数吧, 这样方便! 送楼主了,细节自己调整
connect:连接
sql:查询SQL
ReturnParamArray:需要返回的字段名称
Function SQL_select(connect,sql,ReturnParamArray)
On Error Resume Next
Dim ReturnValue(50,1000)
Set cnn =CreateObject ("adodb.connection")
cnn.open = connect
Set res =CreateObject ("adodb.recordset")
'sql = "select * from td.USERS"
'sql = "EXEC BUG_Statistics_by_User 'xx','xx','xxxx'"
res.open sql,cnn
res.MoveFirst
If Err Then
'MsgBox "数据库查询错误"
Exit Function
End If
Dim i,j
Do While Not res.EOF
For i = 0 To UBound(ReturnParamArray)
ReturnValue(i,j) = res.fields(ReturnParamArray(i))
' If Err Then
' ReturnValue(i,j) = ""
' Err.Clear
' End If
Next
j = j + 1
res.MoveNext
Loop
SQL_select = ReturnValue
res.close
Set res = Nothing
cnn.close
Set cnn = Nothing
End Function use gzscene
这段才是根本原因,ADO语句是不能使用use关键字的,只能将库名gzscene写到连接字符串中
页:
[1]