Toon posts:

[VBA] DAO en SQL in MS Access

Pagina: 1
Acties:
  • 107 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik probeer mijzelf VBA en DAO bij te brengen om databases in access te kunnen manipuleren, ik heb echter een probleem waar ik niet uit kom. Met het handboek in de hand probeer ik een recordset te maken. Ik verwacht op basis van onderstaande code 2 records in de set (namelijk alle records waarvoor geldt "greeting = hi", maar volgens recordcount kom ik uit op 1.

Waar zit mijn denkfout?

code:
1
2
3
4
5
6
Sub test()
Dim dbs As Database, rst As Recordset
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("SELECT * From test Where Greeting = 'Hi'")
Debug.Print "" & rst.RecordCount
End Sub


De tabel (met naam test )ziet er als volgt uit:

[Taal] [Greeting]
Engels Hello world!
Engels Howdy
Engels Hi
Nederlands Hi
Nederlands Dag

Alvast bedankt voor de hulp!

[ Voor 4% gewijzigd door Verwijderd op 24-07-2003 13:59 ]


  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 26-12 05:51

Gerco

Professional Newbie

De recordset wordt niet gelijk helemaal gevuld, probeer dit:

Visual Basic .NET:
1
2
  rst.MoveLast
  MsgBox rst.RecordCount


Kijk in de help bij de recordcount property:
The RecordCount property doesn't indicate how many records are contained in a dynaset-, snapshot-, or forward-only–type Recordset object until all records have been accessed. Once the last record has been accessed, the RecordCount property indicates the total number of undeleted records in the Recordset or TableDef object. To force the last record to be accessed, use the MoveLast method on the Recordset object. You can also use an SQL Count function to determine the approximate number of records your query will return.

[ Voor 73% gewijzigd door Gerco op 24-07-2003 13:50 ]

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


Verwijderd

Er moet wel een loop omheen om alle records te printen !!!!!


Sub test()
Dim dbs As Database, rst As Recordset
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("SELECT * From test Where Greeting = 'Hi'")
do until rst.eof
Debug.Print "" & rst!Taal
rst.movenext
loop
End Sub

[ Voor 10% gewijzigd door Verwijderd op 24-07-2003 13:53 ]


Verwijderd

Topicstarter
Tuurlijk, move next - loop - EOF! Wist ik wel ... <Ahum> :+
Bedankt jongens, het werkt inmiddels. Op naar het volgende probleem!

Verwijderd

Topicstarter
Bestaat er trouwens een mogelijkheid om te zien wat er in een recordset zit? Het enige wat ik kan vinden is met recordcount kijken hoeveel records erin zitten.

  • Gerco
  • Registratie: Mei 2000
  • Laatst online: 26-12 05:51

Gerco

Professional Newbie

Verwijderd schreef op 24 July 2003 @ 14:03:
Bestaat er trouwens een mogelijkheid om te zien wat er in een recordset zit? Het enige wat ik kan vinden is met recordcount kijken hoeveel records erin zitten.
Wat bedoel je "zien wat er in een recordset zit"? Welke informatie wil je hebben? Waardes van velden kun je met rst!Veld of met rst.Fields("Veld")[.Value] ophalen, aantal records met RecordCount (al heb je daar niet veel aan, want je moet eerst alle records ingelezen hebben, hetzij met een loop of het een .MoveLast)...

Welke data wil je zien dus?

- "Als ik zou willen dat je het begreep, legde ik het wel beter uit!" | All number systems are base 10!


  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Die mogelijkheid bestaat er zeker. Zo kun je bijvoorbeeld je records weergeven in een grid. Overigens is voor dit soort posts de edit knop van onschatbare waarde ;)

Zoek een beetje in de help en op groups.google.com Daar vind je vast aanwijzingen de juiste richting in.

My personal website


Verwijderd

Topicstarter
Zo lang ik nog niet heel veel vertrouwen heb in mijn SQL kunsten waarmee ik recordsets vul, zou het wel makkelijk zijn als ik achteraf naar mijn recordset zou kunnen kijken.

Dus net zoals je een tabel kunt openen zou het makkelijk zijn als je een recordset zou kunnen openen (ik weet echter wel dat een recordset geen tabel is, dus dat het niet zo makkelijk is). Ik heb hiernaar al gezocht maar dan vind je hele lappen code waarvan ik weinig begrijp, dus dat hielp mij niet. Ben nog erg newbie op dit gebied (alsof dat nog niet duidelijk was ;) )

Op basis van het probleem hierboven wat is het commando om de recordset weg te schrijven in een nieuwe tabel? Is dat uberhaupt mogelijk?

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 14-05-2024

OZ-Gump

terug van weggeweest

Je kunt dan in plaats van een select * from een insert into of een select insert gebruiken. Dan zet je het in een tabelletje. Zoek daar maar eens op. ;)

My personal website

Pagina: 1