关于variant变量的问题。

chenminer 2003-12-26 04:52:00
dim i as variant

我假设i可能是个空值(null)可能是个字符串。现在我有一个问题是,可以不通过判断把i传给一个函数,在里面去执行存储过程。见代码,
Public Function GetTaskInfo(ByVal condition_1 As Variant, _
ByVal condition_2 As Variant, _
ByVal condition_3 As Variant, _
ByVal condition_4 As Variant) As Recordset
Dim ado As AdoAccess
Dim Result As Boolean
Dim SQL As String
Dim Rec As ADODB.Recordset
Dim source As String

Set ado = New AdoAccess
Set GetTaskInfo = Nothing

Result = ado.OpenConnection(GetSetting("CMQC", "DataBase", "ConnectString"))
If Result = True Then
SQL = "exec GetTaskInfoByMultiCondition" + Chr(34) + condition_1 + Chr(34) + condition_2 + condition_3 + condition_4
Result = ado.GetRecordset(SQL, Rec)
If Result = True Then
Set GetTaskInfo = Rec
End If

Set Rec = Nothing
ado.CloseConnection
End If
Set ado = Nothing
End Function

我的condition_1,2,3,4可能是null,可能是字符串。望高手指点。谢谢了
...全文
121 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
northwolves 2003-12-26
  • 打赏
  • 举报
回复
try:

Public Function GetTaskInfo(ByVal condition_1 As String, _
ByVal condition_2 As String, _
ByVal condition_3 As String, _
ByVal condition_4 As String) As Recordset
Dim ado As AdoAccess
Dim Result As Boolean
Dim SQL As String
Dim Rec As ADODB.Recordset
Dim source As String

Set ado = New AdoAccess
Set GetTaskInfo = Nothing

Result = ado.OpenConnection(GetSetting("CMQC", "DataBase", "ConnectString"))
If Result = True Then
SQL = "exec GetTaskInfoByMultiCondition" + Chr(34) + condition_1 & "" + Chr(34) + condition_2 & "" + condition_3 & "" + condition_4 & ""
Result = ado.GetRecordset(SQL, Rec)
If Result = True Then
Set GetTaskInfo = Rec
End If

Set Rec = Nothing
ado.CloseConnection
End If
Set ado = Nothing
End Function
道素 2003-12-26
  • 打赏
  • 举报
回复
首先因为没有可选参数,所以肯定会传值进去否则不让编译
但是有可能传NULL进去,这样你就要检验
你可以不检验用户给你传如的值,但是你最好在
GetTaskInfo中进行判断

Public Function GetTaskInfo(ByVal condition_1 As Variant, _
ByVal condition_2 As Variant, _
ByVal condition_3 As Variant, _
ByVal condition_4 As Variant) As Recordset
Dim ado As AdoAccess
Dim Result As Boolean
Dim SQL As String
Dim Rec As ADODB.Recordset
Dim source As String

If IsNull(condition_1) Then condition_1 = ""
If IsNull(condition_2) Then condition_2 = ""
If IsNull(condition_3) Then condition_3 = ""
If IsNull(condition_4) Then condition_4 = ""

leolan 2003-12-26
  • 打赏
  • 举报
回复
Public Function GetTaskInfo(ByVal condition_1 As Variant="", _
ByVal condition_2 As Variant="", _
ByVal condition_3 As Variant="", _
ByVal condition_4 As Variant="") As Recordset
chenminer 2003-12-26
  • 打赏
  • 举报
回复
有人吗

7,763

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