04. marts 2010 - 18:38Der er
5 kommentarer og 1 løsning
RecordCount i en query
Hej.
Findes der en logisk forklaring på dette:
Jeg skal vise, hvor mange poster, der er i min tabel, der matcher et input.
Et simpelt eksempel fra en onClick event på en knap
... Konto := cdsKontoplan.FieldByName('Konto').asInteger; ibquery1.sql.clear; ibquery1.sql.add('SELECT ID, konto FROM tblPosteringer WHERE konto = :konto'); ibquery1.ParamByName('Konto').Value := Konto; ibquery1.open; application.message('Der er ' + inttostr(ibquery1.recordcount) + ' poster'); ibquery1.close; ...
Ovenstående viser 0 eller 1 poster selvom der faktisk er mellem 1 og 4 poster i min faktiske test tabel afhængig af hvilken konto jeg indtaster som parameter.
Jeg har brugt en IBquery til at forespørge.
Vælger jeg at sætte en datasource på min ibQuery og derefter sætte en DBGrid til datasourcen, så vises der korrekt 1-4 poster. Så snart jeg igen fjerner DBGriden fra formen, så vises igen ukorrekt kun 0-1 post.
Recordcount er ikke en funktion, der nødvendigvis er implementeret korrekt. For at kunne vise den korrekte record-count, skal alle rækker være læst igennem, som når du bruger DBGrid. Og det gør man ikke altid - effektivitetshensyn.
Du kan enten spadsere alle rækker igennem i en løkke, så passer den (eller du kan tælle selv).
Men hvis du kun skal bruge antallet, vil en SELECT COUNT(....) ... være bedre.
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.