如下代码中,函数xx是不是不需要再返回值了呢?因为xx1里面已经有一个报错信息了:If xx1= -1 Then MsgBox "xx1 ERROR:" & strErr
Private Function xx(...)
xx1 intNumber ,cnDB
...
End Function'错误返回-1,成功返回0
Private Function xx1(ByVal intNumber As Integer, cnDB As clsDBconnection) As Integer
Dim strErr As String
Dim strSQL(4) As String
On Error GoTo errYLSJMfy
strSQL(0) = ...
strSQL(1) = ...
strSQL(2) = ...
strSQL(3) = ...
strSQL(4) = ...
xx1= opDB.cmtSql(strSQL(), cnDB, strErr)
If xx1= -1 Then MsgBox "xx1 ERROR:" & strErr:Exit Function
YLSJMfy = 0
Exit Function
errYLSJMfy:
YLSJMfy = -1
End Function
Public Function cmtSql(strSQL() As String, cnDB As Connection, Optional ByRef strErr As String) As Integer
Dim i As Integer
On Error GoTo errCmtSql
cnDB.BeginTrans
For i = 0 To UBound(strSQL)
cnDB.Execute strSQL(i)
Next
cnDB.CommitTrans
cmtSql = 0
Exit Function
errCmtSql:
strErr = Err.Description
cnDB.RollbackTrans
cmtSql = -1
Err.Clear
End Function还是应该做这样一个处理呢:
Private Function xx(...)
xx=xx1 intNumber ,cnDB
if xx=-1 then msgbox "error":exit Function '这样一旦有多次函数调用,岂非要一堆的if判断了?
'如果没有返回值,应该如果调出这个函数?
....
End Function
Private Function xx(...)
xx1 intNumber ,cnDB
...
End Function'错误返回-1,成功返回0
Private Function xx1(ByVal intNumber As Integer, cnDB As clsDBconnection) As Integer
Dim strErr As String
Dim strSQL(4) As String
On Error GoTo errYLSJMfy
strSQL(0) = ...
strSQL(1) = ...
strSQL(2) = ...
strSQL(3) = ...
strSQL(4) = ...
xx1= opDB.cmtSql(strSQL(), cnDB, strErr)
If xx1= -1 Then MsgBox "xx1 ERROR:" & strErr:Exit Function
YLSJMfy = 0
Exit Function
errYLSJMfy:
YLSJMfy = -1
End Function
Public Function cmtSql(strSQL() As String, cnDB As Connection, Optional ByRef strErr As String) As Integer
Dim i As Integer
On Error GoTo errCmtSql
cnDB.BeginTrans
For i = 0 To UBound(strSQL)
cnDB.Execute strSQL(i)
Next
cnDB.CommitTrans
cmtSql = 0
Exit Function
errCmtSql:
strErr = Err.Description
cnDB.RollbackTrans
cmtSql = -1
Err.Clear
End Function还是应该做这样一个处理呢:
Private Function xx(...)
xx=xx1 intNumber ,cnDB
if xx=-1 then msgbox "error":exit Function '这样一旦有多次函数调用,岂非要一堆的if判断了?
'如果没有返回值,应该如果调出这个函数?
....
End Function
所以问题不存在。
当然不是。
cmtSql是模块里面的函数。
On Error GoTo err_t strErr = ""
t = x / y
Exit Functionerr_t:
t = 0
strErr = "t_err:" & Err.Description
End FunctionFunction tt(x, y, z)
On Error GoTo err_tt
Dim n
strErr = ""
n = t(x, y)
If n = 0 Then
tt = 0
Else
tt = n / z
End If
Exit Functionerr_tt:
tt = 0
strErr = "tt_err:" & Err.Description
End FunctionPrivate Sub Command1_Click()
Dim n
n = tt(10, 0, 0)
If n = 0 Then
MsgBox strErr '第一个错误就终止了
Else
MsgBox n
End If
End Sub