Avatar billede webbe Nybegynder
02. december 2008 - 13:31 Der er 7 kommentarer og
1 løsning

Ligge værdier i en variabel

Hejsa

Jeg har følgende forespørgsel til min database:

sqlSec = "SELECT * FROM secur ORDER BY RAND() LIMIT 5"
set rsSec = Conn.Execute(sqlSec)

resultaterne vil jeg gerne have lagt i en variabel som jeg kan udskrive senere hen - men hvordan?
Avatar billede softspot Forsker
02. december 2008 - 13:47 #1
De ligger da allerede i variablen rsSec, så du kan bare hente dem derfra. Hvis du med "senere" mener på en anden side, så er det nok ikke optimalt at gemme data i recordsettet, men i så fald kan du bruge GetRows på recordsettet. Det vil lægge data over i et 2-dimensionelt array, som du så kan smide i session eller hvor du nu kan finde på at gemme det...
Avatar billede softspot Forsker
02. december 2008 - 13:50 #2
Alternativt kan du måske lave et disconnected recordset, dvs. hent data og sæt connection til nothing. Derefter burde du kunne gemme dit recordset-objekt i session eller application (hvis det er data som alle på sitet skal bruge).

Dicsonnected recordsets har jeg ikke arbejdet med i praksis, men jeg mener du skal sætte cursortypen på recordsettet til klient (da serveren jo i sagens natur ikke kan holde styr på cursoren i et disconnected recordset).
Avatar billede webbe Nybegynder
02. december 2008 - 13:58 #3
jeg ved godt at resultatet ligger i mit recordset, men jeg er jo nødt til at loope igennem det for at udskrive dem.

Jeg skal først have værdierne lagt i en <input type="hidden"> og bagefter skal jeg hav dem printet til skærmen for at brugeren kan indtaste den rette kombination af tegn. Værdien fra mit hidden felt skal så sammenlignes med det brugeren indtaster og hvis det er korrekt må der indsættes imin DB - ellers skal den komme med en fejlmeddelelse.

Og jeg kan ikke lave 2 løkker på samme recordset - eller - det kan jeg godt, men den udskriver ikke noget når jeg gør det anden gang....
Avatar billede softspot Forsker
02. december 2008 - 14:56 #4
Uanset hvad skal du vel iterere igennem data (hvis der er mere end én række), så det slipper du vel ikke for ved at lægge det i en anden variabel/struktur...

Hvis du skal bruge dit recorset til at iterere over flere gange, skal du benytte en anden cursortype (dynamisk, keyset eller statisk) end standard for conn.execute, som er fastforward eller firehose som den også kaldes (altså én vej og der er fremad!).

Med de nævnte cursors kan du kalde rsSec.MoveFirst, rsSec.MoveLast, rsSec.MovePrevious, rsSec.MoveNext for at flytte pegepinden til hhv. første, sidste, forrige og næste række i resultatet. Hvis du vil sætte cursortypen skal du oprette recordsettet på en anden måde:

set rsSec = Server.CreateObject("ADODB.Recordset")
rsSec.open sqlSec, Conn, 3, 3

do while not rsSec.Eof
  ' udskriv til de skjulte input-felter
  rsSec.MoveNext
loop

rsSec.MoveFirst

do while not rsSec.Eof
  ' udskriv til de viste input-felter
  rsSec.MoveNext
loop

rsSec.Close
set rsSec = nothing
Avatar billede webbe Nybegynder
02. december 2008 - 15:10 #5
super - nu virker efter hensigten - tusind tak for hjælpen - opret et svar og pointene er dine
Avatar billede softspot Forsker
02. december 2008 - 15:22 #6
Velbekomme :)
Avatar billede softspot Forsker
03. december 2008 - 08:34 #7
Tak for point :)
Avatar billede webbe Nybegynder
03. december 2008 - 09:36 #8
Velbekomme - og det er mig der takker.... ;0)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester