webForumDet fria alternativet

getRows()

22 svar · 285 visningar · startad av Eclipse

EclipseMedlem sedan juli 20003 825 inlägg
#1

Jag har ett databasanrop som jag lägger som en session i en getRows(). Det lustiga i sammanhanget är att om jag gör det på en annan sida då får jag ett felmeddelande, men inte om jag skapar och använder sessionen på samma sida!

***
Microsoft VBScript runtime error '800a0009'

Subscript out of range: 'j'

/admin/agenda/getrows.asp, line 34

***
34. IF CInt(request("ID")) = antal(1, j) THEN
35. -- response.write "<B>" & antal(9, j) & "</B> "
36. ELSE
37. -- response.write "<A HREF=""getrows.asp?ID=" & antal(1, j) & """>" & antal(9, j) & "</A>"
38. END IF

------------------
"Never underestimate your opponents." - Name the movie.

[Redigerat av Eclipse den 30 maj 2001]

PatrikBMedlem sedan mars 20002 836 inlägg
#2

Finns inget värde på platsen j i arrayen.

Hur får du fram det värdet, j alltså?

cya,
PatrikB

------------------
*Det jämnar ut sig sa han som sket i byxan och satte sig ned*

EclipseMedlem sedan juli 20003 825 inlägg
#3

Jag vet inte hur det fungerar, bara att det fungerar... Jag vet inte hur 'j' funkar. Det enda jag vet är att om jag skapar sessionen i samma fil så får jag inget felmeddelande, medans om jag skapar sessionen när man loggar in så får man ett felmeddelande!

Nedan koden i sin helhet.

' ## LIST ADMIN USERS
SQL = "SELECT * FROM [agenda_users] LEFT JOIN [users] ON agenda_users.x_userID = users.x_ID" _
& " WHERE agenda_users.x_view = TRUE ORDER BY agenda_users.x_sortfield;"
set mySQL = Conn.Execute(SQL)
on error resume next

session("listAdminUsers") = mySQL.GetRows()

antal = session("listAdminUsers")

for j = 0 to UBound(antal, 1)
	IF CInt(request("ID")) = antal(1, j)  THEN
		response.write "<B>" & antal(9, j) & "</B> "
	ELSE
		response.write "<A HREF=""getrows.asp?ID=" & antal(1, j) & """>" & antal(9, j)  & "</A>"
	END IF
	response.write "2:" & antal(2, j) & " "
	response.write "3:" & antal(3, j) & " "
	response.write "4:" & antal(4, j) & " "
	response.write "5:" & antal(5, j) & " "
	response.write "6:" & antal(6, j) & " "
	response.write "7:" & antal(7, j) & " "
	response.write "8:" & antal(8, j) & "<BR>"
	response.write "9:" & antal(9, j) & " "
	response.write "10:" & antal(10, j) & " "
	response.write "11:" & antal(11, j) & " "
	response.write "12:" & antal(12, j) & " "
	response.write "13:" & antal(13, j) & " "
	response.write "14:" & antal(14, j) & " "
	response.write "15:" & antal(15, j) & " "
	response.write "16:" & antal(16, j) & " "
	response.write "17:" & antal(17, j) & " "
	response.write "18:" & antal(18, j) & "<BR>"
NEXT

------------------
"Never underestimate your opponents." - Name the movie.

PatrikBMedlem sedan mars 20002 836 inlägg
#4

Hello,

testa att ändra denna raden:

for j = 0 to UBound(antal, 1)

till

for j = 0 to UBound(antal, 2)

cya,
PatrikB

------------------
*Det jämnar ut sig sa han som sket i byxan och satte sig ned*

EclipseMedlem sedan juli 20003 825 inlägg
#5

Läckert Patric! kan vi reda ut detta då? Varför ska det vara en tvåa i stället för en etta?

Manualen säger...
UBound(arrayname[, dimension])

och kod inom hakar brukar vara frivilliga, men inte i detta fallet.

"dimension -- Optional. Whole number indicating which dimension's upper bound is returned. Use 1 for the first dimension, 2 for the second, and so on. If dimension is omitted, 1 is assumed."

Betyder detta att man gräver i andra dimmensionen hela tiden? Var tog den första vägen!?

------------------
"Never underestimate your opponents." - Name the movie.

VideMedlem sedan dec. 19998 577 inlägg
#6

Default är en(1) dimension, har du fler så måste du ange vilken dimension du menar...

------------------
Vide rox = new Vide();
rox.learn("C#");

webeye.nu

EclipseMedlem sedan juli 20003 825 inlägg
#7

OK, jag fattar inte. Men det kan man kanske leva med, bara det fungerar!

