Ich habe eine Schleife, und ich möchte das Ergebnis in Array bringen. Hier ist meine Schleife.Wie speichert man das Loop-Ergebnis in einem Array in VBScript?
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
und danach werde ich die Variable an eine andere Funktion übergeben:
tarikh = NetWorkdays(dateFrom, dateTo, cutiumum)
Public Function NetWorkdays(dtStartDate, dtEndDate, arrHolidays)
aber, wenn ich versuche, für arrHolidays
innerhalb der Funktion eine Schleife zu tun NetWorkdays
, ist es nur 1 Daten zurück (nicht alle von der cutiumum
).
Was denkst du ist mein Fehler?
aktualisieren
Ich verwende bereits
dim arrRecordset
arrRecordset = rs.GetRows()
aber ich habe einen Fehler in der Funktion
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
es sieht gut aus, aber ich habe einen Fehler. Ich habe meine Frage bereits aktualisiert und wenn Sie einen Blick darauf werfen können, schätze ich. –
Ist dies das gleiche Array, das Sie mit getRows() erstellen? In diesem Fall könnte es sein, dass das Array zweidimensional ist. Sie müssen UBound und LBound mit einer Dimension bereitstellen: https://www.w3schools.com/asp/func_lbound.asp –
Diese Probleme sind leicht zu finden, wenn Sie einen Debugger verwenden. Haben Sie (kostenloses) Visual Studio installiert? Sie können es verwenden, um ASP zu debuggen. Fügen Sie das Wort "stop" irgendwo in Ihrem ASP-Code hinzu, und VS wird dort brechen. https://msdn.microsoft.com/en-us/library/ms525253(v=vs.90).aspx –