"Anders Lund" <Anders@zaimGED.dk> wrote
> Det er kommer an på hvilken connection til din database du bruger (ADO
eller
> ODBC tror jeg) om du kan bruge RecordCount.
Nej, det har slet ikke noget med forbindelsen at gøre. Det kommer an på dit
Recordsets Cursortype, normalt vil man bruge en ForwardOnly Cursor, dvs. en
cursor der KUN kan køre fremad og heller ikke ved hvor langt der er til
slutningen af recordsettet derfor kan en recordset der gør brug af
forwardonly cursoren ikke vide hvor mange poster der er og man kan heller
ikke hoppe rundt i recordsettet.
> Du kan evt bruge en anden
> løsning:
> dbconn.execute(sql,count)
> altså er andet parameter i execute funktionen en variabel der kommer til
at
> indeholde antal poster i dit udtræk.
Jeg tror der er noget du har misforstået her, ifølge dokumentationen[1] kan
man ganske vist sende en variabel med som parameter til Execute metoden på
Connection objektet men denne parameter returnerer ikke antal poster der
returneres. Denne returnerer antal poster der er _ændret_ dvs. opdateret,
slettet eller indsat vha. forespørgslen.
Man kan dog løse problemet ved at sende 2 SQL sætninger til databasen altså
f.eks.:
SELECT COUNT(*) FROM <table>;SELECT <fieldlist> FROM <table>;
Og herefter kan man så først få fat i antallet og herefter posterne vha.
NextRecordset[2] metoden på Recordset objektet. Dog er jeg ikke sikker på om
man kan få lov til at sende flere statements afsted til Access på denne
måde.
Den sidste mulighed man har er den letteste men samtidig den mest fyfy pga.
performance, den resulterer nemlig i at man for hver enkel post hiver
antallet ud af databasen, det kan man f.eks. gøre ved hjælp af denne SQL
sætning:
SELECT (SELECT COUNT(*) FROM <table>) AS Antal, <fieldlist> FROM <table>;
På denne måde har man adgang til antallet af poster i feltet antal, dog er
dette som sagt performance mæssigt en dårlig måde at gøre det på, dog er jeg
ikke sikker på hvor godt forespørgslen optimeres så om COUNT() funktionen
køres for hver række eller blot en enkelt gang skal jeg ikke skulle sige.
[1]:
<
http://msdn.microsoft.com/library/en-us/ado270/htm/mdmthcnnexecute.asp>
[2]: <
http://msdn.microsoft.com/library/en-us/ado270/htm/mdmthnextrec.asp>
--
Jakob Andersen