Hejsan! Fungerar det inte att ta en kopia på Recsettet och returnera den? Nej det gör det nog inte men du kan försöka. Varför vill du stänga din Connection? Det kostar mer att hålla på att på det sättet kommer du att få alldelles för många öppna connections mot databasen och kommer effektivt att döda all skalbarhet ... när det gäller kopplingar mot resurser så vill du skapa dem sent och släppa dem tidigt, ja det finns en visst overhead och prestanda förlust i det, men det gäller i princip allt tänk runt skalbarhet ... <code> Hmmm jag som tänkte i banorna av mitt eget program.. jo det beror ju på ... om applikationen är beroende av försk data från databasen hela tiden och måste känna av förändringar i dbän under körning .. då skall kopplingen vara öppen hela tiden ... men sällan så känsliga system sätts i drift i dag ... bara realtids visualiseringar av data eller liknanden .. och då skall man inte sitta på microsoft platformen ändå ... När stänga connection...
Jag har ett litet problem... jag har ett recordset som jag vill returnera från en function och om jag stänger connection:en i functionen så fungerar det ju inte att arbeta med recordsetet... När ska jag stänga det eg? Jag vill returnera recordset:et till en ASP-sida...
så här ser koden ut nu:
objRS.Open strSQL, objConn, adUseClient, adLockBatchOptimistic
Set ListContent = objRS 'Functionen heter ListContent
kan nån hjälpa mig med detta skulle jag bli en glaad tjej igen ...
:o)Sv: När stänga connection...
<code>
rs1.open "SQL"
set rs2 = rs1
set funktionsnamn = rs2
</code>
Hoppas det funkar så att du blir just glaaadSv: När stänga connection...
öppna/stänga den hela tiden än att skapa en Connection som man
återanvänder. På samma sätt kan du återanvända ditt RecordSet.
Mitt tips är att skapa en metod som anropas i början av körningen som
öppnar en connection och en metod som anropas när programmet ska
avslutas som stänger den igen.
//EmmaSv: När stänga connection...
du kan fö koppla loss connectionen från ditt recordesett enkelt med syntaxen:
<code>
set objrs.activeconnection = nothing
</code>
men tänk då på att cursorn måste vara clientside / static och lås typen batchoptimistic..
emma har en poäng i att du inte skall slänga den conenctionen efter dig ... använder du sedan samma conenction felr ggr på samma sida så beroende på läge, skulle jag förslå ngt liknande följande :
- create connection
- open connection
- get recordset
- disconnect recordset
- close connection ( don't set to nothing )
- DO whatever with recordset
- discard recordset
- open connection
- execute query
- close connection
- discard connection
dvs, du stänger den fortfarande men slänger den inte ... på det sättet plockar resource managern i mts / com+ upp kopplingen och poolar den = mycket mindre tid att öppna igen ...
men för gudsskull, gör du inget med den öppna connectionen, stäng ner den ... annars är det defintivt slöseri med resurser... Sv: När stänga connection...
objRS.CursorLocation = adUseClient
objRS.Open strSQL, objConn, adOpenStatic, adLockBatchOptimistic
Set objRS.ActiveConnection = Nothing
Set ListContent = objRS 'Functionen heter
</code>
Om du vill kuna uppdatera recordsetet ska du använda adLockBatchOptimistic. Annars är det bättre om du använder adLockReadOnly.
För att kunna spara förändringar till databasen måste du ansluta recordsettet till databasen:
<code>
Set objRS.ActiveConnection = objConn
objRS.UpdateBatch
Set objRS.ActiveConnection = Nothing
</code>Sv: När stänga connection...
som använder kopplingen hela tiden...
jag håller med Patrik - betydligt bättre förslag för program som inte
fungerar som mitt.. =)
//EmmaSv: När stänga connection...