[Access/VBA] Communicatie tussen forms

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

  • LoBbY_1
  • Registratie: Juli 2002
  • Laatst online: 18-07 21:03
Hallo tweakers :)

Omdat ik voor BI (bedrijfskundige informatica) het vak BDA (Bouwen Database Applicaties) nog moet halen voor het volgende schooljaar ingaat en daarbij ook nog enkele opdrachten moet maken ben ik al enige tijd hier mee bezig. Waarom dit nu in access moest, ik vraag het me nog steeds af.

Helaas zit ik nu tegen een probleem aan, ik heb het idee dat het heel simpel moet zijn, maar na uren en uren zoeken en boeken lezen ben ik er nog steeds niet uit. De opdracht is d.m.v een dialog-box een waarde door te geven naar een onderliggend formulier. Hieronder staat een voorbeeld van de gewenste situatie:

Afbeeldingslocatie: http://www.euronet.nl/users/vamatoso/access.JPG

Wat heb ik nu gedaan en gevonden:
Volgens het boek, is het doorgeneven van informatie redelijk simpel, en dat geloof ik ook wel zei het niet dat het voot mij nog niet functioneerd.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
    'Variabelen declareren
    Dim keuze As DAO.Recordset
    
    'als eerste moeten we de huidige recordset opslaan
    Set keuze = Forms!frmVerhuur.RecordsetClone
    
    'nu zoeken we de record en de informatie van de
    'geselecteerde huurder.
     keuze.FindFirst "Huurdernr = '" & klantKeuzelijst & "'"

     'stel de eigenschap bookmark in om naar de gekozen
     'record te gaan in het verhuurscherm
     Forms!frmVerhuur.Bookmark = keuze.Bookmark
     
     'debug
     eigenModulen.toonBericht ("Huurdernr = " & klantKeuzelijst)
    
     'huidige formulier sluiten
     DoCmd.Close acForm, "sfrmHuurder"


Alleen gaat het nu fout bij de volgende regel, "Forms!frmVerhuur.Bookmark = keuze.Bookmark" Ik krijg steeds een foutmelding (3021) dat er geen huidig record is. Dit terwijl er toch een is geselecteerd. Of het om het huidige record gaat in de onderliggende form, of in de dialogbox word niet verteld. Daarom laat ik de record keuze van de dialogbox tonen, en die is iedere keer netjes gevuld.

Mijn vraag is dan nu ook, hoe kan ik het beste key van de gekozen record doorspelen naar de onderliggende form?

Alvast heel erg bedankt

Een echte golver is nooit uitgeput


  • StevenK
  • Registratie: Februari 2001
  • Laatst online: 27-07 21:33
Is je huurdernummer een string ?

Was advocaat maar vindt het juridische nog steeds leuk. Doet tegenwoordig iets in de metaal.


  • LoBbY_1
  • Registratie: Juli 2002
  • Laatst online: 18-07 21:03
Nee, het is gewoon een integer, en tevens de primarykey van die tabel.

Een echte golver is nooit uitgeput


  • StevenK
  • Registratie: Februari 2001
  • Laatst online: 27-07 21:33
LoBbY_1 schreef op donderdag 24 augustus 2006 @ 12:57:
[...]


Nee, het is gewoon een integer, en tevens de primarykey van die tabel.
Waarom zoek je dan naar een string ?
Visual Basic:
1
keuze.FindFirst "Huurdernr = '" & klantKeuzelijst & "'"

Was advocaat maar vindt het juridische nog steeds leuk. Doet tegenwoordig iets in de metaal.


  • LoBbY_1
  • Registratie: Juli 2002
  • Laatst online: 18-07 21:03
StevenK schreef op donderdag 24 augustus 2006 @ 12:59:
[...]
Waarom zoek je dan naar een string ?
Visual Basic:
1
keuze.FindFirst "Huurdernr = '" & klantKeuzelijst & "'"
Ja, dat is een goeie, oke, ik heb nu de query aangepast, en voor de zekerheid de value van de keuzelijst geparst naar een integer. Nog steeds de melding dat er geen "huidig record" is.
Visual Basic:
1
2
3
4
5
6
7
8
    Dim key As Integer
    
    'maak van de string uit de keuzelijst een integer
    key = Int(klantKeuzelijst)

    'nu zoeken we de record en de informatie van de
    'geselecteerde huurder.
     keuze.FindFirst "Huurdernr = " & key

Een echte golver is nooit uitgeput


  • StevenK
  • Registratie: Februari 2001
  • Laatst online: 27-07 21:33
En daarna een check of 'ie iets gevonden heeft ?

Was advocaat maar vindt het juridische nog steeds leuk. Doet tegenwoordig iets in de metaal.


  • LoBbY_1
  • Registratie: Juli 2002
  • Laatst online: 18-07 21:03
Oke, ik ben er achter wat de fout is, nu moet ik het alleen nog oplossen. De opdrachtmakers hebben een filter op het onderstaande formulier gezet waardoor het onderstaande formulier geen huidig record heeft.

Toen ik het filter tijdelijk er af haalde werkte de code prima. Alleen is het niet de bedoeling dat ik het formulierfilter er tussen weg haal.

Mijn vraag dan nu: Is het mogenlijk om een onderliggend formulier tijdelijk een "huidig record" te geven zodat de gegvens kunnen worden doorgrgeven?

Een echte golver is nooit uitgeput


  • StevenK
  • Registratie: Februari 2001
  • Laatst online: 27-07 21:33
LoBbY_1 schreef op donderdag 24 augustus 2006 @ 14:06:
Oke, ik ben er achter wat de fout is, nu moet ik het alleen nog oplossen. De opdrachtmakers hebben een filter op het onderstaande formulier gezet waardoor het onderstaande formulier geen huidig record heeft.

Toen ik het filter tijdelijk er af haalde werkte de code prima. Alleen is het niet de bedoeling dat ik het formulierfilter er tussen weg haal.

Mijn vraag dan nu: Is het mogenlijk om een onderliggend formulier tijdelijk een "huidig record" te geven zodat de gegvens kunnen worden doorgrgeven?
Ik zou me daar niet eens druk om maken en direct naar de onderliggende, niet gefilterde, recordset gaan schrijven.

Was advocaat maar vindt het juridische nog steeds leuk. Doet tegenwoordig iets in de metaal.


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 26-07 17:36

NMe

Quia Ego Sic Dico.

Waar hoort mijn topic?

VBA mag dan programmeren zijn, het is in grote mate afhankelijk van Office. Zoals je in bovenstaand topic kunt lezen, horen VBA-vragen dus ook in Officesuites en -software. :)

PRG>>OFF

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • LoBbY_1
  • Registratie: Juli 2002
  • Laatst online: 18-07 21:03
Oke, sorrie voor dat :)
Ik zou me daar niet eens druk om maken en direct naar de onderliggende, niet gefilterde, recordset gaan schrijven.
IK krijg het niet voor elkaar om direct daar heen te schrijven.. Is er misschien een andere oplossing om direct de recordset over te nemen>

Een echte golver is nooit uitgeput


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Blijkbaar is het de bedoeling dat je het formulierfilter instelt en niet de bookmarkmethode gebruikt. Er zijn van die dagen dat je je afvraagt of de makers van de opdracht zelf kaas hebben gegeten van hun onderwerp. |:(

code:
1
2
3
4
5
6
7
dim strFilter as string
strfilter = "veld=" & waarde 
forms!foo.filter=strFilter

ipv

forms!foo.bookmark=vBookmark

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland

Pagina: 1