[Access 2000] vinkje voor subformulier afhankelijk van tekst

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

  • MrMartinH
  • Registratie: Juni 2001
  • Laatst online: 29-07-2024
Ik kom er niet meer uit ook niet met search,

Goed heb met Access 2000 dus database gebouwd om voorraad bij te houden (nou ja ben ik nog mee bezig) en nu wou ik het volgende doen.

Ik heb in een tekstvak de naam van de producten die uit een tabel worden gelezen. Werkt goed. Nu wil ik echter bij sommige producten een selectievakje hebben om een subforumier te openen. Dit vakje moet automatisch zichtbaar worden wanneer een productnaam in het tekstvak verschijnt.

Bv als er in het tekstvak de naam "Koelers" staat dan moet er een selectievakje worden weergegeven, maar wanneer je een record verder gaat bv naar "Moederborden" dan moet er geen selectievakje zichtbaar zijn.

Dan is het uietraard ook de bedoelling dat als het tekstvakje gebruikt word deze ook automatisch ziet welk subformulier word weergegeven.

Signature


  • Lister
  • Registratie: September 2001
  • Laatst online: 15-02-2022
Als je bepaalde acties wil uitvoeren in Access bij het bladeren door records op een Form dan moet je het Current-event van het Form gebruiken, dit treedt namelijk op bij het wisselen of verversen van records.

Je moet dan eerst controleren of bij de productnaam het selectievakje getoond moet worden, zo nee dan moet je die invisible maken en ook altijd het subform invisible maken.
Zo ja, dan moet je het selectievakje visible maken en dan controleren of die waar is en dan het subformulier al dan niet visible maken.

Je krijgt dan zoiets als code:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub Form_Current()
    
    If Me.txtProductNaam = "Koelers" Then
        Me.chkGebruikSubForm.Visible = True
        If Me.chkGebruikSubForm.Value Then
                Me.sfmSubForm.Visible = True
        Else
                Me.sfmSubForm.Visible = False
        End If
    Else
        Me.chkGebruikSubForm.Visible = False
        Me.sfmSubForm.Visible = False
    End If

End Sub


En als de productnaam ook in de recordset staat waarop het subformulier gebaseerd is kan je dit volgens mij via de Master-Detail properties aangeven en dan zoekt Access het verder zelf uit.

  • MrMartinH
  • Registratie: Juni 2001
  • Laatst online: 29-07-2024
Het werkt nog niet :'(

Wellicht zal ik wat fout doen, maar heb de code gekopied maar werkt niet, heb namen aangepast zodat die overeen komen met mijn namen, werkt niet, code geprobeerd als "Gebeurtenis opbouwen" voor het tekstvak, werkt ook niet met verschillende namen.

Als ik de code zo in het formulier zet dan geeft ie een fout aan, als ik het als gebeurtenis zet voor het tekstvak dan werkt alles gewoon zoals het voorheen ook werkte alleen dan zonder selectieknopje.
En als de productnaam ook in de recordset staat waarop het subformulier gebaseerd is kan je dit volgens mij via de Master-Detail properties aangeven en dan zoekt Access het verder zelf uit.
Wat bedoel je hier eig mee?

Signature


  • Lister
  • Registratie: September 2001
  • Laatst online: 15-02-2022
Wat voor foutmelding krijg je dan?
Je moet inderdaad wel de namen van de controls aanpassen aan jouw eigen naamgeving, en de juiste controls
txt is een textbox, chk is een checkbox (aanvinkvakje:?) en sfm is een subform object.

Je kan makkelijk controleren of het de juiste namen zijn door na het "."-teken achter Me te gaan staan met je cursor en dan Control-Spatie te gebruiken, als het een goede naam is dan springt Access naar het einde, zo niet dan krijg je een lijstje met mogelijk namen.


En over die Master/Detail relaties, als je de Access Wizard gebruikt om een subform op je form te zetten dan vraagt Access hoe je het subform wil linken aan het hoofdform en dat is de Master/Detail relatie.

  • Bud_s
  • Registratie: Maart 2002
  • Laatst online: 27-08 14:13
form en subform werken bijna automatisch als je eerst een query maakt over twee tabellen met een 1-op-veel relatie, en vervolgens de fromulieren wizzard (gebasseerd op die query) eroverheen gooit.

@Lister: ik denk dat TS ergens in een Boolean (waar / onwaar) veld wil maken, en daar van afhankelijk het subformulier wil openen.
Jouw code voorbeeld zal wel werken , echter is het Hard-coded.
Komen er nieuwe records waar dit voor geld zal steeds de code moeten worden aangepast, in mijn ogen niet echt een fraaie oplossing

  • Lister
  • Registratie: September 2001
  • Laatst online: 15-02-2022
