Rapport via formulier met query

Status
Niet open voor verdere reacties.

MBROEKHUIZEN

Gebruiker
Lid geworden
18 sep 2002
Berichten
24
Ik heb access een database gemaakt voor facturen. In een formulier maak ik de factuur. Vervolgens druk ik op een knop in formulier om naar het rapport te gaan. Dit gaat via een query.

Dus dan moet ik het nummer invoeren van de factuur die ik het scherm heb staan. Mijn vraag is hoe ik deze schakel ertussenuit kan halen?

Ik wil een rapport maken van het huidige formulier. Kan iemand mij dat uitleggen?

Alvast bedankt
 
Moet je even naar de code onder het knopje kijken.
Daar kun je zorgen dat de goede factuur getoond wordt.
Als je kunt aangeven hoe het factuur op je formulier gedefinieerd wordt en hoe de velden op je formulier heten dan kan de code daarvoor wel gegeven worden.
 
maar dat rapport wordt opgeroepen dmv query. In die query heb ik staan "geef factuurnummer" bij record "factuurnummer".
 
Jammer dat je niet aangeeft welke versie van Access je gebruikt.
Ook jammer dat je de SQL van je query niet gepost hebt.
Ik heb zelf even een query gemaakt die doet wat jij wilt:

SELECT tblTest.ID, tblTest.dokument, tblTest.datum
FROM tblTest
WHERE tblTest.ID=[Geef het ID:];

Het eveld waar je je afvraging in wilt doen moet je opnemen in de WHERE clausule van je query.
De tekst die je boven het invoerveld wilt hebben moet tussen vierkante haken staan.
 
Ik werk in versie 97

de query is als volgt:
SELECT [13 tabel factuur].Factuurnummer, [13 tabel factuur].Factuurdatum, [13 tabel factuur].Periode, [13 tabel factuur].Omschrijving, [13 tabel factuur]., [13 tabel factuur].Bedrijf, [13 tabel factuur NAW].Adres, [13 tabel factuur NAW].Postcode, [13 tabel factuur NAW].Contactpersoon, [13 tabel factuur NAW].Telefoonnummer, [13 tabel factuur NAW].Faxnummer, [13 tabel factuur NAW].[E-mail], [14 tabel NAW gegevens ].Kostenplaats, [14 tabel NAW gegevens ].Adres, [14 tabel NAW gegevens ].Postcode, [14 tabel NAW gegevens ].Plaats, [14 tabel NAW gegevens ].[Intern Postadres], [14 tabel NAW gegevens ].Telefoonnummer, [14 tabel NAW gegevens ].Faxnummer, [14 tabel NAW gegevens ].Contactpersoon, [14 tabel NAW gegevens ].Email, [13 tabel factuur NAW].Kostenplaats, [13 tabel factuur NAW].[Intern Postadres], [13 tabel factuur].[Factuur verstuurd], [13 tabel factuur].[Datum factuur verstuurd], [13 tabel factuur].[Bedrag ontvangen], [13 tabel factuur].[Datum bedrag ontvangen], [14 tabel NAW gegevens ].[tgv kostenplaats], [14 tabel NAW gegevens ].[tgv rekeningnummer], [13 tabel factuur].Dossier, [14 tabel NAW gegevens ].Adres_plaats, [14 tabel NAW gegevens ].Postcode_post, [14 tabel NAW gegevens ].Plaats_post
FROM [14 tabel NAW gegevens ] INNER JOIN ([13 tabel factuur NAW] INNER JOIN [13 tabel factuur] ON [13 tabel factuur NAW].Bedrijf = [13 tabel factuur].Bedrijf) ON [14 tabel NAW gegevens ]. = [13 tabel factuur].
WHERE ((([13 tabel factuur].Factuurnummer)=[geef factuurnummer]));

Dus ik heb dezelfde soort query als jij aangeeft. Als ik het rapport oproep in het formulier moet ik alsnog het factuurnummer invoeren terwijl het mogelijk moet zijn om het rapport te laten draaien van record dat in het formulier staat.
 
Je zult een keuze moeten maken. Of je vraagt het factuurnummer op in je query, of je haalt het van je formulier af. Beiden kan niet!

Als je het van je formulier af wilt halen dan moet je de WHERE clausule uit je query verwijderen en op je rapport een knopje maken om het rapport op te starten.

Onder het klik event van het knopje moet dan ongeveer het volgende staan:

Private Sub cmdToonRapport_Click()
On Error GoTo Err_cmdToonRapport_Click

Dim stDocName As String
Dim strWhere As String

stDocName = "rptTest"
strWhere = "Factuurnummer=" & CStr(Me![txtFactuurnummer])

DoCmd.OpenReport stDocName, acPreview, , strWhere

Exit_cmdToonRapport_Click:
Exit Sub

Err_cmdToonRapport_Click:
MsgBox Err.Description
Resume Exit_cmdToonRapport_Click

End Sub
 
Bartuls, bedankt voor je antwoord.

Dit werkt goed al heb je een nummerieke selectievoorwaarde, maar nu ben ik ook bezig met zo'n rapport waar in de query geen getal staat maar een tekst. Hoe werkt het dan?

het onderstaande werkt niet:

stDocName = "rptTest"
strWhere = "Verkorte naam=" & CStr(Me![Verkorte naam])

de volgende foutmelding verschijnt dan:

Syntax error (missing operator) in query expression '(Verkorte naam=XXXX)'

XXXX = verkorte naam van de klant
 
Simpel,

Zorg dat er enkele quootjes om de tekst heen komen te staan.

strWhere = "Verkorte naam='" & CStr(Me![Verkorte naam]) & "'"

Denk er wel aan dat een Where clausule op een tekstveld per definitie een table scan tot gevolg heeft.
Dan zoekt access door alle rijen in je tabel!
Zeker voor tabellen met veel records kan dit een flinke vertraging in het opstarten van je rapport tot gevolg hebben.
 
dankje, maar het werkt nog niet helemaal goed.

ik krijg nu de volgende foutmelding

Syntax error (missing operator) in query expression '(Verkorte naam='XXX')'

Er staan single haakjes om de tekst en ik neem aan dat dit dubbel haakjes moeten zijn.

XXXX is naam bedrijf

Ik heb wat zitten pielen met de aanhalingstekens maar dan krijg ik een foutmelding.

Wat doe ik verkeerd?
 
Laatst bewerkt:
Dat komt doordat je een spatie gebruikt in je veldnaam.
Spaties in veld- en tabelnamen geeft bijna altijd wel ergens een probleem.
Het beste is om geen spaties te gebruiken en je componentnamen aan elkaar te schrijven, in jouw geval fldVerkorteNaam. De fld ervoor komt uit de 'Hungarian naming conventions', als je die goed toepast wordt je code een stuk leesbaarder en daardoor onderhoudbaarder. Ga maar eens zoeken met google, dan vind je heel veel hierover.

Overigens is de oplossing voor jouw probleem niet zo moeilijk. Zet vierkante haken om de veldnaam heen.

strWhere = "[Verkorte naam]='" & CStr(Me![Verkorte naam]) & "'"
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan