Toon posts:

[access] VBA variabele in query plaatsen

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

Verwijderd

Topicstarter
Ik heb weer een Access database met een formulier met daarin een subformulier.
Het subformulier wordt gevuld met een query (qry_artikelen-bestellen. Deze query toont alle records (artikelen) uit een tabel in de database van welke één veld overeen komt met een door de gebruiker op het formulier ingevulde waarde. De manier waarop dit gebeurt vind ik al een beetje verneukeratief, want ik had het liever via een VBA variabele zien gebeuren. Dat lijkt echter onmogelijk…

Goed, de query toont dus een lijstje met artikelen. Daar wil ik d.m.v. het formulier artikelen aan toe kunnen voegen. Deze waarden zitten in een handjevol VBA variabelen.
Wat ik dus heb verzonnen is dit:
code:
1
2
3
4
5
6
7
8
9
10
11
Dim db As Database
Dim rst As Recordset
Set db = CurrentDb
Set rst = db.OpenRecordset("qry_artikelen-bestellen", dbOpenDynaset)
rst!omschrijving = omschrijving
rst!aantal = aantal
rst!leverancier = leverancier
rst!bestelnummer = artikelnummer
rst.AddNew
rst.Close
Set db = Nothing


Hoe kan het ook anders… dit werkt dus niet. Hij haakt af bij “Set rst = db.OpenRecordset("qry_artikelen-bestellen", dbOpenDynaset)”. De foutmelding is 3061: Er zijn te weinig parameters. Het verwachte aantal is 1. :?

Hoe krijg ik het nou voor mekaar dat de waarden in de query en dus in de tabel komen te staan?

  • Bu588
  • Registratie: Maart 2000
  • Laatst online: 22-12-2025
Wederom ik die antwoord geef ;-)

Probeer eens:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Dim db As Database
Dim rst As Recordset

Set db = CurrentDb
Set rst = db.OpenRecordset("qry_artikelen-bestellen")

rst.AddNew
rst!omschrijving = omschrijving
rst!aantal = aantal
rst!leverancier = leverancier
rst!bestelnummer = artikelnummer
rst.Update

rst.Close
Set db = Nothing

En ik raad je aan om een Access boek ofzo te kopen en te lezen, want dit soort dingen hoort toch echt bij de basiskennis van een Access/VBA programmeur...

Als hij niet werkt met de query als recordset, moet je in plaats van de query eens de tabel openen waar de gegevens in moeten komen.

Nothing is fool-proof to a sufficiently talented fool...


Verwijderd

Topicstarter
Ik heb het nog niet geprobeerd, ga het zo wel doen, maar ik heb zo'n vermoeden dat jouw stukkie code ook niet gaat werken.
Het direct werken met een tabel ipv de query zal wel lukken. Ik heb al een keer eerder een loopje geschreven welke 6000 records in de database langs is gegaan om een en ander aan te passen. Ik kijk wel of ik iets kan verzinnen dat ik die query niet nodig heb.

En even over jouw opmerking dat ik een boek door moet werken:
Daar heb ik geen trek in. Programmeren in Access boeit me niet echt, en ik ben ook zeker niet van plan het in de toekomst (beroepsmatig) te gaan doen. Ik heb op de havo ooit wat basiskennis VB6 opgedaan en daar moet ik het maar mee doen. Ik heb het nu alleen even nodig voor een stageprojectje.

  • Ronald_stage
  • Registratie: Januari 2002
  • Laatst online: 08:21

Ronald_stage

wat kan je hier nog zeggen

uhhh..

Db.execute "update [tablenaam] set [tablenaam].[veldnaam1] = [tablenaam].[veldnaam1]" & _ where bla bla bla