Report wizard met VBA maar keuze uit 1 tabel.

Status
Niet open voor verdere reacties.

kevinr1

Gebruiker
Lid geworden
7 okt 2010
Berichten
110
Hallo allemaal,

Heb met een VBA code gezorgd dat de Report Wizard tool opstart:

Code:
Option Compare Database

Private Sub Command47_Click()



On Error GoTo PROC_ERR

DoCmd.RunCommand (acCmdNewObjectReport)

PROC_EXIT:
    Exit Sub

PROC_ERR:
    
   If Err.Number <> 2501 Then
       MsgBox "Error: (" & Err.Number & ") " & Err.Description, vbCritical
   End If
   Resume PROC_EXIT
End Sub


Geen enkele foutcode bij het annuleren. Alleen als de wizard start zie je gelijk een venster met: Welke tabel wilt u pakken?
Kan ik niet met een VB code zorgen dat hij Automatisch tabel "XYZ" pakt en niet kan switchen naar een andere tabel.

asdfasdf.png


*(als je naar de foto kijkt zie je dus 2 tabellen, medewerkers en klachten. Ik wil dit graag 'forceren' naar klachten en dat je niet kan wijzigen van Tabel.
 
De wizard pakt per definitie de eerste tabel, ook als je de wizard zonder VBA gebruikt. Dus aan het commando zelf kun je eigenlijk niks doen. Maar je kunt de toetsaanslagen die nodig zijn om een tabel te selecteren wel nabootsen met het commando SendKeys. Dat ziet er dan zo uit:

Code:
    SendKeys "%t", False
    SendKeys "+{HOME}", False
    SendKeys "Tabel: Overuren", False
    SendKeys "{TAB}", False
    DoCmd.RunCommand (acCmdNewObjectReport)

In dit voorbeeld word de tabel Overuren geselecteerd, en de cursor op het eerste veld gezet.
 
Is het ook mogelijk om 1 tabel onzichtbaar/niet zichtbaar te maken voor de "Report Wizard" via VBA?
En als er een nieuw Rapport is toegevoegd dat het bij afsluiten verwijderd wordt?
 
Dat kan, als je de eigenschap van de tabel op <Verborgen> zet. Dat ziet er zo uit:

Code:
    Application.SetHiddenAttribute acTable, "Test", True

Door True door False te vervangen, maak je de tabel weer zichtbaar. Hetzelfde geldt overigens voor je queries.
 
Vraag is eigenlijk, wat is de bedoeling van deze aanpak?
Normaal gesproken zijn wizards bedoelt om te gebruiken tijdens de ontwikkeling van een programma (als je ze al wilt gebruiken). Dus is het gebruik van VBA in deze niet zo voor de hand liggend. Wil je echter gebruikers van het programma vrije overzichten/rapporten laten maken, dan moet je dat anders aanpakken. Dat is overigens best een klus, maar kan wel.
 
Nice, het verbergen werkt.

Ja ik wil 'gebruikers' een overzicht laten maken van maar 1 tabel. ( heb maar 2 tabellen -.- ).
Lukt wel met de code die je gebruikt. Alleen na het annulleren is mijn tabel nog steeds verborgen :O!

( Code:
Code:
Private Sub Command47_Click()



On Error GoTo PROC_ERR
    SendKeys "%t", False
    SendKeys "+{HOME}", False
    SendKeys "Tabel: Klachten", False
    SendKeys "{TAB}", False
Application.SetHiddenAttribute acTable, "Medewerkers", True
DoCmd.RunCommand (acCmdNewObjectReport)

PROC_EXIT:
    Exit Sub

PROC_ERR:
    
   If Err.Number <> 2501 Then
       MsgBox "Error: (" & Err.Number & ") " & Err.Description, vbCritical
   End If
   Resume PROC_EXIT
End Sub
 
Je moet ook ergens een opdracht doen die de tabel weer zichtbaar maakt.... Nu verberg je hem alleen maar. Je zou dat overigens met een macro kunnen doen, die een procedure opstart. De macro noem je dan AutoExec, en de procedure bijvoorbeeld TabelZichtbaar. In de macro neem je dan een commando op die de procedure TabelZichtbaar uitvoert, zodat bij het openen van de db alle tabellen zichtbaar zijn.

Overigens snap ik ook niet waarom je deze hele trucendoos opentrekt; doorgaans maakt de ontwerper van de db alle rapporten die nodig zijn, zodat een gebruiker daar helemaal niet bij hoeft. En als het voor jezelf, als ontwerper is, dan weet je toch wel hoe je de wizard op start?
 
Ik zou zeggen: de beheerder maakt een aantal standaard rapporten, en de gebruikers drukken die vervolgens af. Desnoods geef je ze nog een aantal filtermogelijkheden. Maar op deze manier krijg je een wildgroei aan rapporten in je db, en volgens mij moet je dat helemaal niet willen... Tenzij je met een Frontend en Backend situatie werkt, waarbij iedereen zijn eigen frontend db heeft. Dan is het wat minder schadelijk voor de db. Maar gebruikers zelf rapporten laten maken? Not on my watch....
 
Ja idd, maar ik dacht dat het mogelijk was als om in de VBA code neer te zetten dat als het bepaalde rapport gesloten wordt dat ook gelijk het rapport verwijderd wordt.
Hoe zorg ik dan op een logische manier dat als gebruikers op een 'knopje' klikken dat ze dan een overzicht kunnen maken van een tabel ( die tabel kunnen gebruikers niet zien ).
 
Een database is geen Excel bestand, waarin je een beetje kunt modderen. Het gebruik ervan moet je dus strak regelen.
Gebruikers moet je uit de buurt van tabellen houden; en je moet ze bij voorkeur dus ook niks hoeven te laten maken. Als er behoefte is aan een bepaalde vorm van rapportage, dan maak je daar een (bij voorkeur algemeen bruikbare )query voor, die je aanstuurt via een formulier, waarop dan eventuele selecties gemaakt kunnen worden. Daarop maak je dan ook knoppen die een rapport genereren op basis van query+selectie, of desnoods een exportbestand voor Excel, zodat ze daarin kunnen stoeien met de cijfertjes en gegevens.
 
Een database is geen Excel bestand, waarin je een beetje kunt modderen. Het gebruik ervan moet je dus strak regelen.

Snap ik.

Gebruikers moet je uit de buurt van tabellen houden; en je moet ze bij voorkeur dus ook niks hoeven te laten maken.
Ja, ze moeten dus een overzicht kunnen maken. Nu kan ik dus het beste een formulier maken met daarop 'Yes/No' knopjes die ze kunnen kiezen en daaruit een bepaald overzicht maken?
 
Dat zou ik zo wel doen. En dus een paar standaardrapporten... Overigens: als je wel eens een rapport hebt gemaakt met de wizard, dan zul je ongetwijfeld tot de conclusie zijn gekomen dat het nogal stevig bewerkt moest worden om er enigszins fatsoenlijk uit te rollen. Alleen daarom al moet je gebruikers geen eigen rapporten laten maken, want ze zijn vermoedelijk meer tijd met het aanpassen van het rapport (wat ze vaak zelf niet eens kunnen, want het is best ingewikkeld...) dan het zelf overtypen ;)
 
In veel van de programma's die ik maak zit een mogelijkheid voor 'vrije overzichten'.
Gebruikers kunnen dan o.a.:
* een recordset kiezen
* velden kiezen en in een bepaalde volgorde zetten
* filters maken en sorteren
* breedte van de velden aanpassen zodat alles goed in het rapport komt.

Omdat het nogal wat tijd vergt om daar een voor hier toepasselijk voorbeeldje van te maken, en dat ik natuurlijk niet de enige ben die zoiets maakt, verwijs ik je graag naar de site van Duane Hookom (Access MPV)
http://www.access.hookom.net/Samples.htm
Bij de voorbeelden op deze site staat o.a. wat jij zoekt. Je moet wel wat van VBA afweten om e.e.a. goed te kunnen toepassen in jouw database
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan