Overzicht navigatie-code

  • Onderwerp starter Onderwerp starter SA3
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

SA3

Gebruiker
Lid geworden
3 jan 2016
Berichten
130
Ik heb een programma gemaakt met een aantal navigatieformulieren.
Ieder navigatie-formulier heeft een aantal tabbladen en een aantal knoppen voor Print en Excel e.d.
Per navigatieblad heb ik vba-code die ook in andere bladen terug komt.

Hoe kan ik al deze code overzichtelijk houden of uniform maken b.v. één code-lijst die voor alle bladen van toepassing is?
 
Klinkt als een gedrocht... (no offence :)). Begin eens met het aantal navigatieformulieren terug te brengen; de bedoeling daarvan is tenslotte dat je met één navigatieformulier kunt volstaan. Als je er zoveel hebt, gebruik je vermoedelijk teveel formulieren voor dezelfde taken. Denk aan een formulier voor elke medewerker die is gebaseerd op een selectie van dezelfde tabel/query voor die medewerker.... Lijkt een goed idee, is het niet. Dus voor elke toepassing één formulier dat je filter op gebruiker. Scheelt al een boel, als je het tenminste zo hebt opgebouwd.
 
Ik had één formulier met daarop een aantal knoppen voor diverse functies. Er kwamen echter knoppen bij waardoor het er rommelig uit ging zien.
Nu heb ik een Hoofdmenu-formulier met daarop een aantal functieknoppen die naar hun eigen navigatie-formulier wijzen. Binnen die navigatie-formulieren zijn er weer subfuncties.
Ziet er voor de gebruiker overzichtelijk uit.

Bestaat niet de mogelijkheid één gemeenschappelijke (public of global) code te maken waarin alle knoppen en bijbehorende functies zijn opgenomen?
In betreffende navigatie-formulieren zou dan een call naar deze gemeenschappelijke code gedaan kunnen worden. Dan hoef je maar op één plaats je code te wijzigen.
 
Je kun functies best globaal maken, door ze naa een algemene module te verplaatsen bijvoorbeeld. Je zult dan wel een extra parameter mee moeten geven (het formulier namelijk).
 
Ik heb de volgende problemen:
- in een class-module heb ik meerdere procedures. Zij hebben een gemeenschappelijk path. Als ik dit path bovenin de module declareer, krijg ik de melding "buiten de procedure"
- in een global-module wil ik alle gemeenschappelijke functies/procedures zetten. Maar ik krijg geen verbinding tussen mijn procedures in de class-modules en de global-module
De global-module start ik op een load_form van het initiele formulier bij opstarten van de applicatie.
Wat te doen?
 
Ik heb een (standard) Module1 aangemaakt en hierin de constante Rapportmap gezet.
Hieronder de code uit mijn class Module. Ik krijg geen errormelding, maar het bestand wordt niet in mijn Rapportmap gezet.

Code:
Option Compare Database
Dim sControl As String
Dim Filenaam As String
''Const Rapportmap = "C:\Temp\AAD\Rapporten\"

Private Sub rptActieveLeden_Click()
    sControl = Me.rptActieveLeden.Caption
End Sub

Private Sub rptProjectLeden_Click()
    sControl = Me.rptProjectLeden.Caption
End Sub

Private Sub Excel_Click()
    Filenaam = Rapportmap & sControl & ".xls"
    MsgBox Filenaam
    DoCmd.OutputTo acOutputReport, sControl, acFormatXLS, Filenaam
End Sub
 
Dat mag niet in een Class module; dit is code voor een gewone module.
 
Ik begrijp dit niet. Even voor mijn begrip:
- een gewone/standaard module is toch een globale module met code voor de hele applicatie? En een class-module gekoppeld aan een form of report?
- in een globale/standaard module mag ik toch variabelen, constanten en functies coderen die vanuit de specifieke classmodules aangeroepen kunnen worden?
- wat is het verschil in code?
 
Je hebt 3 soorten modules: globale modules (<Invoeren>, <Module>), formulier modules en Klasse modules (<Invoeren>, <Class Module>). Als jij het over een Class module hebt, dan heb je het vermoedelijk over iets anders als ik :).
 
Ik heb global variabelen en functies in een standaard (global) module gezet en kan ze vanuit mijn formulier (class?) module aanroepen.
Wat nog niet lukt is het doorgeven van argumenten bij een call naar een global functie. B.v. de filenaam meegeven vanuit de call in mijn formulier-module naar de print-functie in mijn standaard-module.
Hoe werkt dat?
 
De functie ExcelFile wordt aangeroepen vanuit een formulier. Alles lijkt te werken behalve de OutputTo. Dit cmd doet niets.
Wat doe ik fout?

FORMULIER-CODE:

Code:
Private Sub Excel_Click()
    Call Init_Globals
    Filenaam = Rapportmap & sControl
    Call ExcelFile(sControl, Filenaam)
End Sub


MODULE-CODE:

Code:
Public Function ExcelFile(sControl, Filenaam)
    If sControl = "" Then
       GoTo ErrorHandler2
    End If
    MsgBox "Het rapport " & sControl & " wordt weggeschreven op " & Rapportmap, vbInformation, "LEDENADMINISTRATIE"
    On Error GoTo ErrorHandler1
    DoCmd.OutputTo acOutputReport, sControl, acFormatXLS, Filenaam & ".xls"
        
ErrorHandler1:
    If Err.Number = 2501 Then
       MsgBox "Actie afgebroken", vbInformation, "TCOV LEDENADMINISTRATIE"
    End If
    Exit Function
    
ErrorHandler2:
    MsgBox "Klik op tabblad voor selectie van het rapport", vbInformation, "LEDENADMINISTRATIE"
    Exit Function

End Function
 
Sorry. Zelf opgelost m.b.v. de error-codes. Alles werkt zoals bedoeld.
 
Call kan weg bij je functie aanroepen :).
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan