Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Antal poster i recordset?

Postades av 2003-11-15 00:05:00 - Fredric Sannebro, i forum asp - allmänt, Tråden har 5 Kommentarer och lästs av 548 personer

Hej! Undrar om det går att "mäta" hur många poster ett recordset innehåller? (utan att behöva loopa igenom resultatet alltså). Hoppas ni förstår vad jag menar. Tack för hjälpen!


Svara

Sv: Antal poster i recordset?

Postades av 2003-11-15 00:11:24 - Reine Hampus

Nej


Svara

clientsided eller serversided recordset

Postades av 2003-11-15 01:25:16 - Pelle Johansson

Jo det går. Det beror på om du öppnar ditt recordset på ett av två sätt. Är det serversided så kan du inte räkna posterna. Är det clientsided kan du göra det. Jag tänker samtidigt förklara vad detta är och dess skillnader.

Skillnaden på serversided är att alla poster i ditt recordset ligger kvar på servern och hämtas i den takt du själv väljer det. Är det clientsided så hämtas alla posterna in lokalt i ditt recordset och du kan använda: poster = rst.recordcount.

Skillnaden på hur du öppnar är följande:
<info>
set rst = con.execute("select * from tabell)
</info>

Här är rst ett objekt innehållande data men ligger fortfarande kvar på servern. Du kan inte använda funktioner såsom rst.recordcount, rst.movenext osv. Först när du använder do while not rst.eof / rst.movenext / rst.loop så hämtas posterna in.

<info>
rst.open "select * from tabell", con, 3,1,1
</info>

Nu är rst ett objekt innehållade alla poster och kallas client-sided. Med detta sätt att öppna ditt recordset kan du använda rst.movefirst, rst.movelast, x = rst.recordcount mfl.

För att lösa räkningen på ditt serversided recordset kan du faktiskt hämta hem all data och lägga det i en array:

<info>
set rst = con.execute("select * from tabell)
minArray = Rst.GetRows
rst.close
</info>

Om du nu skriver antal = Ubound(MinArray,2) så kommer du att få antalet poster som returnerats, stängt recordsetet snabbt, och hämtat hem datat lokalt i minnet.

Som du förstår så finns fördelar och nackdelar med allting men kortfattat så bör du använda clientsided recordset om du kör paging eller skall addera eller uppdatera data via rst.addnew / rst.update och liknande.

För serversided recordset rekommenderas att du använder till insert, update, delete och även select i vissa lägen. För att köra insert, update och delete behöver man inte skapa något recordsetobjekt utan klarar sig med connection:

<info>
con.execute("delete from tabell where id = 12")
con.execute("update tabell set id = 13 where id=12)
con.execute("insert into tabell (id) values(21,22,23,24)
</info>

I asp är regeln, ligg inte och håll recordset öppna utan försök att stänga så fort det någonsin går. Hoppas detta hjälper dig lite i din tankeverksamhet. För att avsluta. Man behöver bara öppna en enda connection på asp-sidan för den kan återanvändas om och om igen. Se alltid till att stänga den när du är klar. Ett exempel på att skapa fler recordset med samma connection:

<info>
set rs1 = con.execute("select * from tabell1")
set rs2 = con.execute("select * from tabell2")
</info>

Att öppna en connection:

<info>
set con = server.createobject("adodb.connection")
con.open "mindsn" - eller en connectionsträng (se kurs http://www.pellesoft.se/login/articles/other/connectionstrings.asp
</info>

För att stänga sin connection och de eventuella recordset man skapat och använt på sin aspsida
<info>

set rs1 = nothing
set rs2 = nothing

con.close
set con = nothing
</info>


Svara

Sv: Antal poster i recordset?

Postades av 2003-11-15 10:47:44 - Pontus Wång

För att komplettera Pelles svar:
<code>
<%
Const ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=mindatabas.mdb;Persist Security Info=False"

Function GetData(SQL) ' as RecordSet
Dim oConnection ' as Connection
Set oConnection = Server.CreateObject("ADODB.Connection")
oConnection.CursorLocation = 3 'adUseClient
oConnection.Open ConnectionString
Set GetData = oConnection.Execute(SQL)
Set GetData.ActiveConnection = Nothing
oConnection.Close
Set oConnection = Nothing
End Function

Function GetDataArray(SQL) ' as Array
Dim oConnection ' as Connection
Dim rs 'as Recordset
Set oConnection = Server.CreateObject("ADODB.Connection")
oConnection.CursorLocation = 3 'adUseClient
oConnection.Open ConnectionString
Set rs = oConnection.Execute(SQL)
GetDataArray = rs.GetRows
rs.Close
Set rs = Nothing
oConnection.Close
Set oConnection = Nothing
End Function
%>
</code>

Jag använder den här koden i en includefil för alla dataaccesser för att alltid veta när jag har en connection öppen. Problemet med Pelles anförande är att det inte är recordsetet man vill hålla stängt utan själva anslutningen. Så jag har löst det genom att antingen hämta en array eller hämta ett recordset som ligger på klientsidan.

<code>
'Exempel på hur man använder clientrecordsetet
Dim rs, i
Set rs = GetData("select * from tabell")
Response.Write "Antal poster:" & rs.RecordCount
For i = 1 To rs.RecordCount
Response.Write "Recordnumber: " & i & " contains """ & rs(0) & """"
rs.MoveNext
Next i
rs.Filter = "Fält=7"
Response.Write "Antal poster med fältet ""Fält"" satt till ""1"":" & rs.RecordCount
rs.Close
Set rs = Nothing

'Exempel på hur man använder arrayen
Dim arr
arr = GetDataArray("select * from tabell")
Response.Write "Antal poster:" & UBound(arr) + 1
</code>

Fördelen med ett recordset på klientsidan är att man har recordcount och filter att använda, fördelen med en array är att den är snabb som attan. Nackdelen med båda dessa varianterna är att man inte kan hålla datat postlåst om man är i VB men det är inget som påverkar när man sitter på webben och utvecklar.


Svara

Sv: clientsided eller serversided recordset

Postades av 2003-11-18 08:28:28 - Fredric Sannebro

Ojoj... Tack snälla för svaret! Jag förstod det mesta men jag får nog läsa igenom ett par ggr till. Supertack!!!


Svara

Nyligen

  • 08:28 Butiksskyltar: Hur upplever utbude
  • 22:31 Slappna av
  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 792
27 960
271 761
8 654
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies