Jag försöker att hämta information från olika SELECT satser och trycka in detta i en gemensam Array. Den första SELECT satsen lagras korrrekt och utökar Arrayn dynamiskt. Men så fort det kommer ett resultat från den andra SELECT satsen och jag kör en REDIM på Arrayen med det nya antalet poster så får jag bara felet "Subscript Out of Range". Jag kan inte lösa detta genom att skapa EN gemensam SELECT sats därför behöver jag få detta med Array att fungera.
Dim i,RsCount
Dim myArray()
i = 0
'Lägg in värden från tblPostLista
MySQL = Hämta Info från databasen
Set MyRs = Server.CreateObject("ADODB.RecordSet")
MyRs.Open MySQL, MyConn, 3
RsCount = MyRs.RecordCount - 1
redim preserve MyArray(RsCount,7)
Do While Not MyRs.EOF
'Lägg in värdena från databasen i arrayen
MyRs.MoveNext
i = i + 1
Loop
MyRs.Close
MySQL = Hämta ny info från databasen
Set MyRs = Server.CreateObject("ADODB.RecordSet")
MyRs.Open MySQL, MyConn, 3
RsCount = RsCount + MyRs.RecordCount
'Lägg in värden från tabellen
[B]redim preserve MyArray(RsCount,7)[/B]
Do While Not MyRs.EOF
'Lägg in värdena från databasen i arrayen
MyRs.MoveNext
i = i + 1
Loop
Det är alltså den markerade Redim:en som ger felet, vad jag vet så ska man väl kunna köra Redim hur många gånger som helst, så det borde väl inte vara några problem? Värdet som kommer från strängen RsCount är också korrekt.
If you use the Preserve keyword, you can resize only the last array dimension, and you can't change the number of dimensions at all. For example, if your array has only one dimension, you can resize that dimension because it is the last and only dimension. However, if your array has two or more dimensions, you can change the size of only the last dimension and still preserve the contents of the array.
Då är alltså det enda alternativet att köra SELECT satserna innan och lägga antalet kolumner i en variabel och skapa Arrayen dynamiskt EN gång och sen köra SELECT-satserna igen men då för att hämta datan.
Kan du inte hämta data först och dimm arrayen efter antal rader i de bägge recordset:en och sedan loopa igenom dom för att lägga in datat i arrayen? På så sätt behöver man inte redimma med preserve. Typ såhär (har inte testat):
Dim i,RsCount
Dim myArray()
'Lägg in värden från tblPostLista
MySQL = Hämta Info från databasen
Set MyRs1 = Server.CreateObject("ADODB.RecordSet")
MyRs1.Open MySQL, MyConn, 3
MySQL = Hämta ny info från databasen
Set MyRs2 = Server.CreateObject("ADODB.RecordSet")
MyRs2.Open MySQL, MyConn, 3
RsCount = MyRs1.RecordCount + MyRs2.RecordCount - 1
redim MyArray(RsCount,7)
i = 0
Do While Not MyRs1.EOF
'Lägg in värdena från databasen i arrayen
MyRs1.MoveNext
i = i + 1
Loop
Do While Not MyRs2.EOF
'Lägg in värdena från databasen i arrayen
MyRs2.MoveNext
i = i + 1
Loop
MyRs1.Close
MyRs2.Close
256 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91