webForumDet fria alternativet

adUseClient

11 svar · 271 visningar · startad av johnnyjoker

johnnyjokerMedlem sedan apr. 200138 inlägg
#1

OM allt jag gor ar att lasa ur mitt recordset och presenterar det for besokaren borde man inte alltid anvanda
"adUseClient" sa man kan stanga sin db koppling och anda lasa ur sitt rs?

och i detta fall/i sa fall har jag val ingen anvanding av functionen getrows() ?

hur ser koden ut? conn.close utan ett rs.close eller gor man ett rs.close men kan fortfarande komma at sitt data?

nagon som forstar vad jag menar och lite snabbt skulle kunna forklara? :)

tack,
j

EclipseMedlem sedan juli 20003 825 inlägg
#2

Nej det går inte! :-)

Ärligt, vad snackar du om? Var hittar du "adUseClient"? (Borde det inte stavas "addUseClient"...?)

---
Ett alternativ kan vara att

1. öppna databasen.
2. lägga all data i lokala variabler
3. stänga database.
4. skriva ut dom lokala variablerna på skärmen.

Det är ett relativt vedertaget tillvägagångssätt men det kanske inte passar i ditt fall? För övrigt är det inte speciellt krävande att öppna databasen längst upp på sidan och stänga den i slutet av sidan.

Eller, ja... förstå mig rätt, allt är relativt. Men det finns annat som suger väsentligt mycket mer kräm än just den manövern.

------------------
"Never underestimate your opponents." - Name the movie.

[Redigerat av Eclipse den 23 maj 2001]

EclipseMedlem sedan juli 20003 825 inlägg
#3

Jag måste krypa till korset. Igen. Jag börjar få ont i knäna nu... För att inte tala om hedern! :-)

---
http://www.15seconds.com/Issue/010308.htm

Jag sökte i manualen efter adUseClient men hittade inget. "Solution 1: Paging via ADO" - här står adUseClient omnämnt.

Nämnda webbplats verkar rätt bra. Relativt gles på banners och trevliga skriv ut sidor. (Varför har vi inte det här på webForum???)

------------------
"Never underestimate your opponents." - Name the movie.

[Redigerat av Eclipse den 23 maj 2001]

MorphMedlem sedan juli 2000534 inlägg
#4

Om du sätter rs.CursorLocation = adUseClient så hanteras databasen cursor (pekare?) på klienten. Detta innebär rent praktiskt att alla returnerade data sänds från databas-servern till web-servern och hanteras sedan av web-servern.

Fördelen med att placera cursorn på klienten är att det avlastar databas-servern. Det kan också snabba upp asp-sidan eftersom man kan bläddra mellan posterna snabbare.

Nackdelen är uppenbarligen att web-servern får jobba hårdare samt att den interna nätverksbelastningen kan bli större när all data skall skickas från databas- till web-server.

jonnyjoker:
Du kan inte stänga din conn eftersom då förstörs det recordset som skapats genom conn.execute. Du kan inte heller stänga ditt rs eftersom du då inte kan anropa värden från det

------------------
/Morph

Tech Support: "I need you to boot the computer."
Customer: (THUMP! Pause.) "No, that didn't help."

emissionMedlem sedan dec. 19996 721 inlägg
#5

Jodå, med adUseClient kan man stänga sin connection. Det är lite av idén med det hela.

johnnyjokerMedlem sedan apr. 200138 inlägg
#6

ja det var vad jag trodde, men hur ser det ut i koden? nagon som kan ge ett exempel?

BenganMedlem sedan juni 2000690 inlägg
#7

Det här var intressant!

Jag har nyss börjat med mySQL och då måste man tydligen använda adUseClient för att Recordcount skall funka...

------------------
MvH
/Bengan
www.bengan.com | Brossans Räjser
"Better to be hated for who you are than loved for who you're not."

HermanMedlem sedan maj 2001431 inlägg
#8

precis, mysql har inte serverside cursors... Nästa version av MySQL kommer rocka!

------------------
Allt som oftast förbryllas jag
Det som nyss kändes tungt
Förbyts till motsatsen nästa dag
Märkligt att det kan bli så lugnt

DustyMedlem sedan juli 2000103 inlägg
#9

Ett exempel på hur man kan använda adUseClient tillsammans med OLEDB:

Dim cnnDatabas
Set cnnDatabas = Server.CreateObject("ADODB.Connection")
cnnDatabas.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("/databas.mdb")
cnnDatabas.CursorLocation = adUseClient

cnnDatabas.Open
Set rstPoster = cnnDatabas.Execute("SELECT bla, blabla, blablabla FROM tabell")
Set rstPoster.ActiveConnection = Nothing
cnnDatabas.Close
Set cnnDatabas = Nothing

strBla = rstPoster("bla")

Recordset:et ärver här adUseClient från connection:en. Detta sätt är smidigare än att sätta adUseClient på varje recordset, men det kräver att man använder OLEDB, tror jag. Skulle det inte fungera kan man alltid sätta adUseClient på recordset:et direkt, men handlar det om många recordset är det omständigt.

------------------
That you're paranoid doesn't mean you're not being monitored...
Monitora

johnnyjokerMedlem sedan apr. 200138 inlägg
#10

perfekt! tackar :)

en fråga till bara, du sätter:
Set rstPoster.ActiveConnection = Nothing
varför använder du ActiveConnection = Nothing? går det inte att med rstPoster.Close? vad är skillnaden?

-johnny

DustyMedlem sedan juli 2000103 inlägg
#11

Du kan inte stänga recordsetet eftersom man skall plocka ut data från det, därför sätter jag inte rstPoster.Close. För att kunna stänga connectionen måste man koppla bort den från recordsetet, därför sätter jag rstPoster.ActiveConnection = Nothing.

ActiveConnection är den koppling ett recordset är kopplat till. Sätter man den till Nothing kopplar man bort recordsetet från vad det nu var kopplat till tidigare.

------------------
That you're paranoid doesn't mean you're not being monitored...
Monitora

johnnyjokerMedlem sedan apr. 200138 inlägg
#12

ok, då vet jag! tack igen :)

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