webForumDet fria alternativet

Data i Array försvinner

4 svar · 340 visningar · startad av LR^evil.sid

LR^evil.sidMedlem sedan maj 2002560 inlägg
#1

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
#2

Du kanske skall speca vad i arrayen som skall hämtas : UBound(ArrSubTotal, 2)

LR^evil.sidMedlem sedan maj 2002560 inlägg
#3

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.

LR^evil.sidMedlem sedan maj 2002560 inlägg
#4

Ä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
#5

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

132 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)