11. VBA: navigatie

Naarmate een database groeit, bevat ze meer objecten: meer tabellen, query's, formulieren, rapporten, macro's, VBA-code, ...

Zowel de programmeur als de gebruiker moeten hun weg vinden in die overdaad.

11.1. Een navigatieformulier maken

Het navigatieformulier is de vervanging van het schakelbord uit vroegere versies van Access.
Zoals je kan lezen in oefening Facturatie onder punt 6, zal je meestal verscheidene navigatieformulieren in elkaar passen tot je de totale structuur naar wens bekomt.

Algemene werkwijze:

  1. Sluit alle nog geopende objecten en kies dan op lint Maken de optie Navigatie in sectie Formulieren.
  2. Voorzie verticale tabbladen voor alle "submenu's" en sleep de nodige formulieren en/of rapporten erop. Pas de labels aan naar wens.
  3. Maak tenslotte een navigatieformulier met horizontale tabbladen en voeg daaraan de vorige navigatieformulieren toe.
  4. Voorzie een procedure bij gebeurtenis Bij Openen: DoCmd.Maximize
  5. Sla alles op en sluit.
  6. Kies op lint Bestand – Opties en activeer tabblad Huidige Database.
    • Selecteer het navigatieformulier in de keuzelijst bij Formulier Weergeven, zodat dit formulier geopend wordt zodra je de database opent.
  7. In datzelfde optievenster, wat verder naar beneden, deactiveer je de optie Navigatiedeelvenster Weergeven.

De volgende keer dat de database opgestart wordt ziet de gebruiker enkel het gemaximaliseerde startformulier.

11.2. Een eigen lint

Je kan zelf een nieuw lint definiëren en dan via VBA beheren. Vanaf versie 2007 moet je daarvoor wel wat XML kennen.
Werkwijze:

  1. Rechtsklik op de titel van het navigatiedeelvenster en kies Navigatieopties om de systeemobjecten zichtbaar te maken.
  2. Voeg tabel USysRibbons toe met drie velden:
    • veld ID: AutoNummering, sleutel
    • veld RibbonName: Korte tekst
    • veld RibbonXml: Lange tekst
  3. Sla op en vul al een naam voor je aangepast lint in in veld RibbonName.
  4. Typ de XML met de lintopties in een teksteditor, vb. Notepad(++) en plak die daarna in veld RibbonXml.
    • Hieronder een voorbeeldje van een (klein) lint met één optie:
    • <customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" >
    • <ribbon startFromScratch="true">
    •   <tabs>
    •     <tab id="eersteTab" label="Mijn Lint">
    •       <group id="groep1" label="Eerste groep">
    •         <button id="knop1" label="Een knop" size="normal" onAction="menuActies" imageMso="K" />
    •       </group>
    •     </tab>
    •   </tabs>
    • </ribbon>
    • <backstage>
    •     <button idMso="ApplicationOptionsDialog" visible="false"/>
    • </backstage>
    • </customUI>
    • Voor meer informatie: zie www.acessribbon.de
    • De lijst met alle mogelijke figuren (imageMso) vind je op Microsoft.
  5. Open de VBA-editor en kies in menu Extra – Verwijzingen. Activeer optie Microsoft Office 15.0 Object Library.
  6. Maak een algemene module in je Accessdatabank om te bepalen wat er moet gebeuren als de gebruiker een optie kiest, bv. een formulier openen:
    • Sub menuActies(control As IRibbonControl)
    •   Select Case control.Id
    •   Case "knop1"
    •     DoCmd.OpenForm "Eersteform", acNormal
    •   End Select
    • End Sub
  7. Kies in Access bij Bestand – Opties tabblad Huidige Database en typ de naam die je in RibbonName typte in de keuzelijst bij Naam Lint. Vink beide opties eronder uit.
  8. Herstart de database en je ziet enkel je zelf gemaakte lint
    • (PS: toch alle linten nodig? Houd de spatiebalk in terwijl je dubbelklikt om de database te openen).