Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[Access 2003] Rapport lay out gebruiken

Pagina: 1
Acties:

  • Rudy
  • Registratie: Mei 2007
  • Laatst online: 24-06-2024
Ik heb een Access database gemaakt, maar begin het overzicht een beetje te verliezen.

kort uitgelegd hebben we 1 tabel.
Dan zijn er 15 query's en 15 rapporten.
Deze rapporten kan je oproepen via een schakelbord.

Al deze rapporten hebben dezelfde lay-out, ze pakken alleen informatie van een andere query.
Als ik 1 klein ding wil veranderen in de lay out, moet ik dat dus 15 keer doen.
Is het niet mogelijk om 1 rapport te hebben, en via het schakelbord regelen welke query hij dan moet oproepen?

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Gokje: die query's verschillen alleen in filter [where] voorwaarden? Dan zou ik die meegeven. ;)

[ Voor 4% gewijzigd door Lustucru op 16-10-2009 11:42 ]

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


  • Rudy
  • Registratie: Mei 2007
  • Laatst online: 24-06-2024
De query's verschillen in criteria.
Maar ga er even mee spelen, heb al een idee ;)
Ondertussen hoor ik graag meer suggesties

  • Moirraine
  • Registratie: Mei 2008
  • Laatst online: 13-02-2024
Wat lustucru zegt. Persoonlijk zou ik de criteria (de "WHERE Jouwtabel.JouwVeld = x" delen in de query) inderdaad wegzetten naar een publieke variabele en dan de volgende code aan het rapport toevoegen:

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub Report_Open(Cancel As Integer)

    'Access zet standaard ";" achter een recordsource, controleer hier op
    If Right(Me.RecordSource, 1) <> ";" Then
       
         'Voeg een spatie toe zodat "Where" niet direct vastgeplakt zit aan de rest van de query
        Me.RecordSource = Me.RecordSource & " " & JouwVariabele
    
    Else
        
        Me.RecordSource = Left(Me.RecordSource, Len(Me.RecordSource) - 1) & " " & JouwVariabele
    
    End If

End Sub

  • Rudy
  • Registratie: Mei 2007
  • Laatst online: 24-06-2024
Dank je voor je reactie.

Dus als ik het goed heb, moet ik het volgende doen in de programmacode van het rapport zetten.
(ik heb geen verstand van code)


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Private Sub Report_Open(Cancel As Integer)

    'Access zet standaard ";" achter een recordsource, controleer hier op
    If Right(Me.RecordSource, 1) <> ";" Then
       
         'Voeg een spatie toe zodat "Where" niet direct vastgeplakt zit aan de rest van de query
        Me.RecordSource = Me.RecordSource & " " & WHERE [totaal fleet compleet].[bedrijf]="bedrijf 1"


    Else
        
        Me.RecordSource = Left(Me.RecordSource, Len(Me.RecordSource) - 1) & " " & WHERE [totaal fleet compleet].[bedrijf]="bedrijf 1"
    
    End If

End Sub

[ Voor 7% gewijzigd door Rudy op 16-10-2009 15:53 ]


  • Moirraine
  • Registratie: Mei 2008
  • Laatst online: 13-02-2024
Niet helemaal ;)

Bij het drukken op de knop op het schakelbord open je nu een rapport met een bepaalde query er onder. Deze query ziet er uit als iets van:
code:
1
SELECT FleetName, FleetCost FROM [totaal fleet compleet] WHERE [totaal fleet compleet].[bedrijf] = "bedrijf1"


Wat je doet is onder het rapport te recordbron instellen op:
code:
1
SELECT * FROM [totaal fleet compleet]


in een module in VBA declareer je:
Visual Basic:
1
Public pstrWhereClause As String


Bij het drukken op de knop voor het rapport die dus het criterium "bedrijf1" heeft voeg je het volgende toe (tekst als criterium doe je met single quotes):
Visual Basic:
1
pstrWhereClause = "WHERE [totaal fleet compleet].[bedrijf] = 'bedrijf1'"


