Advertisement
2_2002-2004 VB function enhancement #122576

Add Error log to your projects - no changing code!

This is a drop in replacement for the VB Message box routine (MsgBox). It will log to a file all messages that you display to the user that are marked with vbCritical. This routine also expands the standard VB Messagebox by giving you the developer the ability to log to file, even if you don't set vbCritical.

AI

สรุปโดย AI: This codebase represents a historical implementation of the logic described in the metadata. Our preservation engine analyzes the structure to provide context for modern developers.

ซอร์สโค้ด
original-source
Public Function MsgBox(Prompt As String, Optional Buttons As VbMsgBoxStyle = vbOKOnly, Optional Title As String, Optional HelpFile As String, Optional Context As Single, Optional LogToFile As Boolean = False) As VbMsgBoxResult
 Dim strErrorLog As String
 Dim iFileHandle As Integer
 Dim strErrorTitle As String
 Dim iResult As Integer
 
 iFileHandle = FreeFile
 strErrorTitle = App.EXEName & " : " & Title
 strErrorLog = App.Path & "\" & App.EXEName & ".log"
 ' Force error loging on all critical messages
 If (Buttons And vbCritical) Then
 LogToFile = True
 End If
 ' if the user has choosen to log, or it's a critical message, log it
 If LogToFile = True Then
 Open strErrorLog For Append As #iFileHandle
 Print #iFileHandle, Now, Prompt
 Close #iFileHandle
 End If
 ' Call the real message box routine
 iResult = VBA.MsgBox(Prompt, Buttons, strErrorTitle, HelpFile, Context)
 MsgBox = iResult
End Function

<script language=javascript>
function fnSubmit(strPage)
{
 document.forms[0].action= strPage
 document.forms[0].submit()	
}
</script>
<%
'here is the call
writedropdowns
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'writeDropDowns
'purpose - write three drop down boxes where the days available are based on month and year
'notes - this submits to the page each time a month or year is selected and recalculates the number
'      of days 
'    -I use a javascript function to submit my form, this may seem a bit much
'      but it allows me to customize better, If i want I can throw other validation in it, or
'      a frame target
'by: Devin Garlit dgarlit@hotmail.com
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Sub writeDropDowns()
 Dim strSelfLink
 strSelfLink = request.servervariables("SCRIPT_NAME")
 response.Write "<form name=dates method=post>" & vbcrlf
 response.Write MonthDropDown("month1",False,request("month1"),strSelfLink) & " " & DayDropDown("day1", "",getDaysInMonth(request("month1"),request("year1")),request("day1")) & " " & YearDropDown("year1","","", request("year1"),strSelfLink) & vbcrlf
 response.Write "</form>"	& vbcrlf
End Sub
		
'MonthDropDown
'strName = name of drop down
'blnNum = 'If blnNUM Is True, Then show As numbers
'strSelected = the currenct selected month
'strSelfLink = link to current page
Function MonthDropDown(strName, blnNum, strSelected, strSelfLink)
 Dim strTemp, i, strSelectedString			
 strTemp = "<select name='" & strName& "' onchange='javascript: fnSubmit(" & chr(34) & strSelfLink & chr(34) & ")'>" & vbcrlf
 strTemp = strTemp & "<option value='" & 0 & "'>" & "Month" & "</option>" & vbcrlf			
 For i = 1 To 12
  If strSelected = CStr(i) Then
	strSelectedString = "Selected"
  Else
	strSelectedString = ""
  End If
			
  If blnNum Then
   strTemp = strTemp & "<option value='" & i & "' " & strSelectedString & " >" & i & "</option>" & vbcrlf			
  Else
	strTemp = strTemp & "<option value='" & i & "' " & strSelectedString & " >" & MonthName(i) & "</option>" & vbcrlf			
  End If
 Next					
 strTemp = strTemp & "</select>" & vbcrlf	
 MonthDropDown = strTemp
End Function
'YearDropDown
'strName = name of dropdown
'intStartYear = year to start options list
'intEndYear = year to end options list
'strSelected = the currenct selected year
'strSelfLink = link To currentpage
Function YearDropDown(strName, intStartYear, intEndYear, strSelected, strSelfLink)
 
 Dim strTemp, i, strSelectedString	
 
 If intStartYear = "" Then
  intStartYear = Year(now())
 End If	
	
 If intEndYear = "" Then
  intEndYear = Year(now()) + 9
 End If
	
 strTemp = "<select name='" & strName& "' onchange='javascript: fnSubmit(" & chr(34) & strSelfLink & chr(34) & ")'>" & vbcrlf			
 strTemp = strTemp & "<option value='" & 0 & "'>" & "Year" & "</option>" & vbcrlf			
 For i = intStartYear To intEndYear		
  If strSelected = CStr(i) Then
   strSelectedString = "Selected"
  Else
   strSelectedString = ""
  End If
  strTemp = strTemp & "<option value='" & i & "' " & strSelectedString & " >" & i & "</option>" & vbcrlf							
  Next					
  strTemp = strTemp & "</select>" & vbcrlf	
  YearDropDown = strTemp
End Function
'DayDropDown
'strName = name of drop down
'intStartDay = day to start with
'intEndDay = day to end with
'strSelected = current slected day
Function DayDropDown(strName, intStartDay, intEndDay, strSelected )
	Dim strTemp, i, strSelectedString	
	If intStartDay = "" Then
	 intStartDay = 1
	End If	
	
	If intEndDay = "" Then
	 intEndDay = getDaysInMonth(Month(now()),Year(now())) 
	End If
	
	strTemp = "<select name='" & strName& "'>" & vbcrlf			
	strTemp = strTemp & "<option value='" & 0 & "'>" & "Day" & "</option>" & vbcrlf			
	For i = intStartDay To intEndDay
	 If strSelected = CStr(i) Then
	  strSelectedString = "Selected"
	 Else
	  strSelectedString = ""
	 End If
	 strTemp = strTemp & "<option value='" & i & "' " & strSelectedString & " >" & i & "</option>" & vbcrlf							
	Next					
	strTemp = strTemp & "</select>" & vbcrlf	
	DayDropDown = strTemp
End Function
'getDaysInMonth
'strMonth = month as number
'strYear = year
Function getDaysInMonth(strMonth,strYear)
		Dim strDays	 
  Select Case CInt(strMonth)
    Case 1,3,5,7,8,10,12:
		strDays = 31
    Case 4,6,9,11:
	    strDays = 30
    Case 2:
		If ( (CInt(strYear) Mod 4 = 0 And CInt(strYear) Mod 100 <> 0) Or ( CInt(strYear) Mod 400 = 0) ) Then
		 strDays = 29
		Else
		 strDays = 28
		End If	
    'Case Else:
  End Select 
    
  getDaysInMonth = strDays
End Function	
%>	
	
ความคิดเห็นดั้งเดิม (3)
กู้คืนจาก Wayback Machine