Bud_s schreef op 15 december 2003 @ 00:41:
@Lister: ik denk dat TS ergens in een Boolean (waar / onwaar) veld wil maken, en daar van afhankelijk het subformulier wil openen.
Jouw code voorbeeld zal wel werken , echter is het Hard-coded.
Komen er nieuwe records waar dit voor geld zal steeds de code moeten worden aangepast, in mijn ogen niet echt een fraaie oplossing
Ik heb het niet expliciet vermeld maar ik was er eigenlijk vanuit gegaan dat de betreffende tabel in ieder geval een tekstveld en ook een boolean veld bevat.
En dat boolean veld is aan de checkbox chkGebruikSubForm gekoppeld in mijn code.

Zelf ben ik ook een fervent tegenstander van zaken "hard" coderen, ik heb zelfs vaak de neiging om zaken zó algemeen op te zetten dat het eigenlijk weer te ingewikkeld wordt.

Het stuk code "Me.txtProductNaam = "Koelers"" typen deed eigenlijk ook pijn aan mijn hart ;) maar het leek me in dit geval handiger om eerst het echte probleem van de TS proberen op te lossen. En dan later kunnen we het eventueel hebben over de flexibiliteit van de code.

  • MrMartinH
  • Registratie: Juni 2001
  • Laatst online: 29-07-2024
heb nu dit:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub Selectievak_Click()
    If Me.Productnaam = "Koelers" Then
     Me.Selectievak.Visible = True
     If Me.Selectievak.Value Then
        Me.afdrukscherm1.Visible = True
     Else
        Me.afdrukscherm1.Visible = False
     End If
     Else
        Me.Selectievak.Visible = False
        Me.afdrukscherm1.Visible = False
  End If
End Sub


Selectievak is dus vakje waar vinkje in komt te staan.
Productnaam = naam van het product in het tekstvak (tekstvak naam is producten)
afdrukscherm1 = naam van het subforum

Signature


  • Lister
  • Registratie: September 2001
  • Laatst online: 15-02-2022
Dat was ik inderdaad vergeten, je moet ook een actie ondernemen als het selectievakje aangeklikt wordt.

Je hebt dus het Form_Current eventcode nodig om de controls/subforms te laten tonen als je door de records heen blader.
En dan heb je het Selectievak_Click eventcode nodig om bij wijzigingen het subform te laten tonen of niet. Het kan trouwens ook het After_update event zijn, deze gaat af als een gebruiker de waarde wijzigt.

In het Selectievak_Click event hoef je trouwens strikt genomen niet te controleren op de textbox-waarde omdat in principe het Selectievak alleen geklikt kan worden als deze zichtbaar is en er dus een geldige waarde in de textbox staat.

Ook zou je nog bij een wijziging van de textbox opnieuw moeten controleren of de controls/subforms getoond moeten worden, als men de textbox tenminste mag wijzigen.

Als je de volgende keer post wat je hebt zet er a.u.b. dan ook even bij wat er nu wel en wat niet werkt, da's wel zo handig.

  • MrMartinH
  • Registratie: Juni 2001
  • Laatst online: 29-07-2024
Oh yah sorry :)

Nou ja, als ik het aanvinkhokje zichtbaar maak dan werkt dat wel met het subform aan en uitvonken. Ik gebruikte hier deze code voor:

code:
1
2
3
Private Sub Selectievak_Click()
afdrukscherm1.Visible = Selectievak
End Sub


Met het selectievakje uiteraard op zichtbaar ingesteld.

Die andere code die ik hierboven heb geplaatst geeft helemaal geen fout aan. Het formulier werkt wel en ik kan alles doen, maar het selectievakje verschijnt gewoon niet als de naam van het product in het tekstvak Koelers is (of wat dan ook, geen enkele werkt).

Signature


  • MrMartinH
  • Registratie: Juni 2001
  • Laatst online: 29-07-2024
hey het werkt :D

deze code:

code:
1
2
3
4
5
6
7
Private Sub Form_Current()
 If Me.Productnaam = "Koelers" Then
    Me.Selectievak.Visible = True
 Else
    Me.Selectievak.Visible = False
 End If
End Sub


Maar moet ik nu voor elk product een appart selectievakje maken + een apparte code?

In ieder geval bedankt tot zover.

[ Voor 4% gewijzigd door MrMartinH op 16-12-2003 00:06 ]

Signature


  • Bud_s
  • Registratie: Maart 2002
  • Laatst online: 27-08 14:13
Niet voor elk artikel een selectievakje, maar een veld (type boolean) in je record opnemen

Boolean = een Waar/NietWaar veld. De veldnaam zal iets in de trend van : ShowSubForm zijn (of iets dergelijks)

een CheckBox is ook een Boolean :)

Zie ook de reply van Lister op mijn post :)

offtopic:
met Lister kan ik praten :)

[ Voor 6% gewijzigd door Bud_s op 16-12-2003 00:46 ]


  • MrMartinH
  • Registratie: Juni 2001
  • Laatst online: 29-07-2024
Ik snap je denk ik niet helemaal (i'm so hulpeloos :P).

Maar goed gedeelte van selectievakje snap ik. Moet ik dan wel een apparte code hebben steeds?

Signature

Pagina: 1