24. september 2001 - 14:39Der er
9 kommentarer og 1 løsning
Recordcount eller hvad
Hej, Når jeg modtager mit recordset fra databasen så ville det være fedt hvis jeg kunne bruge recordcount. Det kan jeg imidlertid ikke og det er vist et eller andet med hvordan jeg laver min cursor eller noget. Mit spørgsmål er: 1: Hvordan laver jeg min cursor/connectiong således at jeg kan bruge recordcount? 2: Hvordan tjekker jeg for om recordsettet er tomt hvis jeg ikke kan bruge recordcount?
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Set Conn = Server.CreateObject(\"ADODB.Connection\") Conn.Open \"Driver={SQL Server}; SERVER=XXXXXXXXX;DATABASE=XXXXXXXX;UID=XXXXXXX;PWD=XXXXXXX;\" Set result=server.CreateObject(\"ADODB.Recordset\") result.cursorType=adOpenStatic Set result.ActiveConnection = Conn
Dette er nok ikke den optimale måde, men det virker :)
Set rs = Server.CreateObject(\"ADODB.RecordSet\") strSQL = \"...\" strDSN = \"DRIVER={Microsoft Access Driver (*.mdb)};DBQ=\"&Server.MapPath(\"sidjob.mdb\") rs.Open strSQL, strDSN, 1 If Not (rs.BOF Or rs.EOF) Then
Do While Not rs.EOF findes=1 rs.MoveNext Loop End If rs.Close Set rs = Nothing
if findes=1 then Response.Write \"Posten findes (Evt. flere), skal du se hvormange, så adder for hver gennemkørsel\" fejl=1 end if
Det der blev vist ovenfor er svar på dit spørgsmål 2, check af om et recordset er tomt, uden brug af recordcount.
Det \"rigtige\" check af om et recordset er tomt er If Not (rs.BOF AND rs.EOF) Then.... d.v.s. at hvis både .BOF og .EOF er true, er et recordset tomt. I praksis kan man dog ofte nøjes med at kontrollere for .EOF
M.h.t. brug af recordcount, er sagen straks noget mere kompleks. Jeg kan ikke give dig en løsning, men jeg kan fortælle om mine egne negative erfaringer.
Jeg har forsøgt at bruge recordcount på både SQL Server (7.0 + 2000), Access 2000 og Oracle 8, med forskellige cursors uden held. Jeg har også forsøgt mig med forskellige versioner af MDAC, ligeledes uden held.
Min konklusion er, at det kun virker under helt specielle betingelser og jeg vil derfor ikke råde dig til at basere noget som helst på det. Jeg har søgt som en gal over nettet, uden at finde nogen endegyldig forklaring på hvornår det virker og ikke gør.
Håber du kan bruge svaret, selv om det ikke var hvad du håbede på.
I f.ex. Oracle understøttes recordcount IKKE. Du er nødt til at loope igennem alle sammen og tælle dem, eller lave en select Count(*). Dette gælder for serverside cursors. Bruger du clientside cursor er det muligt at du kan, eftersom alle records så er overført til klienten, og derfor kan tælles. Men clientside cursors er ofte meget ineffektivt.
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.