Avatar billede a_c Nybegynder
24. september 2001 - 14:39 Der 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?

på forhånd tak.
A_C
Avatar billede a_c Nybegynder
24. september 2001 - 14:43 #1
Sådan her har jeg sat min connection op.

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
Avatar billede mora Nybegynder
24. september 2001 - 14:44 #2
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
Avatar billede mora Nybegynder
24. september 2001 - 14:44 #3
NB: Mit er til en access db, men skulle ikke betyde det store .
Avatar billede a_c Nybegynder
24. september 2001 - 15:58 #4
Det funker ikke.
Jeg vil egentlig også gerne vide hvordan jeg sætter lortet op således at jeg kan bruge recordcount. :)
Avatar billede mora Nybegynder
24. september 2001 - 16:07 #5
a_c nevermind så (det jeg viste bruger jeg selv, og det virker) ...
Avatar billede tmceu Praktikant
24. september 2001 - 17:53 #6
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å.
Avatar billede tmceu Praktikant
24. september 2001 - 18:46 #7
Hvis du absolut vil forsøge dig med recordcount, skal du sikre dig at du anvender cursortype Adopenstatic eller Adopendynamic

Vær opmærksom på, at der er en del overhead forbundet med at bruge Adopendynamic
Avatar billede webbe Nybegynder
25. september 2001 - 13:46 #8
Er det bare et spørgsmål om at tælle antallet af poster i en tabel????
Avatar billede unclebug Nybegynder
25. september 2001 - 13:51 #9
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.
Avatar billede a_c Nybegynder
26. september 2001 - 09:38 #10
Hmmm OK.
Jeg takker.
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Netcompany A/S

IT Consultant

Capgemini Danmark A/S

AI/Data Engineer

Politiets Efterretningstjeneste

GenAI-specialist i PET