Ik heb een formulier (relatiegegevens) met daarop een subformulier (alleen namen) en een zoekveld, deze layout:
Als de gebruiker zoekt in het zoekveld wordt in elk van de relatievelden gezocht naar de waarde en worden de "hits" links in het subform weergegeven in een lijst. In de lijst klikken geeft dan de gegevens van de geselecteerde relatie
In technische zin: Nadat een zoekwaarde wordt ingevoerd stel ik met VBA een SQL-string samen waarmee in elk van de relatievelden gezocht wordt:
Deze SQL wordt dan toegekend aan de recordsource van het subformulier, waarna dan alléén overeenkomstige records weergegeven worden in het subform. De gebruiker zoekt in het lijstje met hits zijn record en klikt op de juiste.
De oorspronkelijke recordsource (SELECT naam FROM relaties) wordt tijdelijk in het geheugen opgeslagen, en als de gebruiker het zoekveld leegmaakt wordt de oorspronkelijke recordsource weer toegewezen.
Nu het probleem: ik had dit aan het werk, alleen was het subform een listbox. Door andere redenen (o.a. het aantal records > 65000 - maximaal op een listbox - en snelheid) wil ik hier nu een subform van maken. Als ik echter in de code na het opbouwen de SQL
toewijs aan het subformulier, blijft het subformulier leeg.
Maak ik de zoekquery leeg (en krijg het subform weer de oorspronkelijke recordsource) dan zie ik maar één record, en die blijkt gekoppeld aan het hoofdformulier: ga ik in het hoofdformulier bladeren, dan "bladert" het subform mee met die ene record.
Het subform is echter niet gekoppeld!
Als ik het subformulier zelf open (dus NIET als subform op een hoofdform) en dan
doe, dan werkt het wel goed (ik zie de gezochte records)
Ik zie vast iets heel simpels over het hoofd, maar ik ben al heel de avond aan het rotzooien. Het lijkt wel of er op de een of andere manier een link ontstaat met de data op het hoofdformulier, of een filter(optie) wordt aangezet. Ik snap er helemaal niks van.
Een klein testje met een simpel form en subform, en dan werkt het toewijzen van een gewijzigde recordset wel.
code:
1
2
3
4
5
6
7
| zoekveld:_____ -------------------------------------------------- subform | naam1 | Naam: ---- naam2 | Adres: ------ naam3 | Email: ------ naam4 | |
Als de gebruiker zoekt in het zoekveld wordt in elk van de relatievelden gezocht naar de waarde en worden de "hits" links in het subform weergegeven in een lijst. In de lijst klikken geeft dan de gegevens van de geselecteerde relatie
In technische zin: Nadat een zoekwaarde wordt ingevoerd stel ik met VBA een SQL-string samen waarmee in elk van de relatievelden gezocht wordt:
code:
1
| SELECT naam FROM relaties WHERE naam="zoek" OR adres="zoek" OR email="zoek" |
Deze SQL wordt dan toegekend aan de recordsource van het subformulier, waarna dan alléén overeenkomstige records weergegeven worden in het subform. De gebruiker zoekt in het lijstje met hits zijn record en klikt op de juiste.
De oorspronkelijke recordsource (SELECT naam FROM relaties) wordt tijdelijk in het geheugen opgeslagen, en als de gebruiker het zoekveld leegmaakt wordt de oorspronkelijke recordsource weer toegewezen.
Nu het probleem: ik had dit aan het werk, alleen was het subform een listbox. Door andere redenen (o.a. het aantal records > 65000 - maximaal op een listbox - en snelheid) wil ik hier nu een subform van maken. Als ik echter in de code na het opbouwen de SQL
code:
1
| forms!form!subform.form.recordsource = SQL |
toewijs aan het subformulier, blijft het subformulier leeg.
Maak ik de zoekquery leeg (en krijg het subform weer de oorspronkelijke recordsource) dan zie ik maar één record, en die blijkt gekoppeld aan het hoofdformulier: ga ik in het hoofdformulier bladeren, dan "bladert" het subform mee met die ene record.
Het subform is echter niet gekoppeld!
Als ik het subformulier zelf open (dus NIET als subform op een hoofdform) en dan
code:
1
| forms!subform.recordsource = SQL |
doe, dan werkt het wel goed (ik zie de gezochte records)
Ik zie vast iets heel simpels over het hoofd, maar ik ben al heel de avond aan het rotzooien. Het lijkt wel of er op de een of andere manier een link ontstaat met de data op het hoofdformulier, of een filter(optie) wordt aangezet. Ik snap er helemaal niks van.
Een klein testje met een simpel form en subform, en dan werkt het toewijzen van een gewijzigde recordset wel.