Arrays 如何在VBScript中将循环结果存储到数组中?
我有一个循环,我想把结果放入数组中。 这是我的循环Arrays 如何在VBScript中将循环结果存储到数组中?,arrays,vbscript,asp-classic,Arrays,Vbscript,Asp Classic,我有一个循环,我想把结果放入数组中。 这是我的循环 For i = 1 To bill a = rs("CT08_Tarikh") 'from db cutiumum = Array(a) 'and this is how I declare array rs.MoveNext Next rs.Close Set rs = Nothing End If 然后,我将把变量传递给另一个函数: tarikh = Ne
For i = 1 To bill
a = rs("CT08_Tarikh") 'from db
cutiumum = Array(a) 'and this is how I declare array
rs.MoveNext
Next
rs.Close
Set rs = Nothing
End If
然后,我将把变量传递给另一个函数:
tarikh = NetWorkdays(dateFrom, dateTo, cutiumum)
Public Function NetWorkdays(dtStartDate, dtEndDate, arrHolidays)
但是,当我尝试在函数NetWorkdays
中为arrhelidays
执行一些循环时,它只返回1个数据(并非全部来自cutium
)
你认为我犯了什么错
更新
我已经在用了
dim arrRecordset
arrRecordset = rs.GetRows()
但是我在函数中遇到了一个错误
Public Function NetWorkdays(dtStartDate, dtEndDate, arrHolidays)
Dim lngDays
Dim lngSaturdays
Dim lngSundays
Dim lngHolidays
Dim lngAdjustment
Dim dtTest
Dim i, x
lngDays = DateDiff("d", dtStartDate, dtEndDate)
lngSundays = DateDiff("ww", dtStartDate, dtEndDate, vbSunday)
lngSaturdays = DateDiff("w", IIf(Weekday(dtStartDate, vbSunday) = vbSaturday, dtStartDate, dtStartDate - Weekday(dtStartDate, vbSunday)), dtEndDate)
For x = LBound(arrHolidays) To UBound(arrHolidays)
For i = 0 To lngDays
dtTest = DateAdd("d", i, dtStartDate)
'error in line here: Subscript out of range: 'arrHolidays'
If arrHolidays(x) = dtTest And Weekday(dtTest) <> 1 And Weekday(dtTest) <> 7 Then
lngHolidays = lngHolidays + 1
End If
Next
Next
If Weekday(dtStartDate, vbSunday) = vbSunday Or Weekday(dtStartDate, vbSunday) = vbSaturday Then
lngAdjustment = 0
Else
lngAdjustment = 1
End If
NetWorkdays = lngDays - lngSundays - lngSaturdays - lngHolidays + lngAdjustment
End Function
公共功能网络日(dtStartDate、dtEndDate、arrHolidays)
昏暗的乡间小路
昏暗的自然
昏暗的星期天
昏暗的森林
暗调
弱DTT测试
暗i,x
lngDays=DateDiff(“d”,dtStartDate,dtEndDate)
lngSundays=DateDiff(“ww”,dtStartDate,dtEndDate,vbSunday)
lngSaturdays=DateDiff(“w”,IIf(工作日(dtStartDate,vbSunday)=vbSaturday,dtStartDate,dtStartDate-工作日(dtStartDate,vbSunday)),dtEndDate)
对于x=LBound(arrHolidays)到UBound(arrHolidays)
对于i=0到lngDays
dtTest=DateAdd(“d”,i,dtStartDate)
'此处的行中出现错误:下标超出范围:'arrHolidays'
如果假日(x)=dtTest和工作日(dtTest)1以及工作日(dtTest)7,则
lngHolidays=lngHolidays+1
如果结束
下一个
下一个
如果工作日(dtStartDate,vbSunday)=vbSunday或工作日(dtStartDate,vbSunday)=VB星期六,则
lngAdjustment=0
其他的
lngAdjustment=1
如果结束
NetWorkdays=lngDays-lngSundays-lngSaturdays-lngHolidays+lngAdjustment
端函数
试试这个:
dim arrRecordset
arrRecordset = rs.GetRows()
getRows()方法将记录集一次性转换为二维数组:
试试这个:
dim arrRecordset
arrRecordset = rs.GetRows()
getRows()方法将记录集一次性转换为二维数组:
看起来不错,但我出错了。我已经更新了我的问题,如果您能看一下,我将不胜感激。这是您使用getRows()创建的相同数组吗?在这种情况下,可能是因为数组是二维的。您需要为UBound和LBound提供一个维度:如果使用调试器,这些问题很容易发现。您是否安装了(免费)Visual Studio?您可以使用它来调试ASP。在ASP代码的某个地方添加“stop”一词,VS将在那里中断。好啊我会的。谢谢。这里有一个关于如何用VS调试asp的更详细的解释。看起来不错,但我有一个错误。我已经更新了我的问题,如果您能看一下,我将不胜感激。这是您使用getRows()创建的相同数组吗?在这种情况下,可能是因为数组是二维的。您需要为UBound和LBound提供一个维度:如果使用调试器,这些问题很容易发现。您是否安装了(免费)Visual Studio?您可以使用它来调试ASP。在ASP代码的某个地方添加“stop”一词,VS将在那里中断。好啊我会的。谢谢。这里有一个关于如何用VS调试asp的更详细的解释。