hausi
Gebruiker
- Lid geworden
- 17 jan 2010
- Berichten
- 84
Hallo,
Ik zit al drie dagen te worstelen met een probleem om een formuliernaam door te geven aan een functie in een module.
Ik moet denk ik, eerst de opbouw van de formulieren uitleggen.
Als eerste heb ik een Hoofdformulier (frmHoofdMenu), dat is een navigatieformulier en, voor de duidelijkheid, geen tabcontrol.
Onder een van de navigatie tabs heb ik een formulier (frmHeadsetLuboBezetting) dat één subformulier (sfrmHeadSets) bevat, dat moeten er uiteindelijk drie worden dus deze opbouw is noodzakelijk.
sfrmHeadSets is niet afhankelijk en dus de besturingselementen ook niet. Als ik het formulier open door op de Navigatie Tab te klikken start een query die de besturingselementen vult met het laatste record uit de tblHeadSets.
Als een headset de status "Uitgeleend" heeft, wordt het naastgelegen besturingselement, "txtOmschrijving", ge-enabled en is het verplicht daar een naam in te vullen. Op het moment dat je de status van een andere headset wilt wijzigen, volgt er direct een controle of je het verplichte veld hebt ingevuld.
De code die in het sfrmHeadSets de functie aanroept is deze:
De functie zelf beperkt zich tot het controleren van de besturingselementen txtOmschrijving+nummer:
Dat werkt allemaal uitstekend.
Ik wil graag dat, als er op een andere Navigatie Tab wordt geklikt, het record wordt opgeslagen of bijgewerkt in de tabel zodat er niet een knop met "Opslaan" op het formulier geplaatst hoeft te worden.
Ik hoop dat het tot zover duidelijk is.
Op het moment van klikken op een andere Navigatie Tab moet er weer een validatie volgen omdat de status op "Uitgeleend" kan worden gezet zonder een naam in te vullen, en het record dan wordt opgeslagen zonder naam.
Hier beginnen de problemen.
Ik onderschep de gebeurtenis klikken op de navigatieknop en wil dan de validatie uitvoeren en de formuliernaam meegeven aan de functie, maar ik werk op dat moment niet in het sfrmHeadSets en kan dus niet "Me" gebruiken.
De code die ik dacht dat zou werken is:
Maar dat geeft de volgende foutmelding:
Ik heb me helemaal suf gezocht op het internet maar kan de oplossing niet vinden, ik hoop dat iemand hier een oplossing voor mijn probleem heeft.
Alvast bedankt voor het meedenken.
Ik zit al drie dagen te worstelen met een probleem om een formuliernaam door te geven aan een functie in een module.
Ik moet denk ik, eerst de opbouw van de formulieren uitleggen.
Als eerste heb ik een Hoofdformulier (frmHoofdMenu), dat is een navigatieformulier en, voor de duidelijkheid, geen tabcontrol.
Onder een van de navigatie tabs heb ik een formulier (frmHeadsetLuboBezetting) dat één subformulier (sfrmHeadSets) bevat, dat moeten er uiteindelijk drie worden dus deze opbouw is noodzakelijk.
sfrmHeadSets is niet afhankelijk en dus de besturingselementen ook niet. Als ik het formulier open door op de Navigatie Tab te klikken start een query die de besturingselementen vult met het laatste record uit de tblHeadSets.
Als een headset de status "Uitgeleend" heeft, wordt het naastgelegen besturingselement, "txtOmschrijving", ge-enabled en is het verplicht daar een naam in te vullen. Op het moment dat je de status van een andere headset wilt wijzigen, volgt er direct een controle of je het verplichte veld hebt ingevuld.
De code die in het sfrmHeadSets de functie aanroept is deze:
Code:
Private Sub cboStatus1_Enter()
Call CheckControls(Me) 'Me is de formuliernaam
End Sub
De functie zelf beperkt zich tot het controleren van de besturingselementen txtOmschrijving+nummer:
Code:
Public Function CheckControls(frm As Form)
Dim NumOmschr As String
For i = 1 To 9
NumOmschr = "[txtOmschrijving" & i & "]"
With frm.Controls(NumOmschr)
If .Tag = 1 Then
If .Value = "" Or IsNull(.Value) Then
MsgBox "Je hebt een headset uitgegeven" & vbNewLine & "zonder de naam in te vullen"
.SetFocus
Exit Function
Else
TempVars!Leeg = 0
End If
End If
End With
Next i
End Function
Ik wil graag dat, als er op een andere Navigatie Tab wordt geklikt, het record wordt opgeslagen of bijgewerkt in de tabel zodat er niet een knop met "Opslaan" op het formulier geplaatst hoeft te worden.
Ik hoop dat het tot zover duidelijk is.
Op het moment van klikken op een andere Navigatie Tab moet er weer een validatie volgen omdat de status op "Uitgeleend" kan worden gezet zonder een naam in te vullen, en het record dan wordt opgeslagen zonder naam.
Hier beginnen de problemen.
Ik onderschep de gebeurtenis klikken op de navigatieknop en wil dan de validatie uitvoeren en de formuliernaam meegeven aan de functie, maar ik werk op dat moment niet in het sfrmHeadSets en kan dus niet "Me" gebruiken.
De code die ik dacht dat zou werken is:
Code:
Private Sub navFormulieren_Enter() 'navFormulieren is een Navigatie Tab
If TempVars!Leeg = 1 Then 'Deze variabele wordt gezet op het moment dat de status verandert naar "Uitgeleend"
Dim frm As Form
Dim sName As String
Set frm = Form_sfrmHeadSets
sName = frm.Name
Call CheckControls(sName)
End If
Ik heb me helemaal suf gezocht op het internet maar kan de oplossing niet vinden, ik hoop dat iemand hier een oplossing voor mijn probleem heeft.
Alvast bedankt voor het meedenken.