Toon posts:

[access] Schakelbord

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

Verwijderd

Topicstarter
Ik heb voor mijn database een schakelbord. Het probleem is echter dat ik formulieren wil openen in "alleen lezen" mode. Hier heb ik een functie voor geschreven ( loadFormRead(formname) ).

Nu wil ik deze functie dus aanroepen vanuit het schakelbord. Ik dacht dat ik mijn fuctie kon aanroepen door opdracht "Programmacode uitvoeren" en dan in functie de functie aanroep te plaatsen. Maar helaas. Als ik zelf ff een knopje op een formulier zet en bij onClick de functie aanroep gaat het allemaal wel goed. Mijnn functie opzich werkt dus.

Mijn vraag is dus, hoe roep ik een functie aan vanuit het schakelbord.

  • TheXception
  • Registratie: December 2003
  • Niet online
De code zet je in het te open formulier in de properties van het form zelf, dus niet in het schakelbord.

In het form maak je een gebeurtenisprocedure aan:
code:
1
2
3
Private Sub Form_Open(Cancel As Integer)
Me.AllowEdits = False
End Sub


Als je daarnaast ook niet wilt dat mensen kunnen toevoegen of verwijderen nog even de volgende 2 regels code toevoegen:
code:
1
2
Me.AllowAdditions = False
Me.AllowDeletions = False


of zie ik het nu te simpel |:(

"It's better to burn out, than to fade away"


Verwijderd

Definieer in het Schakelbord de Functie als: sbFunctie,Formulier1

Definieer een procedure:
Public Sub sbFunctie(ByVal sForm As String)
MsgBox "Form: " & sForm
End Sub

Pas de module HandleButtonClick van het Schakelbordformulier aan:
' Run code.
Case conCmdRunCode
Dim Args() As String
Args = Split(rs![Argument], ",")
If UBound(Args()) = 1 Then
Application.Run Args(0), Args(1)
Else
Application.Run rs![Argument]
End If

Maak er wat moois van!

Verwijderd

Topicstarter
Helaas is het in het formulier opnemen van de code geen optie. Wat ik wil is een formulier openen in alleen lezen modus en als je dan bewust gegevens wil wijzigen moet je op een knopje drukken(er worden teveel gegevens perongeluk aangepast).

Ik kan het formulier wel via een macro openen maar dat betekend dat ik voor ieder formulier een aparte macro moet toevoegen, geen fijne situatie. Daarop probeer ik de code dus algemeen te maken via een functie.

  • TheXception
  • Registratie: December 2003
  • Niet online
Verwijderd schreef op 10 juni 2004 @ 17:59:
Helaas is het in het formulier opnemen van de code geen optie.
Waarom is dat geen optie. :?
Achter de knop kun je toch weer code opnemen om het wel editable te maken, zoiets bijvoorbeeld:
code:
1
2
3
4
5
Private Sub Knopje_Click()
Me.allowedits = true
Me.AllowAdditions = true
Me.AllowDeletions = true
End Sub
Dat zou het toch moeten doen?

"It's better to burn out, than to fade away"


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

De standaardcode die de schakelbordwizard genereert kan inderdaad geen functies aanroepen met parameters. Om te doen wat je wilt moet je dus de code veranderen in het schakelbordformulier, zoals tjiba schrijft. Maar het kan wel eenvoudiger.
Zoek de regel op met:
code:
1
Application.Run rs![Argument]

en wijzig die in
code:
1
eval rs!argument

en geef als parameter in het schakelbordformulier mee:
jefunctie('formuliernaam')

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

Pagina: 1