标签: vbscript

VBScript/ASP-Classic"停止"语句不会破坏调试器

我曾经stop在我的VBScript/ASP-Classic代码中添加一个" "语句来打入调试器(Microsoft脚本编辑器,Microsoft Office附带).

但现在它不再破坏了." stop"被忽略,没有任何好处.

IIS中已启用服务器端调试标志

怎么解决这个?


示例代码, hello.asp

stop 
Response.Write "Hello W."
Run Code Online (Sandbox Code Playgroud)

debugging vbscript asp-classic

6
推荐指数
1
解决办法
6674
查看次数

经典ASP App CINT失败 - twitpocalypse v2

由于数值超过了VBScript INT可以存储的值,我收到了一个非常讨厌的错误消息(实际上是用户)...这完全是twitpocalypse的情况.

由于CINT()在这种情况下不起作用,最好的解决方法是什么?

requestqty = 40200
CInt() max = 32767

CInt(requestqty) 
Run Code Online (Sandbox Code Playgroud)

编辑
CLng()似乎可以解决问题,将代码更改为所有CInt()到CLng()的任何风险.从我在下面阅读的内容和其他网站上看,似乎甚至没有理由使用CInt().我没有写这个特定的应用程序,也不知道为什么一个被用于另一个,但更愿意不对这个问题进行限制并在应用程序中完全解决这个问题,所以它不会再发生......

vbscript asp-classic

6
推荐指数
1
解决办法
6440
查看次数

从Classic ASP执行存储过程

出于一些奇妙的原因,我发现自己在经典ASP页面中调试了一个问题(在过去的两天里我至少失去了10年的生命).

我正在尝试执行包含一些OUT参数的存储过程.问题是当存储过程返回时,没有填充其中一个OUT参数.我可以从SQL管理工作室(这是2008)执行存储过程,并且所有值都被设置并完全按预期返回.

declare @inVar1 varchar(255)
declare @inVar2 varchar(255)
declare @outVar1 varchar(255)
declare @outVar2 varchar(255)

SET @inVar2  = 'someValue'

exec theStoredProc @inVar1 , @inVar2 , @outVar1 OUT, @outVar2 OUT

print '@outVar1=' + @outVar1
print '@outVar2=' + @outVar2 
Run Code Online (Sandbox Code Playgroud)

效果很好.太棒了.完善.我期待的确切值将被返回并打印出来.

是的,因为我正在尝试调试经典ASP页面,所以我将代码复制到VBScript文件中以尝试缩小问题范围.

这是我想出的:

Set Conn = CreateObject("ADODB.Connection")
Conn.Open "xxx"

Set objCommandSec = CreateObject("ADODB.Command")
objCommandSec.ActiveConnection = Conn

objCommandSec.CommandType = 4
objCommandSec.CommandText = "theStoredProc "

objCommandSec.Parameters.Refresh

objCommandSec.Parameters(2) = "someValue"

objCommandSec.Execute

MsgBox(objCommandSec.Parameters(3))
Run Code Online (Sandbox Code Playgroud)

不行.一点儿都没有.(我生命中的另外十年)第三个参数只是NULL - 这也是我在Classic ASP页面中遇到的.

有人可以对此有所了解吗?我认为经典的ASP代码与VBScript代码相同,我是完全愚蠢的吗?我认为它使用相同的脚本引擎和语法,所以我应该没问题,但我不是100%肯定.

我从VBScript中看到的结果与我在ASP中看到的结果相同.

vbscript asp-classic

6
推荐指数
1
解决办法
3万
查看次数

ASPError对象在我的自定义错误页面上不包含任何数据

我在web.config中有以下内容

<httpErrors errorMode="Custom">
    <remove statusCode="500" subStatusCode="-1" />
    <error statusCode="500" prefixLanguageFilePath="" path="/error.asp" responseMode="ExecuteURL" />
</httpErrors>
Run Code Online (Sandbox Code Playgroud)

错误处理正在工作,当发生500错误时,我被发送到my error.asp而不是默认的500错误页面.

问题是没有设置ASPError返回的对象的任何属性Server.GetLastError.

例如,在下面的代码中,错误描述是

dim oErr : set oErr = Server.GetLastError

Response.Write "Error Description:  " & oErr.Description& "<br />"
Run Code Online (Sandbox Code Playgroud)

更新

基于Joel在评论中链接的主题,我已将web.config更新为以下内容:

<httpErrors errorMode="Custom">
    <remove statusCode="500" subStatusCode="100" />
    <error statusCode="500" subStatusCode="100" prefixLanguageFilePath="" path="/error.asp" responseMode="ExecuteURL" />
</httpErrors>
Run Code Online (Sandbox Code Playgroud)

确实给了我返回的ASPError对象中的数据GetLastError.

现在的问题是我从生成错误的页面的开头获取HTML,然后页面的其余部分是HTML error.asp.

我真的很喜欢重定向到error.asp但改变web.config responseMode="Redirect"似乎不起作用.

vbscript iis-7 asp-classic

6
推荐指数
1
解决办法
2260
查看次数

可以在VBScript中访问WMI对象的属性BY NAME吗?

而不是像这样的代码:

