谁能帮我看懂这段VB与ORACLE的代码Public Sub LogAndDisp(intOrgNo As Integer, oLabel As Label, _
intMsgNo As Integer, intType As Integer, _
strPname As String, strFname As String, _
strMsg As String, Optional blnLog As Boolean = True)
'*****************************************************
' Purpose: 1.get error msg from dbt_alarm_const or VB/Oracle
' 2.write error log to database
' intOrgN Form number
' oLabel: the Label where display the message (lblOptMsg or lblSysMsg)
' intMsgN error number (err or OraDatabase.LastServerErr, if just display a
' message which not in dbt_alarm_const or VB/Oracle internal error,
' you can merely input 0,the function will not read from DB and
' just display the strMsg)
' intType: message type (1.information, 2.alarm 3.error)
' strPname: process name (char(6))
' strFname: function name (char(24))
' strMsg: message (char(80)
' blnLog: if write to log (True:write, False:not write)
' Returns: No returns
'*****************************************************
On Error GoTo Err_Execute
'**********define parameters************'
OraDatabase.Parameters.Add "inMsgNo", 0, ORAPARM_INPUT
OraDatabase.Parameters("inMsgNo").serverType = ORATYPE_NUMBER
OraDatabase.Parameters.Add "intype", 1, ORAPARM_BOTH
OraDatabase.Parameters("intype").serverType = ORATYPE_NUMBER
OraDatabase.Parameters.Add "incname", "***", ORAPARM_INPUT
OraDatabase.Parameters("incname").serverType = ORATYPE_VARCHAR
OraDatabase.Parameters.Add "inorgno", 0, ORAPARM_INPUT
OraDatabase.Parameters("inorgno").serverType = ORATYPE_NUMBER
OraDatabase.Parameters.Add "inpname", "***", ORAPARM_INPUT
OraDatabase.Parameters("inpname").serverType = ORATYPE_VARCHAR
OraDatabase.Parameters.Add "infname", "***", ORAPARM_INPUT
OraDatabase.Parameters("infname").serverType = ORATYPE_VARCHAR
OraDatabase.Parameters.Add "inMsg", "***", ORAPARM_BOTH
OraDatabase.Parameters("inMsg").serverType = ORATYPE_VARCHAR
'**********set parameters************'
OraDatabase.Parameters("inMsgNo").Value = intMsgNo
OraDatabase.Parameters("intype").Value = intType
OraDatabase.Parameters("incname").Value = gstrCRT
OraDatabase.Parameters("inorgno").Value = intOrgNo
OraDatabase.Parameters("inpname").Value = strPname
OraDatabase.Parameters("infname").Value = strFname
If Not (intMsgNo > 2000 And intMsgNo < 3000) Then 'show instant message from Internal
OraDatabase.Parameters("inMsg").Value = strMsg
oLabel.Caption = Format(Now, "[Hh24:Nn:Ss]") & _
"[" & gstrCRT & "][" & intOrgNo & "]<" & strFname & ">" & _
strMsg
Else 'search in dbt_alarm_const
OraDatabase.DbExecuteSQL ("Begin OptErrMsg.GetErrMsg " & _
"(:inMsgNo,:intype,:inMsg); End;") If OraDatabase.LastServerErr <> 0 Or OraDatabase.LastServerErrText <> "" Then
Error 2
End If
If IsNull(OraDatabase.Parameters("inMsg").Value) Then
oLabel.Caption = Format(Now, "[Hh24:Nn:Ss]") & _
"[" & gstrCRT & "][" & intOrgNo & "]<" & strFname & ">" & _
"No relational message in dbt_alarm_const"
Else
oLabel.Caption = Format(Now, "[Hh24:Nn:Ss]") & _
"[" & gstrCRT & "][" & intOrgNo & "]<" & strFname & ">" & _
OraDatabase.Parameters("inMsg").Value
End If
End If
If blnLog Then
'*********Log to dbt_alarm_log***********'
OraDatabase.DbExecuteSQL ("Begin errmsg.logerrmsg " & _
"(:inMsgNo,:intype,:incname,:inorgno,:inpname,:infname,:inMsg); End;") If OraDatabase.LastServerErr <> 0 Or OraDatabase.LastServerErrText <> "" Then
Error 2
End If
'*********Display on CRT***********' End If
Select Case OraDatabase.Parameters("intype").Value
Case 1 'Information
oLabel.ForeColor = &H80FF80
Case 2 'Warning
oLabel.ForeColor = &HFFFF&
Case 3 'Error
oLabel.ForeColor = &H80&
Case Else
oLabel.ForeColor = &HC000&
End Select
''''remove Parameter '''''''
OraDatabase.Parameters.Remove ("inMsgNo")
OraDatabase.Parameters.Remove ("intype")
OraDatabase.Parameters.Remove ("incname")
OraDatabase.Parameters.Remove ("inorgno")
OraDatabase.Parameters.Remove ("inpname")
OraDatabase.Parameters.Remove ("infname")
OraDatabase.Parameters.Remove ("inMsg")
Exit SubErr_Execute:
'Check to see if an Oracle error has occurred.
If OraSession.LastServerErr = 0 Then
If OraDatabase.LastServerErr = 0 Then 'Must be some non-Oracle error
If Err = 1 Then
ErrMsg = "The error number does not exit,please check."
Else
ErrMsg = "VB:" & Err & " " & Err.Description
End If
Else
ErrMsg = OraDatabase.LastServerErrText
OraDatabase.LastServerErrReset
End If
Else
ErrMsg = OraSession.LastServerErrText
OraSession.LastServerErrReset
End If
Screen.MousePointer = vbDefault
MsgBox ErrMsg, vbCritical ''''remove Parameter '''''''
OraDatabase.Parameters.Remove ("inMsgNo")
OraDatabase.Parameters.Remove ("intype")
OraDatabase.Parameters.Remove ("incname")
OraDatabase.Parameters.Remove ("inorgno")
OraDatabase.Parameters.Remove ("inpname")
OraDatabase.Parameters.Remove ("infname")
OraDatabase.Parameters.Remove ("inMsg")
Exit Sub
End Sub
intMsgNo As Integer, intType As Integer, _
strPname As String, strFname As String, _
strMsg As String, Optional blnLog As Boolean = True)
'*****************************************************
' Purpose: 1.get error msg from dbt_alarm_const or VB/Oracle
' 2.write error log to database
' intOrgN Form number
' oLabel: the Label where display the message (lblOptMsg or lblSysMsg)
' intMsgN error number (err or OraDatabase.LastServerErr, if just display a
' message which not in dbt_alarm_const or VB/Oracle internal error,
' you can merely input 0,the function will not read from DB and
' just display the strMsg)
' intType: message type (1.information, 2.alarm 3.error)
' strPname: process name (char(6))
' strFname: function name (char(24))
' strMsg: message (char(80)
' blnLog: if write to log (True:write, False:not write)
' Returns: No returns
'*****************************************************
On Error GoTo Err_Execute
'**********define parameters************'
OraDatabase.Parameters.Add "inMsgNo", 0, ORAPARM_INPUT
OraDatabase.Parameters("inMsgNo").serverType = ORATYPE_NUMBER
OraDatabase.Parameters.Add "intype", 1, ORAPARM_BOTH
OraDatabase.Parameters("intype").serverType = ORATYPE_NUMBER
OraDatabase.Parameters.Add "incname", "***", ORAPARM_INPUT
OraDatabase.Parameters("incname").serverType = ORATYPE_VARCHAR
OraDatabase.Parameters.Add "inorgno", 0, ORAPARM_INPUT
OraDatabase.Parameters("inorgno").serverType = ORATYPE_NUMBER
OraDatabase.Parameters.Add "inpname", "***", ORAPARM_INPUT
OraDatabase.Parameters("inpname").serverType = ORATYPE_VARCHAR
OraDatabase.Parameters.Add "infname", "***", ORAPARM_INPUT
OraDatabase.Parameters("infname").serverType = ORATYPE_VARCHAR
OraDatabase.Parameters.Add "inMsg", "***", ORAPARM_BOTH
OraDatabase.Parameters("inMsg").serverType = ORATYPE_VARCHAR
'**********set parameters************'
OraDatabase.Parameters("inMsgNo").Value = intMsgNo
OraDatabase.Parameters("intype").Value = intType
OraDatabase.Parameters("incname").Value = gstrCRT
OraDatabase.Parameters("inorgno").Value = intOrgNo
OraDatabase.Parameters("inpname").Value = strPname
OraDatabase.Parameters("infname").Value = strFname
If Not (intMsgNo > 2000 And intMsgNo < 3000) Then 'show instant message from Internal
OraDatabase.Parameters("inMsg").Value = strMsg
oLabel.Caption = Format(Now, "[Hh24:Nn:Ss]") & _
"[" & gstrCRT & "][" & intOrgNo & "]<" & strFname & ">" & _
strMsg
Else 'search in dbt_alarm_const
OraDatabase.DbExecuteSQL ("Begin OptErrMsg.GetErrMsg " & _
"(:inMsgNo,:intype,:inMsg); End;") If OraDatabase.LastServerErr <> 0 Or OraDatabase.LastServerErrText <> "" Then
Error 2
End If
If IsNull(OraDatabase.Parameters("inMsg").Value) Then
oLabel.Caption = Format(Now, "[Hh24:Nn:Ss]") & _
"[" & gstrCRT & "][" & intOrgNo & "]<" & strFname & ">" & _
"No relational message in dbt_alarm_const"
Else
oLabel.Caption = Format(Now, "[Hh24:Nn:Ss]") & _
"[" & gstrCRT & "][" & intOrgNo & "]<" & strFname & ">" & _
OraDatabase.Parameters("inMsg").Value
End If
End If
If blnLog Then
'*********Log to dbt_alarm_log***********'
OraDatabase.DbExecuteSQL ("Begin errmsg.logerrmsg " & _
"(:inMsgNo,:intype,:incname,:inorgno,:inpname,:infname,:inMsg); End;") If OraDatabase.LastServerErr <> 0 Or OraDatabase.LastServerErrText <> "" Then
Error 2
End If
'*********Display on CRT***********' End If
Select Case OraDatabase.Parameters("intype").Value
Case 1 'Information
oLabel.ForeColor = &H80FF80
Case 2 'Warning
oLabel.ForeColor = &HFFFF&
Case 3 'Error
oLabel.ForeColor = &H80&
Case Else
oLabel.ForeColor = &HC000&
End Select
''''remove Parameter '''''''
OraDatabase.Parameters.Remove ("inMsgNo")
OraDatabase.Parameters.Remove ("intype")
OraDatabase.Parameters.Remove ("incname")
OraDatabase.Parameters.Remove ("inorgno")
OraDatabase.Parameters.Remove ("inpname")
OraDatabase.Parameters.Remove ("infname")
OraDatabase.Parameters.Remove ("inMsg")
Exit SubErr_Execute:
'Check to see if an Oracle error has occurred.
If OraSession.LastServerErr = 0 Then
If OraDatabase.LastServerErr = 0 Then 'Must be some non-Oracle error
If Err = 1 Then
ErrMsg = "The error number does not exit,please check."
Else
ErrMsg = "VB:" & Err & " " & Err.Description
End If
Else
ErrMsg = OraDatabase.LastServerErrText
OraDatabase.LastServerErrReset
End If
Else
ErrMsg = OraSession.LastServerErrText
OraSession.LastServerErrReset
End If
Screen.MousePointer = vbDefault
MsgBox ErrMsg, vbCritical ''''remove Parameter '''''''
OraDatabase.Parameters.Remove ("inMsgNo")
OraDatabase.Parameters.Remove ("intype")
OraDatabase.Parameters.Remove ("incname")
OraDatabase.Parameters.Remove ("inorgno")
OraDatabase.Parameters.Remove ("inpname")
OraDatabase.Parameters.Remove ("infname")
OraDatabase.Parameters.Remove ("inMsg")
Exit Sub
End Sub
http://blog.csdn.net/douhapy/archive/2005/01.aspx
http://blog.csdn.net/douhapy/archive/2005/01/10/246883.aspx
http://blog.csdn.net/douhapy/archive/2005/01/10/246890.aspx