Ska jag modifiera SQL frågan för att få fler än två dimmensioner? Jag har en svag känsla av att det är var jag behöver för att få fart på almanackan.

------------------
"Never underestimate your opponents." - Name the movie.

PatrikBMedlem sedan mars 20002 836 inlägg
#8

vad menar du med att få fart på almanackan?

Det är inte så att du har nestlade recordset i almanackan?
Det SLÖAR ned almanackan rejält.

cya,
PatrikB

------------------
*Det jämnar ut sig sa han som sket i byxan och satte sig ned*

PatrikBMedlem sedan mars 20002 836 inlägg
#9

reda ut saker och ting.....

det är så att .GetRows() metoden alltid hämtar recordsetet och skapar en 2-dimensionell array. Alla fält-värdena som angavs i sql uttrycket ligger i den 2:a dimensionen

ex:
array(i,j)
i = första dimensionen
j = andra dimensionen

om du har detta sql uttryck:
strSQL = "SELECT FLD_ID, FLD_NAMN, FLD_EMAIL FROM TBL_MEDLEMMAR"

och hämtar det med .GetRows()
så kommer arrayen att se ut så här om endast 2 records hittades:

Array(0,0) // FLD_ID,1
Array(1,0) // FLD_NAMN,Patrik
Array(2,0) // FLD_EMAIL,mrwize@mrwize.nu
Array(0,1) // FLD_ID,1
Array(1,1) // FLD_NAMN,Eclipse
Array(2,1) // FLD_EMAIL,jakob@olailindgren.se

Hoppas att du förstår det lite bättre nu ... fast jag håller med, det e lite abstrakt detta med fler dimensionerade arrays ;o

cya,
PatrikB

------------------
*Det jämnar ut sig sa han som sket i byxan och satte sig ned*

VideMedlem sedan dec. 19998 577 inlägg
#10

http://www.webeye.nu/default2.asp?que=asp/default.asp&exec=asp/artiklar/asp_12.asp#dimensioner

------------------
Vide rox = new Vide();
rox.learn("C#");

webeye.nu

EclipseMedlem sedan juli 20003 825 inlägg
#11

Det är inte så att du har nestlade recordset i almanackan?
Det SLÖAR ned almanackan rejält.

- Jo, så illa är det! Men det är ingen fara på vår lokala server. Däremot är vår internetleverantörs dator inte lika snabb så allt blir seeeegt som kola.

Vide >>
Den sidan var ju sketabra! Den har jag aldrig sett att du länkat till i något inlägg!

------------------
"Never underestimate your opponents." - Name the movie.

EclipseMedlem sedan juli 20003 825 inlägg
#12

http://www.olailindgren.se/jakob/agenda.gif
- den riktigt kluriga biten.
http://www.olailindgren.se/jakob/agenda-2.gif
- agendan i sin helhet.

------------------
"Never underestimate your opponents." - Name the movie.

PatrikBMedlem sedan mars 20002 836 inlägg
#13

kan du inte fixa det med ngn join av ngt slag? så att du slipper att nestla recordseten?

Vi byggde en almanacka åt en kunds intranet med just nestlade recset ... insåg ganska snabbt att det inte gick då det skapades en jäkla massa recordset dynamiskt så att säga.
Vi gjorde så att vi hämtade ut 2 sql-frågor med getRows() och sedan loopade vi arrayerna och jämförde. Snabbade upp ngt helt otroligt :p

Vide>>>
Den artikeln fick en 5:a

cya,
PatrikB

------------------
*Det jämnar ut sig sa han som sket i byxan och satte sig ned*

@ndersMedlem sedan juni 200032 969 inlägg
#14

Den sidan var ju sketabra!

ja, vides artiklar brukar ju vara bra. speciellt de två sista, eftersom jag omnämns i dem. :)

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
nobody expects the spanish inquisition!</A>

VideMedlem sedan dec. 19998 577 inlägg
#15

Den sidan var ju sketabra! Den har jag aldrig sett att du länkat till i något inlägg!

Tackar så mycket... det är min senaste artikel, den är nästan släppt... så den kommer snart till wA... :)

Den artikeln fick en 5:a

Tack :r

ja, vides artiklar brukar ju vara bra. speciellt de två sista, eftersom jag omnämns i dem

Självklart är du med, du smickrar ju mig med citat som: ey, du norrländske kung av .net :e

------------------
Vide rox = new Vide();
rox.learn("C#");

webeye.nu

EclipseMedlem sedan juli 20003 825 inlägg
#16

http://www.olailindgren.se/admin/agenda/getrows.asp
Här är vänstermenyn till agendan.

Det har inte varit så mycket snack om getRows, inte vad jag sett. Alla borde använda det oftare för det besparar webbplatsen en del arbete.