On Error Resume Next
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_IP4RouteTable",,48)
For Each objItem in colItems
    Wscript.Echo "Age: " & objItem.Age
    Wscript.Echo "Caption: " & objItem.Caption
    Wscript.Echo "Description: " & objItem.Description
Next
Run Code Online (Sandbox Code Playgroud)

是否可以按名称访问每个属性,类似于以下语法之一:

Wscript.Echo "Age: " & objItem("Age")
Wscript.Echo "Age: " & objItem.Properties("Age")
Wscript.Echo "Age: " & objItem.Item("Age")
Run Code Online (Sandbox Code Playgroud)

甚至更好,有什么办法可以做到这样的事情:

Dim colItems
Dim objItem
Dim aProperty
Set colItems = objWMIService.ExecQuery("Select * from Win32_IP4RouteTable",,48)
For Each objItem in colItems
   For …
Run Code Online (Sandbox Code Playgroud)

com vbscript wmi

6
推荐指数
1
解决办法
4505
查看次数

如何确定动态数组是否未在VBScript中标注尺寸

假设我在VBScript中创建了一个动态数组

Dim myArray()
Run Code Online (Sandbox Code Playgroud)

稍后我如何检查这个数组从未被标注过尺寸?

Ubound(myArray) 'sub script out of range
Lbound(myArray) 'sub script out of range
IsEmpty(myArray) 'returns false
Run Code Online (Sandbox Code Playgroud)

arrays vbscript

6
推荐指数
1
解决办法
4175
查看次数

用于vbs的CreateObject()对象列表

我喜欢脚本,我不喜欢重新发明轮子,所以我喜欢CreateObject
你能不能指出一个可以在VBScript上使用的简短描述的对象列表.真的,我没有找到超过50的网站.

提前致谢

vbscript createobject

6
推荐指数
1
解决办法
2万
查看次数

VBScript ISO8601

在VBScript中,是否FormatDateTime有ISO 8601支持?

如果没有,我将如何编写这样的功能呢?

例如:

Response.Write FormatAsISO8601(#05/04/2011#)

Function FormatAsISO8601(datetime)
    ...
End Function
Run Code Online (Sandbox Code Playgroud)

vbscript datetime iso8601 asp-classic

6
推荐指数
1
解决办法
6594
查看次数

查询SQL数据库时出现EOF和BOF错误

我正在尝试从vbs查询SQL数据库,但是当没有找到记录时,我收到错误

ADODB.Field:BOF或EOF为True,或者当前记录已被删除.请求的操作需要当前记录.

我想我需要使用IF NOT语句来捕获是否找不到记录,但我无法弄清楚它需要去哪里.

Do Until objFile.AtEndofStream
    strAppName = objFile.ReadLine

    ConnString="DRIVER={SQL Server};SERVER=aardvark002;UID=***;PWD=***;DATABASE=DEW_Users"
    SQL = "USE Win7AppData SELECT " & Chr(34) & strCountry & Chr(34) & " FROM AppsByCountry WHERE Application = '" & strAppName & "'"

    Set Connection = CreateObject("ADODB.Connection")
    Set Recordset = CreateObject("ADODB.Recordset")
    Connection.Open ConnString
    Recordset.Open SQL,Connection
    strApproval = Recordset(strCountry)
    If StrApproval = "YES" Then
        strApproval = "Approved"
    Else
        strApproval = "Denied"
    End If
    objExcel.Cells(intRow, 1).Value = strAppname 
    objExcel.Cells(intRow, 2).Value = strCountry
    objExcel.Cells(intRow, 3).Value = strApproval
    intRow = intRow …
Run Code Online (Sandbox Code Playgroud)

sql vbscript

6
推荐指数
1
解决办法
3万
查看次数

使用Classic ASP在XML文档中附加子项

我有以下asp-classic代码,它将3个变量附加到XML文档中,'location_x','location_y'和'date_and_time'.

ASP-Classic代码 - 创建或附加现有XML文档.

Function LoadObjecttoXML(strXMLFilePath, strFileName)

    Dim objDom
    Dim objGpx
    Dim objWpt
    Dim objRte
    Dim objRtept
    Dim objDateTime
    Dim objattLat
    Dim objattLon
    Dim objPI
    Dim blnFileExists

    'Instantiate the Microsoft XMLDOM
    Set objDom = server.CreateObject("Microsoft.XMLDOM")
    objDom.preserveWhiteSpace = True

    blnFileExists = objDom.Load(strXMLFilePath & "\" & strFileName)

    If blnFileExists = True Then
        Set objGpx = objDom.documentElement
    Else
        'GPX root element and append it to the XML document.
        Set objGpx = objDom.createElement("gpx")
        objDom.appendChild objGpx                                   
    End If

    Set objWpt = objDom.createElement("wpt")

        'Create "Lat" attribute' …
Run Code Online (Sandbox Code Playgroud)

xml vbscript dom gpx asp-classic

6
推荐指数
1
解决办法
1215
查看次数

标签 统计

vbscript ×10

asp-classic ×6

arrays ×1

com ×1

createobject ×1

datetime ×1

debugging ×1

dom ×1

gpx ×1

iis-7 ×1

iso8601 ×1

sql ×1

wmi ×1

xml ×1