Selected Record afdrukken (Formulier -> Rapport)

Status
Niet open voor verdere reacties.

pommeke

Gebruiker
Lid geworden
17 jul 2007
Berichten
237
Bekijk bijlage 109693
Hallo

Ik heb een formulier op basis van een query. :thumb:
Ik heb ook een rapport op basis van die query. :thumb:
Nu wil ik op het formulier een knop maken die het rapport afdrukt.
Maar het mag ALLEEN het rapport afdrukken met de gegevens die open staan op het formulier. :o

Kan iemand mij helpen?

In bijlage de database
Het gaat over rapport en formulier "FACTUUR"
 
Welk formulier, en welk rapport?
 
Gebruik deze code onder de knop op je formulier:

Code:
On Error GoTo Err_Command101_Click
Dim sFilter As String, stDocName As String
    stDocName = "Factuur"
    sFilter = "Factuurnr=" & Me.FactuurNR
    DoCmd.OpenReport stDocName, , , , , sFilter
    Exit Sub
Err_Command101_Click:
    MsgBox Err.Description

En zet dit als code bij het rapport:

Code:
Private Sub Report_Open(Cancel As Integer)
If Not Nz(Me.OpenArgs, "") = "" Then
    Me.Filter = Me.OpenArgs
    Me.FilterOn = True
Else
    Me.Filter = ""
    Me.FilterOn = False
End If
End Sub

De andere code (Private Sub Report_Load) zou ik weghalen, want die doet het toch niet...
 
Bedankt,

Dat werkt al
Maar nu volgende probleem
Als ik een nieuw record aanmaak en op print duw print hij een lege pagina af.
Hij moet dus eerst zijn gegevens bewaren.
Kan dit ook automatisch?
Is dat met If Me.Dirty Then Me.Dirty = False
 
