När jag kommer till den röda for-loopen i exekvertingen finns ingen data i ArrSubTotal-arrayen. Hur kan det komma sig?
If adoRs.EOF Then
Response.Write "No Records.."
Else
Dim TmpVar,Counter,i,DbData: DbData = adoRs.GetRows()
For i = 0 To UBound(DbData,2)
Counter = Int(Counter) + Int(DbData(0,i))
If TmpVar <> DbData(1,i) Then
TmpVar = DbData(1,i)
If Int(i) > 0 Then
ReDim ArrSubTotal(x,1)
ArrSubTotal(x,0) = DbData(1,i-1)
ArrSubTotal(x,1) = Int(Counter) - Int(DbData(0,i))
x = x + 1: Counter = Int(DbData(0,i))
End If
End If
Next
End If
[red] For i = 0 To UBound(ArrSubTotal)
For x = 0 To UBound(ArrSubTotal)
If ArrSubTotal(i,0) = ArrSubTotal(x,0) Then
ReDim ArrSorted(i,1)
ArrSorted(i,0) = ArrSubTotal(x,0)
ArrSorted(i,1) = Int(ArrSorted(i,1)) + Int(ArrSubTotal(x,1))
End If
Next
Next[/red]
Dim Total
For i = 0 To UBound(ArrSorted)
Total = Total + ArrSorted(i,1)
Next
For i = 0 To UBound(ArrSorted)
Response.Write ArrSorted(i,0) & " " & ArrSorted(i,1) & " " & Int(ArrSorted(i,1)) / Total & "%<br/>"
Next
Jesper TMedlem sedan nov. 20017 144 inlägg Du kanske skall speca vad i arrayen som skall hämtas : UBound(ArrSubTotal, 2)
Jag förstår inte vad det är som händer..
Om jag använder mig av ,2 så säger min utskrift att det finns blott 2 poster och det skall vara 314. använder jag inte ,2 så säger utskriften att det är 314 men det finns ingen data i arrayen.
Även om jag skriver ut Arrayen statiskt så är den tom
Response.Write ArrSubTotal(0,0)
Hela koden:
<table border = '1px'>
<%
Dim y,x: x = 0
For y = 0 To 5
Dim adoCn: Set adoCn = CreateObject("ADODB.Connection")
With adoCn
.Provider = "Microsoft.Jet.OLEDB.4.0"
.ConnectionString = _
"Data Source=\\hsandmaster\sid\orders\"&y&".xls;" & _
"Extended Properties=Excel 8.0;"
.Open
End With
Dim strQuery,adoRs: Set adoRs = CreateObject("ADODB.Recordset")
strQuery = "SELECT [Antal],[Erbjudande-namn] FROM [Orderfil UTAN Bredband 3735 200$] ORDER BY [Erbjudande-namn]"
With adoRs
Set .ActiveConnection = adoCn
.Open strQuery
End With
If adoRs.EOF Then
Response.Write "No Records.."
Else
Dim TmpVar,Counter,i,DbData: DbData = adoRs.GetRows()
For i = 0 To UBound(DbData,2)
Counter = Int(Counter) + Int(DbData(0,i))
If TmpVar <> DbData(1,i) Then
TmpVar = DbData(1,i)
If Int(i) > 0 Then
ReDim ArrSubTotal(x,1)
ArrSubTotal(x,0) = DbData(1,i-1)
ArrSubTotal(x,1) = Int(Counter) - Int(DbData(0,i))
x = x + 1: Counter = Int(DbData(0,i))
End If
End If
Next
End If
Next
Dim Total
For i = 0 To UBound(ArrSubTotal)
Response.Write ArrSubTotal(i,0)&"<br/>"
For x = 0 To UBound(ArrSubTotal)
If ArrSubTotal(i,0) = ArrSubTotal(x,0) Then
ReDim ArrSorted(i,1)
ArrSorted(i,0) = ArrSubTotal(x,0)
ArrSorted(i,1) = Int(ArrSorted(i,1)) + Int(ArrSubTotal(x,1))
Total = Total + Int(ArrSubTotal(x,1))
End If
Next
Next
' For i = 0 To UBound(ArrSorted,2)
' Response.Write ArrSorted(i,0) & " " & ArrSorted(i,1) & " " & Int(ArrSorted(i,1)) / Total & "%<br/>"
' Next
%>
</table>
J.N.Medlem sedan apr. 20031 660 inlägg HEJ!
Du har ingen Preserve på din ReDim, ReDim ArrSubTotal(x,1)!
If you make the array bigger, you can use the keyword Preserve to protect all of the existing elements.
http://www.devguru.com/Technologies/vbscript/quickref/redim.html
Det innebär att du endast har det sista värdet kvar, och det bör finnas högst upp, ArrSubTotal(313,0)?
Då skrev jag mitt 500:e inlägg, grattis till mig! :birp