Op deze manier gooi je elk criterium achter bijbehorende knop.

Dan de volgende code:

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub Report_Open(Cancel As Integer)

    'Access zet standaard ";" achter een recordsource, controleer hier op
    If Right(Me.RecordSource, 1) <> ";" Then
       
         'Voeg een spatie toe zodat "Where" niet direct vastgeplakt zit aan de rest van de query
        Me.RecordSource = Me.RecordSource & " " & pstrWhereClause 
    
    Else
        
        Me.RecordSource = Left(Me.RecordSource, Len(Me.RecordSource) - 1) & " " & pstrWhereClause 
    
    End If

End Sub

  • Rudy
  • Registratie: Mei 2007
  • Laatst online: 24-06-2024
Bedankt!

Ik zal het maandag implementeren.
Hier ben ik zo blij mee. Scheelt me iedere keer 15 keer werk!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Maandag ben je minder blij met de foutmeldingen die je voor je kiezen gaat krijgen :+ En als je die hebt opgelost ga je erachter komen dat je niet weet hoe je die criteria achter een knop gaat hangen. Dus geen gedoe met globale variabelen en aanpassen van report code maar:


1: Maak één rapport dat álle records weergeeft.
2: Open de tabel switchboard items en voeg er het veld "condition" aan toe
3: Open het schakelbordformulier, ga naar codeweergave, zoek de open report code en wijzig die code als volgt.
code:
1
2
3
        ' Open a report.
        Case conCmdOpenReport
            DoCmd.OpenReport rs![Argument], acPreview, , Nz(rs!condition)

4: Type in de swicthboardtabel vor iedere knop de criteria in het veld condition, zonder wherestatement bv
[totaal fleet compleet].[bedrijf]='bedrijf 1'

[ Voor 6% gewijzigd door Lustucru op 16-10-2009 17:01 ]

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


  • Rudy
  • Registratie: Mei 2007
  • Laatst online: 24-06-2024
ah ok. Fijn dat je het nog voor maandag meld dan O+

Nog een vraagje.

Op ieder rapport, staat normaal groot de naam van het bedrijf op.
Op het rapport van bedrijf 1 staat ''Bedrijf 1'' bijvoorbeeld.
Kan ik dit ook automatisch laten genereren?

Verwijderd

Ja, dat kan. Probeer eens met in dat zelfde vak:
=bedrijf
(ik zou het ook uit moeten proberen, maar volgens mij gaat dat wel lukken)

  • Rudy
  • Registratie: Mei 2007
  • Laatst online: 24-06-2024
Ik heb de bedrijfsnaam weergegeven als een bijschrift.
Als ik bij bijschrift =Bedrijf (of ="bedrijf") invul, gebeurt er niks.
Is er een ander vak waar ik dat moet invullen? Of heb ik daar een heel ander iets voor nodig als een bijschrift.

edit1: Als ik het als Tekstvak probeer ( =[bedrijf]) Krijg ik #fout.
Ik ben in ieder geval al op de goede weg.


edit2: Ik denk dat ik al weet waar het probleem ligt.
Het rapport test haalt zijn gegevens uit query testquery De query haalt zijn gegevens weer uit de Totaal fleet compleet
Testquery Heeft als criteria WHERE ((([Totaal fleet compleet].bedrijf)="bedrijfsnaam"));

Deze is dus niet zichtbaar in de query zelf.
Als ik Bedrijf zichtbaar maak in de query, moet het rapport deze hier uit kunnen vissen.

Edit3: Zoals hierboven beschreven, is het gelukt :)
Ik ga vandaag of morgen proberen de oplossing van Lustrucu te implementeren.

[ Voor 64% gewijzigd door Rudy op 19-10-2009 11:52 ]

Pagina: 1