Efter dagens övningar kan jag bara konstatera att jag mäsker ingen skillnad. Webbplatsen känns fortfarande omotiverat långsam. Men jag kan ju alltid börja med att uppgradera hela webbverktyget till getRows varianten.

Kanske saker klarnar vad det lider!

------------------
"Never underestimate your opponents." - Name the movie.

EclipseMedlem sedan juli 20003 825 inlägg
#17

Vide >>
Jaha, den var helt ny!? Jag förstår... Rent spontant gav jag den en femma... men det höjde bara medelvärdet från 4.2 till 4.3. Jag brukar aldrig rösta på artiklar.

------------------
"Never underestimate your opponents." - Name the movie.

VideMedlem sedan dec. 19998 577 inlägg
#18

Jupp, någon vecka gammal. Den skulle egentligen handla om små "Tips & Trix" och jag började med arrayer... men sedan blev det så mycket om just arrayer så jag fick skapa en helt egen artikel om arrayer... :)

------------------
Vide rox = new Vide();
rox.learn("C#");

webeye.nu

EclipseMedlem sedan juli 20003 825 inlägg
#19

Vi byggde en almanacka åt en kunds intranet med just nestlade recset ... insåg ganska snabbt att det inte gick då det skapades en jäkla massa recordset dynamiskt så att säga.
Vi gjorde så att vi hämtade ut 2 sql-frågor med getRows() och sedan loopade vi arrayerna och jämförde. Snabbade upp ngt helt otroligt

Hur skriver man då?

SQL1 = "...."
SQL2 = "...."

Kan man få lite ledtrådar? Jag vet inte ens åt vilket håll jag ska titta!

------------------
"Never underestimate your opponents." - Name the movie.

PatrikBMedlem sedan mars 20002 836 inlägg
#20

Vi ville ha en tabell som såg ut så här ungefär:

/---------------------------------------\
&#0124;Januari, 2001				&#0124;
&#0124;---------------------------------------&#0124;
&#0124;Dag&#0124;Anteckning				&#0124;
&#0124;---------------------------------------&#0124;
&#0124;  1&#0124;SKicka post			&#0124;
&#0124;   &#0124;Möte med Thomas			&#0124;
&#0124;---&#0124;-----------------------------------&#0124;
&#0124;  2&#0124;Projekt x ska vara lev. klart	&#0124;
&#0124;---------------------------------------&#0124;

etc.

Delar av koden som jag använde ... om jag minns rätt *ler*, va ett tag sedan jag gjorde om den:

'## -- Function: getDaysInMonth(ByVal ThisMonth) ' As Integer
'## -- Description: Hur många dagar finns det i aktuell månad
'##
Function getDaysInMonth(ByVal ThisMonth)

	Select Case ThisMonth
		Case 1,3,5,7,8,10,12
			getDaysInMonth = 31
			Exit Function

		Case 2
			If IsDate("February 29, " & Year(Now())) Then
				getDaysInMonth = 29
				Exit Function
			Else
				getDaysInMonth = 28
				Exit Function
			End If

		Case 4,6,9,11
			getDaysInMonth
			Exit Function
	End Select
End Function

'====================================================================
Dim objConn, objRS
Dim strSQL, strNote
Dim dteDate, dteMonth, dteYearMonth, dteDays, dteNote
Dim arrEmpNotes

dteDate = Date()
dteMonth = Month(dteDate)
dteYearMonth = Year(dteDate) & "-" & dteMonth

................

'## -- en massa connection grunka --
Set objConn .....
	objConn.Open ....

strSQL = "SELECT * FROM .........

Set objRS = objConn.Execute(strSQL)

	If Not objRS.EOF
		arrEmpNotes = objRS.GetRows()
	End If

	objRS.Close
Set objRS = Nothing

'## -- hur många loopar ska göras --
dteDays = getDaysInMonth(dteMonth)

'## -- börja loopa dag för dag --
For I = 1 To dteDays
	Response.Write "<TR><TD>" & i & "</TD><TD>"
	'## -- loopa igenom arrayen och kolla om matchande datum finns --
	For n = 0 To UBound(arrEmpNotes,2)
		strNote = arrEmpNote(0,n)
		dteNote = arrEmpNote(1,n) '## -- ett datum fält, format: yyyy-mm-dd(2001-05-25)
		If CDate(dteNote) = CDate(dteYearMonth & "-" & dteDays)) Then
			Response.Write strNote & "<BR>"
		End If
	Next
	Response.Write "</TD></TR>"
Next
...........

som sagt, något liknande var det och ngt för dig att labba med ....

cya,
PatrikB

------------------
*Det jämnar ut sig sa han som sket i byxan och satte sig ned*

[Redigerat av PatrikB den 31 maj 2001]

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