Avatar billede puppetmaster Nybegynder
30. april 2002 - 09:16 Der er 16 kommentarer og
3 løsninger

RecordCount

Jeg bruger følgende kode til at connecte til databasen og hente data

<%
  Set Con = Server.CreateObject("ADODB.Connection")
  Con.Open "PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=\\server\mappe\databasefil.mdb"
  SQL="select * from Artikler ORDER BY opdateret_d DESC"
  Set RS = Con.Execute( SQL )
%>
Jeg ville gerne lave en optælling af hvor mange artikler der er i databasen, hvilket jeg prøvede med RS.RecordCount. Dette resulterede i at jeg får returneret værdien -1. Løsninger på problemet er velkomne...
""
Avatar billede puppetmaster Nybegynder
30. april 2002 - 09:18 #1
Jeg kan heller ikke bruge

<% RS.MoveLast
  Response.Write RS.RecordCount
  RS.MoveFirst
%>
Avatar billede kimiwan Nybegynder
30. april 2002 - 09:22 #2
du skal bruge adOpenStatic i stedet for adOpenForwardOnly.

i stedet for set rs = con.execute(sql), kan du gøre sådan her:

set rs = server.createobject("adodb.recordset")
rs.open sql, cn, adOpenStatic, adLockReadOnly, adCmdText
Avatar billede puppetmaster Nybegynder
30. april 2002 - 09:25 #3
Puha, det ser radikalt anderledes ud end hvad jeg står med på hånden lige nu....
Avatar billede kimiwan Nybegynder
30. april 2002 - 09:29 #4
det er det nu ikke.. det er bare to forskellige måder at åbne dit recordset (rs.open i stedet for rs = con.execute)
Avatar billede puppetmaster Nybegynder
30. april 2002 - 09:30 #5
ok.....hvad bruges cn egentlig til?
Avatar billede kimiwan Nybegynder
30. april 2002 - 09:34 #6
med en forwardonly cursor kan du (indlysende nok!) ikke gå baglæns i recordettet.. og der er andre funktioner/properties, du heller ikke har adgang til.
Avatar billede kimiwan Nybegynder
30. april 2002 - 09:34 #7
sorry, det skulle ha' været con i stedet for cn.. det er dit connection object.
Avatar billede puppetmaster Nybegynder
30. april 2002 - 09:35 #8
ok....
Sikkert derfor jeg fik en fejl, prøver lige igen.....
Avatar billede puppetmaster Nybegynder
30. april 2002 - 09:37 #9
Hmmm....ved at være lidt rundtosset nu:

<%
  SQL = "SELECT * FROM Artikler ORDER BY opdateret_d DESC"
  Set RS = Server.CreateObject("ADODB.Recordset")
  Set Con = Server.CreateObject("ADODB.Connection")
  Con.Open "PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=\\bcedb\database\Knowledgebase.mdb"
  RS.Open sql, Con, adOpenStatic, adLockReadOnly, adCmdText 
'  Set RS = Con.Execute( SQLtemp1 )
%>
Avatar billede omgangsdyret Nybegynder
30. april 2002 - 09:38 #10
Sådan kan det gøres:
<%
  Set Con = Server.CreateObject("ADODB.Connection")
  Con.Open "PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=\servermappedatabasefil.mdb"
  SQL="select * from Artikler ORDER BY opdateret_d DESC"
  Set RS = Con.Execute( SQL )
Do
count = count + 1
rs.movenext
Loop While Not rs.EOF
conn.close
set conn = Nothing
response.write count
%>


Var det ikke det du mente?
Avatar billede omgangsdyret Nybegynder
30. april 2002 - 09:39 #11
Obs lige 1 fejl:
<%
  Set Con = Server.CreateObject("ADODB.Connection")
  Con.Open "PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=\servermappedatabasefil.mdb"
  SQL="select * from Artikler ORDER BY opdateret_d DESC"
  Set RS = Con.Execute( SQL )
Do
count = count + 1
rs.movenext
Loop While Not rs.EOF
con.close
set con = Nothing
response.write count
%>
Avatar billede puppetmaster Nybegynder
30. april 2002 - 09:40 #12
Kigger lige på det, omgang.
Avatar billede kimiwan Nybegynder
30. april 2002 - 09:41 #13
omgangsdyret: det hjælper da ikke meget, hvis man skal bruge .MoveFirst
Avatar billede puppetmaster Nybegynder
30. april 2002 - 09:46 #14
Er jeg da virkelig helt galt på den med:

  SQL = "SELECT * FROM Artikler ORDER BY opdateret_d DESC"
  Set Con = Server.CreateObject("ADODB.Connection")
  Con.Open "PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=\\bcedb\database\Knowledgebase.mdb"
  Set RS = Server.CreateObject("ADODB.Recordset")
  RS.Open SQL, Con, adOpenStatic, adLockReadOnly, adCmdText

Først en Select-streng, så connection-objektet, så forbindelsen, så recordset-objektet og tilsidst åbningen af recordsættet.
Med ovenstående får jeg følgende fejl:
Technical Information (for support personnel)

Error Type:
ADODB.Recordset (0x800A0BB9)
Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.
/helpdesk/visalleartikler.asp, line 51

(line 51 =    RS.Open SQL, Con, adOpenStatic, adLockReadOnly, adCmdText)
Avatar billede kimiwan Nybegynder
30. april 2002 - 09:52 #15
Du skal inkludere ado konstanterne for at den forstår adOpenStatic, adLockReadOnly og adCmdText

http://www.asp101.com/articles/john/typelibs/default.asp
Avatar billede webbe Nybegynder
30. april 2002 - 10:07 #16
Jeg går ud fra at du vil bruge nedenstående til at liste alle artiklerne.

<%
  Set Con = Server.CreateObject("ADODB.Connection")
  Con.Open "PROVIDER=MICROSOFT.JET.OLEDB.4.0;DATA SOURCE=\servermappedatabasefil.mdb"
  SQL="select * from Artikler ORDER BY opdateret_d DESC"
  Set RS = Con.Execute( SQL )
%>

Derefter ville jeg nok lave et ekstra recordset der tælle indlæggene

<%
strSQL = "SELECT COUNT(*) AS Antal FROM Artikler"
Set rsCount = Con.Execute(strSQL)

response.write("Der er "&rsCount("Antal")&" artikler i databasen")
%>
Avatar billede puppetmaster Nybegynder
30. april 2002 - 10:23 #17
se, webbe, det kunne jeg jo også gøre
Avatar billede kimiwan Nybegynder
30. april 2002 - 10:29 #18
hvis du udelukkende vil tælle antallet af brugere, skal du gøre som webbe sagde, men hvis du vil bruge recordcount og movefirst (som i dit spm), skal du bruge en adOpenStatic cursor i stedet for adOpenForwardOnly.
Avatar billede puppetmaster Nybegynder
30. april 2002 - 10:30 #19
Jeg er endt med at bruge webbe's forslag, I skal dog ikke snydes for point.
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

Capgemini Danmark A/S

Java Engineer

Capgemini Danmark A/S

Client Partner

Forsvarsministeriets Materiel- og Indkøbsstyrelse

IT-specialist til Lokal IT Servicecenter ved Personelkommandoen