webForumDet fria alternativet

Array - objekt

13 svar · 465 visningar · startad av Troxy

TroxyMedlem sedan mars 20041 505 inlägg
#1

Hej! Hur stoppar man in recordset i en array? Om jag har 10 öppna recordset i en funktion, hur kan jag returera samt ta emot dessa och skriva ut dess egenskaper?

Jag försöker göra en sak som är ganska krånglig och svår att förklara. Hoppas ni orkar läsa och förstår...I alla fall, here we go:

Jag vill skapa en funktion. Denna ska returera en array innehållande recordset.

Funktionen tar som argument emot ett personnummer.

I databasen hämtas alla poster där värdet i fältet personnummer matchar argnumentet och lagras i recordset:et objUsers.

Efter det vill jag för varje post i objUsers hämta ut alla poster ur en annan tabell där postens id matchar värdet i objUsers("d_id").

Alla poster som då kommer tillbaka efter den loopen ska succesivt stoppas in i en array.

Tillslut ska denna array retureras.

Tacksam för hjälp.

PoffeMedlem sedan apr. 20022 743 inlägg
#2

Om jag förstått dig rätt så borde det gå att göra direkt i en SQL-fråga istället för två. Sök på join i SQL forumet så ska du nog hitta det du söker =)

TroxyMedlem sedan mars 20041 505 inlägg
#3

Okej, och om man antar att jag har alla poster jag behöver, lagrade i recordsetet objDomains, hur lägger jag in det i en array?

Antar att det blir något i stil med följande:

Jag dimmar en array:

dim arrDomains()

Sedan gör jag en loop:

Do until objDomains.EOF

Och för varje varv:

Redim Preserve arrDomains(...)

...på arrayen så den blir en storlek större. Sedan:

arrDomains(intI)=objDomains(intI)

...där intI är varvräknaren.

Men hur returerar jag arrayen sen? Hur tar jag emot den?

PoffeMedlem sedan apr. 20022 743 inlägg
#4

Använd GetRows så får du in det i en array direkt från recordsetet.

arrDomains = objDomains.GetRows

Sök på GetRows här i ASP forumet så hittar du massor :)

TroxyMedlem sedan mars 20041 505 inlägg
#5

Okej, både GetRows och Join blir två saker jag får bekanta mig med i dag.

En sak undrar jag: Hur tar man emot en array som en funktion returerar? Är det bara:

myArray = getArray(arg)

Tack så mycket för hjälpen såhär mitt i natten!

PoffeMedlem sedan apr. 20022 743 inlägg
#6

Japp, det går fint att ta emot på det viset.

Inga problem, vi är ju här för att hjälpa varandra :)

TroxyMedlem sedan mars 20041 505 inlägg
#7

Okay, nu testade jag köra GetRows på en enkel liten SQL-fråga som hämtade ut tre poster. Men för att sedan få ut "rätt" värde på uBound, var jag tvungen att skicka med en extra tvåa som argument:

uBound(arrDomains,2)

Varför det? 2:an står vad jag har fattat för att man går till "dimension 2", men vad menas?

EDIT:
Jaha! :D Jag fattar! Dimension 1 i GetRows är alla fält, och dimension 2 är alla rader! Tänk att jag fattade det såhär sent (tidigt) på dagen....

JosefMedlem sedan mars 20023 561 inlägg
#8

Se en tvådimentionell array så här:

0,0  1,0  2,0  3,0  4,0
0,1  1,1  2,1  3,1  4,1
0,2  1,2  2,2  3,2  4,2
osv...
PoffeMedlem sedan apr. 20022 743 inlägg
#9

Troxy skrev:

Jaha! :D Jag fattar! Dimension 1 i GetRows är alla fält, och dimension 2 är alla rader! Tänk att jag fattade det såhär sent (tidigt) på dagen....

Precis :)

Erik JuhlinMedlem sedan maj 200010 687 inlägg
#10

Om du själv vill stoppa in saker i en matris så kan det vara vettigt att bara göra ReDim Preserve en gång. Du har ju RecordCount att använda för att veta hur många rader där är.

TroxyMedlem sedan mars 20041 505 inlägg
#11

När jag kör objDomains.RecordCount på mitt Recordset får jag -1. Vilken typ av RecordSet stödjer denna metod?

OveRRidEMedlem sedan feb. 200112 078 inlägg
#12

Recordset's som inte är öppnade med Execute-metoden på Connection-objektet. Använd .Open istället.

J.N.Medlem sedan apr. 20031 660 inlägg
#13

HEJ!

Som du själv skriver, du öppnar det på fel sätt.

Jag använder alltid
RS.Open sql, dbconn, 1, 2
för att få till det.

TroxyMedlem sedan mars 20041 505 inlägg
#14

Okej, tack än en gång.

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