Ga naar inhoud

Welkom op PC Helpforum!
PC Helpforum helpt GRATIS computergebruikers sinds 2006. Ons team geeft via het forum professioneel antwoord op uw vragen en probeert uw pc problemen zo snel mogelijk op te lossen. Word lid vandaag, plaats je vraag online en het PC Helpforum-team helpt u graag verder!

arnoderuig

Lid
  • Aantal items

    15
  • Registratiedatum

  • Laatst bezocht

  1. Hallo plx, Soms zijn dingen zo eenvoudig. Je moet er maar op komen. Je voorbeeld is duidelijk maar muteert - als je het bestand via het formulier doorloopt - ook de reeds bestaande records. En dat is niet de bedoeling. Het gaat alleen om de nieuwe records. Ik heb er dus een 'if me.newrecord' tussen gezet; dan gaat het goed, Bedankt dat je me op weg hebt geholpen.
  2. Binnen een formulier wil ik regelen dat bij een nieuw record de inhoud van een veld standaard de waarde krijgt van hetzelfde veld in het laatst opgeslagen record. Hoe zal ik dit kunnen regelen?
  3. kweezie wabbit, Bedankt voor je reactie. Er blijft helaas een probleem: In jouw oplossing wordt voor elk record in de tabel een overzicht opgesteld met de gegevens van alle records in de tabel. Anders uitgelegd: Als de tabel 5 records bevat worden 5 bestanden aangemaakt (keurig met verschillende namen) maar met elk 5 facturen. Dat is dus niet de bedoeling. Elk bestand zou slechts de gegevens van 1 bijbehorend record moeten bevatten. Zoeken op internet (ik zoek wat af tegenwoordig rond dit probleem) zou het mogelijke probleem kunnen zijn dat voor elk record in de tabel het rapport wordt aangeroepen. Dat rapport heeft echter weer een verwijzing naar de (volledige) tabel. Dat was oorspronkelijk voor mij de reden om te zoeken naar een mogelijkheid om per record een query op te roepen die dus slechts van 1 factuur de gegevens bevat. Het rapport zou dan per keer voor 1 factuur de gegevens als output aanmaken. Bij de keuzxe van een query krijg ik echter telkens het probleem dat het aanroepen van de SQL-string een foutmelding oproept dat een parameter ontbreekt. Indien dat helpt heb ik een test-database beschikbaar.
  4. Nu zie ik wat je bedoelt. Het feit dat er een tabel tblFactuurVoorlopig is wil niet zeggen dat de daarin opgenomen Rijnummer zich ook op mijn formulier bevindt. Die veronderstelling is onjuist. De factuurgegevens op zich zijn via een ander formulier ingevoerd en daarna automatisch voorzien van een rijnummer. Het formulier wat ik noem bevat slechts een knop waarmee het facturatieproces (bestaande uit het daadwerkelijk printen van facturen) wordt gestart. Onder die knop bevindt zich de procedure die ik hierboven heb aangehaald. De bedoeling van de procedure is dat volautomatisch de te gebruiken rijnummers ophaalt vanuit de tabel en daarna gebruikt om record voor record te benaderen en er een pdf-bestand (inhoudende een individuele factuur) van te maken. Groet, Arno.
  5. Stegisoft, Ik kan je niet helemaal volgen. Wil je me aangeven in welk bericht ik de tekst strSQL = "SELECT * FROM tblFactuurVoorlopig WHERE ((Rijnummer)= Forms!frmAfdrukkenFacturen!Rijnummer)" heb gebruikt? De enige keren waarin ik het tekstdeel WHERE ((Rijnummer)= heb gebruikt is met vaste waarden 5 en 8 en ook heb ik de variabale vAantal gebruikt. Verder dus geen verwijzing naar een formulier.
  6. Ondertussen blijf ik bezig ook zelf oplossingen te zoeken. Mede door de reactie van Stegisoft heb ik de volgende oplossing eens geprobeerd. Op het formulier frmAfdrukkenFacturen heb ik 3 velden geplaatst. Het eerste veld berekend de laagste waarde in de tblFacturenVoorlopig en wel in de kolom Index (dit is het sleutelveld van de tabel). Daarnaast een tweede veld dat de hoogste waarde berekend. Onder een knop waarmee ik facturen wil printen heb ik onderstaande code staan: Private Sub KnopAfdrukkenEnEmailFacturen_Click() Dim db As Database Dim rst As Recordset Dim strSQL As String Dim vFactuur As String Dim vDatum As String Dim vIndexActief As Long Dim vIndexLaagste As Long Dim vIndexHoogste As Long vDatum = Forms!frmAfdrukkenFacturen!DatumJJJJMMDD vIndexLaagste = Forms!frmAfdrukkenFacturen!IndexLaagste vIndexHoogste = Forms!frmAfdrukkenFacturen!IndexHoogste Set db = CurrentDb() strSQL = "Select * from qryFactuurVoorlopig" For vIndexActief = vIndexLaagste To vIndexHoogste Forms!frmAfdrukkenFacturen!IndexActief = vIndexActief Set rst = db.OpenRecordset(strSQL, dbOpenDynaset) vKlant = Right$("000000" & rst!KlantID, 6) vFactuur = Right$("000000" & rst!FactuurID, 6) DoCmd.OutputTo acOutputReport, "rptFacturenPrintenPDFindividueel", acFormatPDF, "X:\BAS\PDF\Factuur\Factuur-" & vKlant & "-" & vFactuur & "-" & vDatum & ".PDF" Next rst.Close End Sub Deze code haalt dus de eerdergenoemde twee waarden van het formulier op. Via de For Next wordt de eerste waarde opgehaald en plaatst dit in een derde veld op het formulier. Dit veld (IndexActief) is meteen een parameter voor een nieuwe query qryFactuurVoorlopig. Ook in deze constructie komt de foutmelding dat er een parameter mist hoewel deze parameter is benoemd in de query. Bij controle blijkt dat de query wel degelijk de juiste record weergeeft. Haal ik de parameter uit de query (waardoor eigenlijk de hele tabel tblFactuurVoorlopig wordt geselecteerd) dan krijg ik dezelfde foutmelding. Wijzig ik het aanroepen van de query in het aanroepen van de tabel dan heb ik geen foutmelding. Ik snap dus nog steeds niet naar welke parameter de SQL-string op zoek is.
  7. Stegisoft, Bedankt voor je reactie. Waar haal je plotseling de parameter 'rijnummer' op het formulier vandaan? Die staat daar helemaal niet; dat gaat mijns inziens dus niet werken.
  8. Zoals ik heb geprobeerd uit te leggen in mijn vraagstelling werkt de SQLstring niet als ik daarin de variabele vAantal plaats. Deze moet in de plaats komen van het cijfer 5. Ik heb namelijk vastgesteld dat als er een vaste waarde in staat (zoals 5) de sql wel werkt. Maak ik daar de variabele vAantal van dan krijg ik de foutmelding dat er een parameter ontbreekt. Alle records in de tabel hebben een uniek cijfer staan in de kolom rijnummer. Via de sql probeer ik dus steeds één rij te selecteren, waarvan ik later in de procedure gebruik van maak. De kolom Rijnummer is een integer. Daarom heb ik ook de variabele vAantal als integer gedefinieerd. Schrik niet van wat de procedure in zijn huidige vorm uiteindelijk doet. Het is slechts in eerste instantie een probeersel om steeds één rij te kunnen selecteren. Als dat lukt (met de variabele) dan kan ik de procedure bouwen zoals ik uiteindelijk wil.
  9. kweezie wabbit, Fijn dat je er even naar wil kijken. De bedoeling van de instructies is (uiteindelijk) om steeds 1 record te benaderen vanuit de tabel tblFactuurVoorlopig waarna een rapport kan worden gedraaid dat een pdf-bestand voor dat betreffende record aanmaakt. De instructies zijn dus nog niet af. Ik wilde eerst zien of ik één bepaald record kan bereiken omdat ik zeker geen ster in VBA ben. Dim db As Database Dim rst As Recordset Dim strSQL As String Dim vFactuur As String Dim vDatum As String Dim vAantal As Integer vAantal = 1 Set db = CurrentDb() strSQL = "SELECT * FROM tblFactuurVoorlopig WHERE ((Rijnummer)= 5)" Set rst = db.OpenRecordset(strSQL, dbOpenDynaset) vDatum = Forms!frmAfdrukkenFacturen!DatumJJJJMMDD rst.MoveFirst Do While Not rst.EOF Set rst = db.OpenRecordset(strSQL, dbOpenDynaset) vKlant = Right$("000000" & rst!KlantID, 6) vFactuur = Right$("000000" & rst!FactuurID, 6) DoCmd.OutputTo acOutputReport, "rptFacturenPrintenPDFindividueel", acFormatPDF, "X:\BAS\PDF\Factuur\Factuur-" & vKlant & "-" & vFactuur & "-" & vDatum & ".PDF" vAantal = vAantal + 1 rst.MoveNext Loop rst.Close Indien gewenst wil ik je wel de database sturen. Geef me in dat geval een privé-bericht. Groet, Arno.
  10. Ik blijf het vermoeden houden dat de laatste opzet niet dat geeft wat ik zoek. Ik heb de zaak goed werken bij de volgende VBA-opdrachten: Dim db As Database Dim rst As Recordset Dim strSQL As String Dim vAantal As Integer vAantal = 1 Set db = CurrentDb() strSQL = "SELECT * FROM tblFactuurVoorlopig WHERE ((Rijnummer)= 8)" 'Rijnummer' is dus een kolom in de tabel tblFactuurVoorlopig. Deze lopen opvolgend vanaf 1 tot en met een willekeurig getal. Bovenstaand voorbeeld geeft me de gegevens van rij 8. Dit werkt in de praktijk. Ik wil echter ook de andere rijen kunnen benaderen via een For Next constructie. Daartoe zou ik in dit voorbeeld de waarde 8 willen vervangen door de benoemde variabele waarde 'vAantal'. Omdat deze variabele in eerste instantie de waarde 1 meekrijgt zou het eerste record moeten kunnen worden benaderd. de instructie luidt dan dus: strSQL = "SELECT * FROM tblFactuurVoorlopig WHERE ((Rijnummer)= vAantal)" Ik krijg echter een foutmelding 'Fout 3061 tijdens uitvoering. Er zijn te weinig paramaters. Verwachte waarde is 1.". Enig idee wat hier fout gaat?
  11. Stegisoft, Bedankt voor je uitgebreide reactie. Ik denk alleen dat dit niet is wat ik zoek. Ik zoek een oplossing om met letterlijk één druk op de knop vele indiiduele facturen als pdf-bestand te verkrijgen. Alle gegevens die nodig zijn zitten al in één tabel die record voor record kan worden doorlopen. Als ik jouw oplossing goed begrijp zou ik iedere keer handmatig een gegeven moeten selecteren. Dat is helaas bij 2.000 facturen per maand geen optie. Of heb ik je verkeerd begrepen? Groet, Arno.
  12. Stegisoft, dank voor je reactie. Ik zal proberen wat meer duidelijkheid te geven. Al jaren worden facturen vanuit een tabel met behulp van een rapport direct op papier geprint. Ik wil nu dat deze facturen als pdf-bestand beschikbaar komen. En dan niet één bestand met alle facturen, maar één bestand per factuur. De VBA-instructies om de output als pdf te krijgen beheers ik. Dat gaat uitstekend. Alleen; hoe krijg ik nu voor elkaar dat er per regel uit het bestand een factuur wordt afgedrukt. Aansturing van het rapport gebeurt vanuit een formulier. Ik heb daarop een knop gemaakt die het rapport start. In het rapport staat de verwijzing naar de te gebruiken tabel waarin dus meerdere regels (lees factuurregels) staan. Ik had nu bedacht om via een loop-constructie via een sql-string (via een gebeurtenis) steeds één regel op te roepen, daarna het rapport starten, en dan via de loop het volgende record aan te roepen. Daarvoor heb ik dan een sql-instructie nodig om steeds slechts één record op te roepen. Ik kom er niet achter op welke wijze ik slechts één record kan aanwijzen. Ik heb veel op internet gezocht en kom daar een enkele keer iets tegen met 'rownum' maar dat levert bij mij steeds een foutmelding op dat parameters ontbreken hoewel ik (als probeersel) steeds heb aangegeven 'rownum = 1'. Ik zie graag een oplossing tegemoet. Het kan natuurlijk ook zijn dat er een totaal andere manier is om dit op te lossen. Dan hoor ik dat graag. Ik werk overigens met Access 2010. Dank voor de inspanningen. Arno.
  13. Ik wil voor elk record in een database een apart rapport als output. Ik denk dat ik daarvoor via VBA iets zou moeten doen namelijk het openen van de tabel en dan via een loop-constructie naar een bepaalde rij in de tabel verwijzen waarna het rapport kan worden geprint (er komt dan een pdf-bestand uit). Het verwijzen naar elk apart record lukt me niet. Ik kan via een sql-string de tabel openen en het rapport draaien maar dan komt er één rapport uit voor alle records tesamen. Hoe verwijs ik in een sql-string naar één bepaald rijnummer?
  14. [ATTACH]7651[/ATTACH] Op verzoek. Bijgaand mijn bestand in WINRAR. Zoek.rar
  15. [ATTACH]7650[/ATTACH] Ik heb een Access 2010-database waarin ik via een formulier records uit een tabel laat zien. Binnen die records wil ik kunnen zoeken naar een specifiek record. In bijgaand voorbeeld heb ik in Formulier1 iets dergelijks ontwikkeld. Dat werkt zoals ik wil. Doch ..... eigenlijk wil ik een methode zoals in bijgaand voorbeeldbestand onder Formulier2 is weergegeven. Ik krijg dat echter niet werkend. Wat doe ik fout? Groet, Arno. Zoek.zip
Logo

OVER ONS

PC Helpforum helpt GRATIS computergebruikers sinds juli 2006. Ons team geeft via het forum professioneel antwoord op uw vragen en probeert uw pc problemen zo snel mogelijk op te lossen. Word lid vandaag, plaats je vraag online en het PC Helpforum-team helpt u graag verder!

×
×
  • Nieuwe aanmaken...

Belangrijke informatie

We hebben cookies geplaatst op je toestel om deze website voor jou beter te kunnen maken. Je kunt de cookie instellingen aanpassen, anders gaan we er van uit dat het goed is om verder te gaan.