View Single Post
Old 07-01-2009   #4 (permalink)
Mark D. MacLachlan


 
 

Re: Calling a VBScript from Access

DetRich wrote:
Quote:

> Hello,
>
> I have an Access application from which I need to call a vbscript
> which will ping a server and display results to the user.
>
> In Access, a form displays a record. This record has the hostname of
> a server. When clicking the "Ping Server" command button, the
> vbscript should be called.
>
> I need to know how to pass the hostname of the server to the ping
> command. Can anyone help me understand how to pass this hostname to
> the script so that the correct server is returned? The script can
> either interpret the results and display a success or fail message or
> the results of the ping can be written to a file and the script can
> read the file, then display the results.
>
> TIA,
> DetRich
Rather than going the route you are, why not use the WMI PingStatus
class which will return a ping status for you? Here is a function that
does it.

Code:
Function PingStatus(strComputer)

On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer &
"\root\cimv2")
Set colPings = objWMIService.ExecQuery _
("SELECT * FROM Win32_PingStatus WHERE Address = '" & strComputer
& "'")
For Each objPing in colPings
Select Case objPing.StatusCode
Case 0 PingStatus = "Success"
Case 11001 PingStatus = "Status code 11001 - Buffer Too
Small"
Case 11002 PingStatus = "Status code 11002 - Destination
Net Unreachable"
Case 11003 PingStatus = "Status code 11003 - Destination
Host Unreachable"
Case 11004 PingStatus = _
"Status code 11004 - Destination Protocol Unreachable"
Case 11005 PingStatus = "Status code 11005 - Destination
Port Unreachable"
Case 11006 PingStatus = "Status code 11006 - No Resources"
Case 11007 PingStatus = "Status code 11007 - Bad Option"
Case 11008 PingStatus = "Status code 11008 - Hardware Error"
Case 11009 PingStatus = "Status code 11009 - Packet Too Big"
Case 11010 PingStatus = "Status code 11010 - Request Timed
Out"
Case 11011 PingStatus = "Status code 11011 - Bad Request"
Case 11012 PingStatus = "Status code 11012 - Bad Route"
Case 11013 PingStatus = "Status code 11013 - TimeToLive
Expired Transit"
Case 11014 PingStatus = _
"Status code 11014 - TimeToLive Expired Reassembly"
Case 11015 PingStatus = "Status code 11015 - Parameter
Problem"
Case 11016 PingStatus = "Status code 11016 - Source Quench"
Case 11017 PingStatus = "Status code 11017 - Option Too Big"
Case 11018 PingStatus = "Status code 11018 - Bad
Destination"
Case 11032 PingStatus = "Status code 11032 - Negotiating
IPSEC"
Case 11050 PingStatus = "Status code 11050 - General
Failure"
Case Else PingStatus = "Status code " & objPing.StatusCode
& _
" - Unable to determine cause of failure."
End Select
Next

End Function
Hope that helps.

Regards,

Mark D. MacLachlan

--

My System SpecsSystem Spec