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
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!
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!?
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:
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!
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
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.
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.
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...
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!
/---------------------------------------\
|Januari, 2001 |
|---------------------------------------|
|Dag|Anteckning |
|---------------------------------------|
| 1|SKicka post |
| |Möte med Thomas |
|---|-----------------------------------|
| 2|Projekt x ska vara lev. klart |
|---------------------------------------|
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
255 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91