Ja, dat kun je inderdaad zetten in de printopdracht voordat je het rapport opent. Met Me.Dirty controleer je of een object (formulier in dit geval is gewijzigd of niet. Bij toevoegen van een nieuw record is dat dus het geval. Met Me.Dirty=False worden vervolgens de wijzigingen opgeslagen.
 
Ja, dat kun je inderdaad zetten in de printopdracht voordat je het rapport opent. Met Me.Dirty controleer je of een object (formulier in dit geval is gewijzigd of niet. Bij toevoegen van een nieuw record is dat dus het geval. Met Me.Dirty=False worden vervolgens de wijzigingen opgeslagen.

OK, bedankt
 
ik heb hier ook een soortgelijks vraag over :o

ik heb een rapport die gegevens uit me tabel haal en ik heb een formulier die dat ook doet.

nu wil ik dat als ik bijv. nummer 100 kijk in mijn formulier, dat ik op een knop kan drukken en dat het rapport dan geopend wordt met nummer 100 (dus niet dat nummers onder mekaar komen te staan)

weet iemand dat misschien :) ?
 
Om te beginnen: het is niet netjes om in iemand anders zijn of haar topic een vraag te stellen; netter is uiteraard zelf een vraag starten!
Ten tweede: de code zoals die hierboven door mij is aangegeven, kun je bijna letterlijk overnemen. In ieder geval de code die je op het rapport moet zetten: die moet letterlijk worden overgenomen. De code waarmee je het rapport opent moet je wel een beetje aanpassen, omdat jouw ID veld uiteraard anders heet.
 
Terug een probleem

Bekijk bijlage 109711
Hallo,

Ik heb al terug een probleem.
Bij het nakijken van de berekeningen bleek dat ze fout waren.
Blijkbaar waren de formules in query FACTUUR verkeerd (namelijk velden TOT_FixVD en TOT_FixHD). Er stonden haakjes () te weinig.
Als ik nu in de query kijk, zie ik dat de berekening juist is.
Maar als ik diezelfde record bekijk in het formulier, staat er een heel ander getal.
1: Wat doe ik verkeerd?
2: Kan ik het getal in die velden laten afronden tot 2 cijfers na de komma?
 
Je gebruikt twee verschillende formules.
In de query:
TOT_FixVD: (([FixVD]*47)*23)/12
TOT_FixHD: (([FixHD]*47)*15)/12
In het formulier:
TOT_FixVD: ([FixVD]*48*23)/12
TOT_FixHD: ([FixHD]*48*15)/12
 
Je gebruikt twee verschillende formules.
In de query:
TOT_FixVD: (([FixVD]*47)*23)/12
TOT_FixHD: (([FixHD]*47)*15)/12
In het formulier:
TOT_FixVD: ([FixVD]*48*23)/12
TOT_FixHD: ([FixHD]*48*15)/12

Dat is dan wel raar, want in het formulier zelf worden toch geen berekeningen gemaakt?
Het geeft toch alleen maar weer wat er in de query staat en gebeurd?
Hoe heb je de berekening gevonden in het formulier?
Oorspronkelijk waren de formules in de query zoals jij ze weergeeft in het formulier, maar ik heb ze later aangepast.
 
Laatst bewerkt:
Het formulier heeft een Recordbron. In jouw geval is dat een specifieke query, namelijk deze:
Code:
SELECT Factuur.FactuurNR, Factuur.FactuurDatum, Factuur.KindNR, [Kind Tabel].[Naam Kind], Factuur.Jaar, Factuur.Maand, [Kind Tabel].FixVD, [Kind Tabel].FixHD, Factuur.FixZiek, Factuur.FixVerlof, Factuur.FixExtraVD, Factuur.FixExtraHD, Factuur.FlexVD, Factuur.FlexHD, Factuur.Boete, Factuur.Betaald, ([FixVD]*[B]48[/B]*23)/12 AS TOT_FixVD, ([FixHD]*[B]48[/B]*15)/12 AS TOT_FixHD, [FixZiek]*6 AS Tot_FixZiek, [FixVerlof]*6 AS Tot_FixVerlof, [FixExtraVD]*23 AS Tot_FixExtraVD, [FixExtraHD]*15 AS Tot_FixExtraHD, [Tot_FixVD]+[Tot_FixHD]-[Tot_FixZiek]-[Tot_FixVerlof]+[Tot_FixExtraVD]+[Tot_FixExtraHD] AS Tot_FIX, [FlexVD]*24 AS TOT_FlexVD, [FlexHD]*16 AS TOT_FlexHD, [TOT_FlexHD]+[TOT_FlexVD] AS Tot_FLEX, [Boete]*5 AS TOT_Boete, [Tot_FIX]+[Tot_FLEX]+[TOT_Boete] AS TOTAAL, [Kind Tabel].Fix, [Kind Tabel].Flex FROM [Kind Tabel] INNER JOIN Factuur ON [Kind Tabel].KindNR=Factuur.KindNR ORDER BY Factuur.FactuurNR;
Als ik je een kleine tip mag geven: gebruik een Opgeslagen query als bron voor je formulier. Niet alleen is dat overzichtelijker in de Recordbron, je kunt op je formulier dan ook Afhankelijke keuzelijsten maken, en dat is soms wel handig.
 
Het formulier heeft een Recordbron. In jouw geval is dat een specifieke query, namelijk deze:
Code:
SELECT Factuur.FactuurNR, Factuur.FactuurDatum, Factuur.KindNR, [Kind Tabel].[Naam Kind], Factuur.Jaar, Factuur.Maand, [Kind Tabel].FixVD, [Kind Tabel].FixHD, Factuur.FixZiek, Factuur.FixVerlof, Factuur.FixExtraVD, Factuur.FixExtraHD, Factuur.FlexVD, Factuur.FlexHD, Factuur.Boete, Factuur.Betaald, ([FixVD]*[B]48[/B]*23)/12 AS TOT_FixVD, ([FixHD]*[B]48[/B]*15)/12 AS TOT_FixHD, [FixZiek]*6 AS Tot_FixZiek, [FixVerlof]*6 AS Tot_FixVerlof, [FixExtraVD]*23 AS Tot_FixExtraVD, [FixExtraHD]*15 AS Tot_FixExtraHD, [Tot_FixVD]+[Tot_FixHD]-[Tot_FixZiek]-[Tot_FixVerlof]+[Tot_FixExtraVD]+[Tot_FixExtraHD] AS Tot_FIX, [FlexVD]*24 AS TOT_FlexVD, [FlexHD]*16 AS TOT_FlexHD, [TOT_FlexHD]+[TOT_FlexVD] AS Tot_FLEX, [Boete]*5 AS TOT_Boete, [Tot_FIX]+[Tot_FLEX]+[TOT_Boete] AS TOTAAL, [Kind Tabel].Fix, [Kind Tabel].Flex FROM [Kind Tabel] INNER JOIN Factuur ON [Kind Tabel].KindNR=Factuur.KindNR ORDER BY Factuur.FactuurNR;
Als ik je een kleine tip mag geven: gebruik een Opgeslagen query als bron voor je formulier. Niet alleen is dat overzichtelijker in de Recordbron, je kunt op je formulier dan ook Afhankelijke keuzelijsten maken, en dat is soms wel handig.


Wat bedoel je met een "opgeslagen query"?
 
Je query [Query Facturen] heb je opgeslagen; die vind je in het overzicht Query terug. De SQL string die op het formulier gebruikt wordt, heb je nog niet als zodanig opgeslagen. Overigens kan dat vrij simpel, door op de knop met de drie puntjes te klikken. Je komt dan in het Query-ontwerpscherm. Als je daarin de query opslaat, en een naam geeft, en vervolgens het queryscherm sluit, heeft Access de sql vervangen door de opgeslagen query.
 
Je query [Query Facturen] heb je opgeslagen; die vind je in het overzicht Query terug. De SQL string die op het formulier gebruikt wordt, heb je nog niet als zodanig opgeslagen. Overigens kan dat vrij simpel, door op de knop met de drie puntjes te klikken. Je komt dan in het Query-ontwerpscherm. Als je daarin de query opslaat, en een naam geeft, en vervolgens het queryscherm sluit, heeft Access de sql vervangen door de opgeslagen query.

Bekijk bijlage 109745

Ok, ik denk dat ik het juist gedaan heb.
Nu de getallen nog kunnen afronden tot 2 cijfers na de komma.
 
Ik heb er een afrond functie bijgezet; in de factuur query is hij toegepast. Kijk maar of je hem kunt gebruiken.
 
Ik heb er een afrond functie bijgezet; in de factuur query is hij toegepast. Kijk maar of je hem kunt gebruiken.

Bedankt,

Het werkt in de query "FACTUUR".
Maar:
Het werkt niet in de query die ik heb moeten maken om de gegevens in het formulier de krijgen.(QueryFacMakenForm)

Wat ik mij eigenlijk afvraag?
Ik heb nu 2 query's die eigenlijk hetzelfde doen
Alleen de laatst genoemde wordt gebruikt voor de gegevens van het formulier.

Mag ik de 1ste dan niet verwijderen?
 
Als de twee queries exact hetzelfde zijn/doen, dan kun je denk ik wel met één query volstaan. Het maakt voor Access niet uit hoe vaak je een query gebruikt in een formulier of rapport.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan