webForumDet fria alternativet

Hämta poster utan recordset

ASP

19 svar · 225 visningar · startad av Ricki

Medlem sedan juni 2000373 inlägg
Frågan#1

Tjena,
Jag undrar om det går att hämta poster från en databas utan att använda ett recordset. Typ såhär:

Conn.Execute "Select * From Tabell"

Hur gör jag sedan för att skriva ut alla poster som finns i tabellen?

------------------
Hälsningar Ricki
www.ricki.nu

Medlem sedan mars 2000263 inlägg
#2

menar du:
Dim rs
Set rs = conn.execute("select * from tabell")

Do Until rs.eof
response.write rs("fält") & "<br>"
rs.movenext
loop

------------------
/bohlin
kaffe är djävulens dryck
glögg är guds dryck

Medlem sedan juni 2000373 inlägg
#3

Det där kommer inte att få, för connection objectet stöder inte EOF och movenext

------------------
Hälsningar Ricki
www.ricki.nu

Medlem sedan dec. 19998 577 inlägg
#4

Jodå, connectionobjektet stödjer visst movenext och EOF...

------------------
PC-älskare prasslar i säven, och har malt i ryggen
www.webeye.nu
Är du med i facket?

Medlem sedan maj 2000269 inlägg
#5

det gör det visst det, det blir automatiskt ett recordset när den känner av att det kommer något ur en databas.

Medlem sedan juni 2000373 inlägg
#6

Behöver man alldrig använda rcordsetobjektet då?

När ska det användas då?

------------------
Hälsningar Ricki
www.ricki.nu

Medlem sedan maj 2000269 inlägg
#7

recordset ska du bara använda när du ska hämta poster, aldrig annars.

Medlem sedan maj 2000175 inlägg
#8

Har för mig att jag läst någonstans om hur man sparar resultatet från eb databasfråga i en vanlig array... minns inte riktigt vart jag läste det :(

Jag hör av mig om jag hittar det.

Medlem sedan dec. 19998 577 inlägg
#9

Recordset behöver du inte använda när du hämtar poster...

------------------
PC-älskare prasslar i säven, och har malt i ryggen
www.webeye.nu
Är du med i facket?

Medlem sedan juni 200032 967 inlägg
#10

rymdknark: metoden heter getrows() och är kanonbra. ibland i alla fall.

vide: öhh, va :q

------------------
don't follow your friends -- inflate them

Medlem sedan dec. 19998 577 inlägg
#11

Man behöver inte initiera objektet Recordset för att hämta poster ur databasen...

------------------
PC-älskare prasslar i säven, och har malt i ryggen
www.webeye.nu
Är du med i facket?

Medlem sedan juni 200032 967 inlägg
#12

ok, vide, men vad är det du får tillbaka när du skriver set rs = conn.execute (blaha)?

ä de'nte ett recordset, månne? :q

------------------
don't follow your friends -- inflate them

Medlem sedan dec. 19996 721 inlägg
#13

Jo, visst är det det. Man måste ha ett recordset för att returnera raderna i sökningen.

Medlem sedan dec. 19998 577 inlägg
#14

Ni missförstår mig nog... visst, ett recordset skapas automatiskt genom att exekvera connetcionsobjektet med en SQLsats... via detta skapas ett recordset (Set RS = ...), men du behöver aldrig skapa det mauellt (Set Rec = server.createobject(ADODB.recordset)) för en hämtning av poster... :) Vi menar samma sak, fast med olika ord...

------------------
PC-älskare prasslar i säven, och har malt i ryggen
www.webeye.nu
Är du med i facket?

[Redigerat av Vide den 17 aug 2000]

Medlem sedan maj 2000269 inlägg
#15

getrows?..

Medlem sedan juni 200032 967 inlägg
#16

genom att använda bengt = rs.getrows(), så får du en array som ser ut precis som ditt recordset. sen kan du lägga den i ett applicationobjekt om du vill, och bara snurra igenom arrayen för att visa olika dynamiska menyval, eller rubriker i en produktkatalog till exempel.

------------------
don't follow your friends -- inflate them

Medlem sedan maj 2000269 inlägg
#17

Men man måste fortfarande använda recordset för att kunna använda den.
Då är ju getrows ganska värdelös.

Medlem sedan juni 200032 967 inlägg
#18

danmagnus: visst måste du använda recordsetet för att fylla på med data, men när arrayen väl är skapad så kan du ju stänga recordsetet och bara läsa från arrayen.

------------------
don't follow your friends -- inflate them

Medlem sedan dec. 19996 721 inlägg
#19

Förstår inte varför man vill bli av med recordset:et....

Handlar det om serverresurser får man använda adUseClient, så att man kan stänga kopplingen till databasen, men fortsätta att använda recordset:et

Medlem sedan juni 200032 967 inlägg
#20

jag kan berätta varför jag gjort det:

i utgångspunkt hade vi vårt affärssystem på en sql server v6.5, och vi hade en hel mängd sql-frågor från vår e-handelslösning. många av dessa sql-frågor var samma, och syftade till att plocka fram en katalogstruktur för vårt produktsortiment (c:a 60000 artiklar). vi vill ju inte visa rubriker som inte har några artiklar i sig.

hur som helst: dessa frågor resulterade i processer som av outgrundlig anledning låste andra processer, typ rapportkörningar o.dyl.
då satte jag upp lite kod i application onstart som läser ut hela den aktuella katalogstrukturen till arrayer, med getrows(), som jag sedan sparade ner i application-objekt. när sedan någon av mina kollegor gjorde ändringar i strukturen, som påverkade katalogstrukturen, gjorde de också en uppdatering av application-objekten.

inte nog med att vi blev av med de låsande processerna, prestandan blev oerhört mycket bättre i systemet.

därför, emission, kan man vilja undvika att jobba med recordsets.

------------------
don't follow your friends -- inflate them

260 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
125 ms — deklarationer (db)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)
121 ms — ändringar (db)