Jag har tilldelat ett Recordset lite data med SQL. Hur får jag reda på hur många poster som finns i Recordset? Jag prövade med RS.RecordCount men det visar alltid -1. Hade du bara orkat att söka i forumet så hade du fått 158 svar på din fråga. Det enklaste är att du gör rs.Recordset.MoveLast Har du sagt åt de 156 tidigare frågeställarna att de också är slöa eller gäller det bara mig? För att inte tala om alla andra trådar med samma sorts fråga. Skulle man driva ett företag på det viset lär det inte bli några kunder. Nu får Vi ha skärpning här. >Skulle man driva ett företag på det viset lär det inte bli några kunder rsPerson("AntalPoster") bör innehålla ett värde, hur tar du emot det värdet? Jag förstår, jag kan också bli irriterad ibland. Tack för att du ändå hjälper mig. Det kan ju vara så att man tittat på gamla svar och ändå inte får det att fungera. Lägg till en breakepoint på den raden så att du ser vad SQL satsen innehåller, alternativt skicka upp det i en MsgBox. Det kan ju vara så att något är fel i SQL satsen eller att något värde inte hänger med. Jaaaaaaaa detta ADO "bullshit" man lyckas krångla till det mest elementära. Problemet var att jag nog missförstått hur man använder Count. Jag trodde man kunde använda samma SQL men med ändringen till Select Count(*) As .. Sven: det måste funnits någon anledning till att majoriteten verkar satsa på ado? (eller ado.net i .net) >Sven: det måste funnits någon anledning till att majoriteten verkar satsa på ado? (eller ado.net i .net)Recordcount
Sv: Recordcount
Läs [Varför returnerar RST.RecordCount -1?] som exakt besvarar din frågan.
//Anna-KarinSv: Recordcount
rs.RecordSet.MoveFirst
och sedan RS.RecordCount Nu vet Count hur många poster det finns Voila ;-)Sv: Recordcount
Det funkar inte med detta
strSQLPersonFödd = "COUNT(*) As AntalPoster from person where fodelsear >= " & Text3.text & "And fodelsear <= " & Text4.text & " order by fodelsear, efternamn, fornamn"
rsPerson.Open strSQLPersonFödd, ConnPerson, adOpenStatic
antalrader = rsPerson("AntalPoster")
Programmet slutar vid rsPerson.Open , antalrader=... är nästa programrad och den körs inte.
Detta med
rs.MoveLast
rs.MoveFirst
funkar inte heller ty programmet utför inget mer än till rs.MoveLastSv: Recordcount
Om din SQL fråga alstrar ett recordset så efter frågan kan du kolla med MoveLast hur många poster det finns.
Dvs efter MoveLast - MoveFirst och sedan RecordCount.
Om du då får -1 så är det fel på SQL frågan.Sv: Recordcount
Nu har du missat en viktig poäng med det här forumet... Det är helt frivilligt att svara, och eftersom att det är frivilligt att svara så räcker det ju med att ge ett svar som kan hjälpa dig. Som jag ser det så hjälpte hon dig på två sätt; dels genom att påminna dig om att söka mer i forumet och dels genom att visa en tråd som löser problemet åt dig (jag har tittat på den tråden, beskriver problemet bra tycker jag samt ett bra svar i den)Sv: Recordcount
Annars ska:
Antal = rsPerson.recordcount fungera med den cursorn som du har.
-1 betyder att du har poster i ditt Recordset,
0 står för att inga träffar hittades.
Många gånger kan man få svar på sina frågor om man bara söker i forumet, därvar mitt något irriterade svar. Jag stötte själv på problem för ett tag sedan och löste det genom en sökning i forumet.
//Anna-KarinSv: Recordcount
Allt funkar som det skall så det är inget fel på SQL:en.
Lägger jag till MoveLast - MoveFirst och sedan händer ingenting. Programmet gör plötligt inget mer efter MoveLast
rsPerson får inget värde för programmet slutar exekveringen på raden innan dvs
rsPerson.Open strSQLPersonFödd, ConnPerson, adOpenStatic
inget mer händer och i raden
antalrader = rsPerson("AntalPoster")
är antalrader= 0
Jag tar jag bort koden för att göra radantal får jag en massa träffar.Sv: Recordcount
Men om du kör en Count i SQL satsen så ska du inte behöva köra en RecordCount eftersom de borde innehålla samma värde.
Du kan även prova att ändra din kod till:
rsPerson= Conn.Execute(SQLStmt),AdOpenStatic,AdOpenKeySet
Tror att det kan fungera.
//Anna-KarinSv: Recordcount
Ställer man en korrekt SQL fråga får man ett svar på antal poster som passade mot kriteriet.
Om man då kollar vad den sista posten har för värde så får man svaret på RecordCount
Phuuuuuuuuuu sån "skit" och så simpelt.Sv: Recordcount
Problemet löstes om jag tar bort Ordr By .. på slutet. Man får alltså göra TVÅ SQL-satser om man skall ha antalet rader, en för antalet och sedan en för att få data i recordsetet. Är det rätt så eller har jag gjor fel ändå?Sv: Recordcount
Sv: Recordcount
Finns det säkert, men det grundar sig inte på förstånd och djuplodad analys utan snarar på
att dom går på MS "bullshit" och skall vara moderna. ADO är i alla avseende långsammare krångligar
än gamla hederliga DAO. MS trodde att man kunde dölja detta med snabbare processorer.
Alla test visar att ADO är långsammare än jämnförbara andra lösningar.
Bara ett djä.. trixande kring gamla välkända lösningar. Tycker att Borlands BDE är optimalt.
ADO är inget annat än det gamla "skitet" ODBC som alla stångats med.
Det är så djä.. dåligt så det är pinsamt.