Avatar billede ds-zim Nybegynder
28. august 2000 - 14:02 Der er 21 kommentarer og
1 løsning

Tælle antal poster i tabel med kriterie(r)

Hvordan kan jeg få oplyst et antal poster i en tabel, der opfylder et/flere kriterier ?
Avatar billede kermit Nybegynder
28. august 2000 - 14:08 #1
<%
Query = \"Select count(*) as Antal from deltager\"
Set oConn=server.CreateObject(\"ADODB.Connection\")
oConn.Open \"DSN=database\"
Set oRs=oConn.Execute(Query)
%>
<html>

<head>
<title>Statistik</title>
</head>

<body bgcolor=\"#C0C0C0\">

<%Response.Write(oRs.Fields(\"Antal\"))%>

</body>
</html>

<%
oRS.Close()
set oRS = Nothing
%>
Avatar billede kermit Nybegynder
28. august 2000 - 14:09 #2
Sorry ! Troede det var ASP !
Avatar billede ds-zim Nybegynder
28. august 2000 - 14:13 #3
heh, troede ikke der var så meget forskel på VB/DB scripting :)
Avatar billede kermit Nybegynder
28. august 2000 - 14:15 #4
Det er der nok heller ikke ! Men jeg har aldrig haft behov for at arbejde med DB i VB !
Avatar billede privaten Nybegynder
28. august 2000 - 14:59 #5
Hvad med:

SELECT Count (feltid-1) AS [Antal Records]
FROM TabelNavn
WHERE feltid-2 = \'kriterie\';

Avatar billede ds-zim Nybegynder
28. august 2000 - 15:15 #6
Kan SQL bruges direkte i VB ? *Blushes*
Avatar billede privaten Nybegynder
28. august 2000 - 16:29 #7
Kunne man ikke anvende følgende?

  Dim conn As ADODB.Connection
  Dim rst As ADODB.Recordset

  \'Set Provider
  Set conn = New ADODB.Connection
  conn.Provider = \"Microsoft.JET.OLEDB.3.51\"

  conn.Open \"C:\\xxx.mdb\", \"admin\", \"\"

  Set rst = New ADODB.Recordset

  rst.Open \"SQL-Statement\"
Avatar billede jper Nybegynder
28. august 2000 - 16:55 #8
response.write oRS.RecordCount
Udskriver antallet af fundne records i dit recordset.
Avatar billede styrmand Nybegynder
28. august 2000 - 19:29 #9
oRS.Recordcount virker kun hver gang, hvis man først blader til den sidste post, med oRS.movelast.
Avatar billede ds-zim Nybegynder
29. august 2000 - 15:16 #10
Umm, burde jeg nævne at jeg arbejder i Office2Kversionen af Access ?
Jeg kender næsten ingen af kommandoerne i de forskellige forslag :(
Avatar billede ds-zim Nybegynder
29. august 2000 - 15:36 #11
\"Den mest simple løsning er som regel den korrekte\" ..

Tjae, burde det så ikke være som flg.?

Private Sub Go_Click()
 
  Dim rstakt As Recordset
  Dim TEST As Long
 
  Set rstakt = dbs.OpenRecordset(\"Aktiviteter\")
  rstakt.MoveLast
  TEST = rstakt.RecordCount

End Sub

Jeg har prøvet ovenstående og får fejlen \'Object required\' ..
WTF ? Jeg har jo angivet recordset=\"Aktiviteter\"
Avatar billede ds-zim Nybegynder
29. august 2000 - 15:48 #12
Hmm, ud fra hjælpfilen har jeg fundet ud af flg.:

.RecordCount returnerer antal \'accessed\' records, angivet i LONG

When you work with linked TableDef objects, the RecordCount property setting is always –1.
(Jeg arbejder med sammenkædet tabeller, betyder det ikke at jeg får minus ud af at bruge .RecordCount ?)

Udover at .Recordcount påvirker performance negativt,så øjnede jeg også:
\'You can also use an SQL Count function to determine the approximate number of records your query will return.\'
Ikke lige en SQL-command jeg er bekendt med :(

Kommentarer udbedes ! (Flere point ?)
Avatar billede ds-zim Nybegynder
30. august 2000 - 09:05 #13
-> Privaten

Jeg har med succes afprøvet dit \'Select Count\' forslag og det er umiddelbart det, jeg har tænkt mig at benytte idet at der lader til at være en gusten fejlmargen/behandlingstid på RecordCount.
Har du mere på falderebet som jeg burde vide omkring dette ?
Avatar billede privaten Nybegynder
30. august 2000 - 09:31 #14
Jeg vender tilbage med en stump kode..
Avatar billede ds-zim Nybegynder
30. august 2000 - 09:34 #15
Har du nogen idé om hvordan jeg bruger et SQL statement i VB kode ?
Avatar billede privaten Nybegynder
30. august 2000 - 09:38 #16
Function RecordsInTable() As Long
    \' dim af oRS, database etc...
    \' bla bla
    \' bla bla
    Set rs = db.OpenRecordset(\"SELECT Count(*) AS Records FROM MyTable;\")
    rs.MoveFirst
    RecordsInTable = rs(\"Records\")
    \' exit, close af db etc....
End Function
Avatar billede privaten Nybegynder
30. august 2000 - 09:39 #17
Du kan nu skrive MsgBox \"Antal rækker i tabellen: \" + RecordsInTable
Avatar billede ds-zim Nybegynder
30. august 2000 - 09:41 #18
Avatar billede ds-zim Nybegynder
30. august 2000 - 09:43 #19
Umm, kan jeg få dig til at udforme hele funktionen ?
(Evt. mod flere point ?)
Avatar billede privaten Nybegynder
30. august 2000 - 09:56 #20
Du skal \"bare\" cut\'n paste mit første svar ind der hvor der er remarks, altså noget i retning af:
func ...
Dim conn As ADODB.Connection
  Dim rst As ADODB.Recordset

  \'Set Provider
  Set conn = New ADODB.Connection
  conn.Provider = \"Microsoft.JET.OLEDB.3.51\"

  conn.Open \"C:\\xxx.mdb\", \"admin\", \"\"

  Set rst = New ADODB.Recordset

  rst.Open \"SQL-Statement\"
 

Avatar billede ds-zim Nybegynder
30. august 2000 - 10:04 #21
Er det her komplet skeløjet ?

Function RecordsInTable() As Long

  Dim conn As ADODB.Connection
  Dim rst As ADODB.Recordset
 
  Set conn = New ADODB.Connection
  Set rst = New ADODB.Recordset
  conn.Provider = \"Microsoft.JET.OLEDB.3.51\"
  conn.Open \"Path\", \"admin\", \"\"
 
  Set rst = Db.OpenRecordset(\"SELECT Count(*) AS Records FROM MyTable;\")
  rst.Open \"SQL-Statement\"
  rst.MoveFirst
  RecordsInTable = rs(\"Records\")

End Function
Avatar billede privaten Nybegynder
01. september 2000 - 12:31 #22
Nope, hvis du ikke kan få det til at virke, så skriv endelig
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