Mogelijkheid gezocht in Access 2007 om individuele records te printen

Status
Niet open voor verdere reacties.

Dave Carper

Gebruiker
Lid geworden
30 jan 2008
Berichten
5
Ja het is een lange topic titel, maar hopelijk is dan ook duidelijk wat ik probeer te bereiken.

Nogmaals, maar dan wat meer uitgebreid met achtergrondinformatie:

Ik heb een database nodig waarmee ik voor een poppodium de gegevens van de vrijwilligers kan organiseren en makkelijk kan categoriseren. Wat ik tot nu toe nog niet gedaan krijg is iets er in zetten waar door het mogelijk wordt om individuele records te selecteren en vervolgens die (meerdere) records uit te printen (niet elk op een eigen pagina, maar als een doorlopend iets).

Op dit moment heb ik een tabel met daarin alle vrijwilligers en hun bijbehorende gegevens. Daarnaast heb ik een formulier zodat het voor andere personen makkelijk is om vrijwilligers toe te voegen aan de database. Waar ik eigenlijk heen zou willen, is een optie op het formulier (wellicht een vinkje of zoiets) dat mensen kunnen aantikken en vervolgens op een knop (laten we zeggen in de voettekst) kunnen drukken om de verschillende aangevinkte formulieren uit te laten printen. Nou schijnt dit wellicht beter met een rapport te kunnen, maar die optie is mij nog niet geheel duidelijk en daarbij verlies ik volgensmij de aantrekkelijke layout van het formulier. Als echter met een rapport het mogelijk is, dan is die mogelijkheid ook welkom.

EIgenlijk zoek ik dus naar een manier om individuele records uit de database (indien mogelijk in een layout) te selecteren en vervolgens de geselecteerde records doorlopend (en dus niet 1 per pagina) uit te printen.

Ik ben geen Access kenner zoals uit het bovenstaande duidelijk mag worden. Eventuele hulp wordt zeer op prijs gesteld en kan eventueel zelfs beloond worden met een gratis nachtje uit (omgeving Twente). Bij voorbaat dank.

:)
 
Laatst bewerkt:
Maak een rapport dat alle records toont.
Maak een multiselect listbox (keuzelijst) op een formulier.
Maak op dat formulier met de wizard een knop om je rapport te openen.
Pas de code onder de knop een beetje aan zodat de geselecteerde records aan het rapport doorgegeven worden.
Voorbeeldcode:
Code:
Private Sub cmdReportContract_Click()
    Dim itm As Variant
    Dim ctl As Control
    Dim strIDs As String
    Dim blnReturn As Boolean
    
    On Error GoTo Err_cmdReportContract_Click
    
    Set ctl = Me.lsttblContract
    strIDs = ""
    
    If ctl.ItemsSelected.Count < 1 Then
        MsgBox "Eerst één of meerdere contracten selecteren", vbCritical + vbOKOnly, "Fout"
        Me.lsttblContract.SetFocus
        Exit Sub
    End If
    
    For Each itm In ctl.ItemsSelected
        strIDs = strIDs & CStr(ctl.Column(0, itm)) & ", "
    Next itm
    
    strIDs = Left(strIDs, Len(strIDs) - 2)
    
    DoCmd.OpenReport "rptContract", acViewPreview, , "ID IN (" & strIDs & ")", acWindowNormal
    
Exit_cmdReportContract_Click:
    Exit Sub

Err_cmdReportContract_Click:
    MsgBox Err.Description
    Resume Exit_cmdReportContract_Click
End Sub
 
Mijn dank voor de suggestie, maar ik lijk er nog niet echt helemaal uit te komen. Vooral het selectievakje gaat volgensmij mis.

:confused:

Mocht iemand bereid zijn dit probleem op te lossen, kan ik er 2 gastenlijstplekken bij een optreden naar keuze in een poppodium in Oost-Nederland (met enige moeite waarschijnlijk geheel Nederland) naar keuze tegenover zetten. En omdat ik niet echt handig ben met Visual Basic en ik het gevoel heb dat het enkel een kwestie is van een paar regeltjes VB wijzigen en/of invoeren, ben ik dan eventueel ook bereid om de database gewoon even naar iemand te versturen. Dan is gelijk ook duidelijk wie het aan het werken krijgt.

Bij voorbaat dank
 
Laatst bewerkt:
Ja dat heb ik ondertussen gevonden en gedaan. Nu ben ik in ieder geval al in staat om individuele records te selecteren. En dankzij het geleverde script heb ik nu ook een knop waarmee ik een rapport kan oproepen dat records kan oproepen. Enige probleem nu is dat die knop nu alle records oproept in een rapport en dus niet enkel de geselecteerde in de multiselect listbox.

Alvast mijn excuses voor mogelijkerwijs onwetend klinkende uitspraken.
 
Nogmaals de code:
Code:
Private Sub cmdReportContract_Click()
    Dim itm As Variant
    Dim ctl As Control
    Dim strIDs As String
    Dim blnReturn As Boolean
    
    On Error GoTo Err_cmdReportContract_Click
    
    Set ctl = Me.lsttblContract
    strIDs = ""
    
    If ctl.ItemsSelected.Count < 1 Then
        MsgBox "Eerst één of meerdere contracten selecteren", vbCritical + vbOKOnly, "Fout"
        Me.lsttblContract.SetFocus
        Exit Sub
    End If
    
    For Each itm In ctl.ItemsSelected
        strIDs = strIDs & CStr(ctl.Column(0, itm)) & ", "
    Next itm
    
    strIDs = Left(strIDs, Len(strIDs) - 2)
    
    DoCmd.OpenReport "rptContract", acViewPreview, , "ID IN (" & strIDs & ")", acWindowNormal
    
Exit_cmdReportContract_Click:
    Exit Sub

Err_cmdReportContract_Click:
    MsgBox Err.Description
    Resume Exit_cmdReportContract_Click
End Sub

Set ctl = Me.lsttblContract
Hier moet de naam van jou listbox in plaats van lsttblContract

If ctl.ItemsSelected.Count < 1 Then
MsgBox "Eerst één of meerdere contracten selecteren", vbCritical + vbOKOnly, "Fout"
Me.lsttblContract.SetFocus
Exit Sub
End If
Hier wordt gecontroleerd of er in je listbox wel iets geselecteerd is.

For Each itm In ctl.ItemsSelected
strIDs = strIDs & CStr(ctl.Column(0, itm)) & ", "
Next itm
Hier wordt een string strIDs gevuld met de ID's van de records die in de listbox geselecteerd zijn.

DoCmd.OpenReport "rptContract", acViewPreview, , "ID IN (" & strIDs & ")", cWindowNormal
Hier wordt het rapport geopend, hierin zit ook de grote truc voor het selecteren van de juiste records in het rapport: "ID IN (" & strIDs & ")"

Aangezien je geen database bijgesloten hebt (ik heb overigens ook geen access 2007...) en je niet verteld hoe je tabellen queries eruit zien is het voor mij niet mogelijk om het toe te spitsen op jou database, dat zul je dus zelf moeten invullen.
 
Rapport maken vanuit multiselectie in listbox

Nogmaals de code:
Code:
Private Sub cmdReportContract_Click()
    Dim ctl As Control
    ...    [/QUOTE]
    
Heb ook problemen met de opmaak van een rapport op basis van multiselectie van filterelementen in een listbox (Access 2003).
In mijn zoektocht naar een oplossing heb ik jouw code ook geprobeerd.
Ter info : de te selecteren filter(s) zijn strings (tekst). In de listbox worden de strings geselecteerd. In de hoofdtabel (waaruit het rapport wordt opgemaakt) zijn deze strings de invulling / records van een veld.
Ik krijg evenwel (nog) geen rapport.

Na selectie en druk op de (opdracht)knop krijg ik volgende foutmelding in onderstaande regel, meer bepaald bij "left" :
"Compileerfout - Kan project of bibliotheek niet vinden"

 strIDs = Left(strIDs, Len(strIDs) - 2)

Wat zie ik over hoofd ?
 
Laatst bewerkt:
Hmmmm, heeft even geduurd (ander project heeft mijn aandacht een paar weken opgeslurpt).

Ik ben nu al een aanzienlijke stap verder (mijn dank daarvoor), maar nu krijg ik een rare syntaxisfout, namelijk:

Syntaxisfout (operator ontbreekt) in query-expressie ID IN (*hier staan dan de namen van de records die ik geselecteerd heb om te printen*)

Wat is er aan de hand en hoe los ik het op?

Eventueel kan ik de database (.mdb) gewoon toevoegen aan het topic, maar aangezien de vorige hulpgever (nogmaals dank) geen Access 2007 heeft, heeft dat tot nu toe zowizo weinig zin.
 
Een Access 2007 bestand kun je opslaan als Access 2003 bestand.

Wat bedoel je hiermee

*hier staan dan de namen van de records die ik geselecteerd heb om te printen*

Daar moeten namelijk geen namen staan, maar een string die opgebouwd wordt via de code die je eerder hebt gekregen.

Groet,

Tardis
 
Laatst bewerkt:
Syntaxisfout (operator ontbreekt) in query-expressie ID IN (*hier staan dan de namen van de records die ik geselecteerd heb om te printen*)

Daar bedoel ik mee, als ik de records van persoon 1 en persoon 3 selecteer om te printen (met als namen "persoon 1" en "persoon 3", dan staan tussen haakjes in de foutmelding die ik krijg die namen, gescheiden door kommas, dus ("persoon 1", "persoon 3")

Enig idee?

Ik ben nu aan het proberen de database als Access 2003 bestand op te slaan, maar dan verlies ik onder andere de mogelijkheid om foto's en andere bijlages te linken etc.
 
Ik ben nu aan het proberen de database als Access 2003 bestand op te slaan, maar dan verlies ik onder andere de mogelijkheid om foto's en andere bijlages te linken etc.

Die hebben wij niet nodig, laat die alsjeblieft even weg ;)
Gaat alleen om een voorbeeldbestand waarin jouw probleem te reproduceren is.

Groet,

Tardis
 
Beste allemaal,

Met behulp van deze thread heb ik geprobeerd mijn probleem op te lossen, maar het is me nog niet gelukt.


Probleem:
Ik heb een tabel en formulier 'Leveranciers' met gelinkt aan het fomulier een subformulier met contactpersonen. Een leverancier kan meerdere contactpersonen hebben, maar ik wil natuurlijk slechts 1 contactpersoon op mijn rapport hebben.

Via een keuzelijst op het formulier 'leveranciers' kan ik de betreffende contactpersoon selecteren. Via een button op het formulier zou, via de code van 'Bartuls' hieronder, de juiste contactpersoon op het rapport moeten verschijnen, echter dit lukt me niet.
Ik krijg de foutmelding 'de expressie bevat een ongeldige verwijzing...'

Hierbij de aangepaste code:
Code:
Code:
Private Sub cmdReportContract_Click()
    Dim itm As Variant
    Dim ctl As Control
    Dim strIDs As String
    Dim blnReturn As Boolean
    
    On Error GoTo Err_cmdReportContract_Click
    
    Set ctl = Me.lsttblContract
    strIDs = ""
    
    If ctl.ItemsSelected.Count < 1 Then
        MsgBox "Eerst één of meerdere contracten selecteren", vbCritical + vbOKOnly, "Fout"
        Me.lsttblContract.SetFocus
        Exit Sub
    End If
    
    For Each itm In ctl.ItemsSelected
        strIDs = strIDs & CStr(ctl.Column(0, itm)) & ", "
    Next itm
    
    strIDs = Left(strIDs, Len(strIDs) - 2)
    
    DoCmd.OpenReport "rptContract", acViewPreview, , "ID IN (" & strIDs & ")", acWindowNormal
    
Exit_cmdReportContract_Click:
    Exit Sub

Err_cmdReportContract_Click:
    MsgBox Err.Description
    Resume Exit_cmdReportContract_Click
End Sub

Ik sluit een uitgekleed voorbeeld van mijn db bij.
Ik hoop dat iemand mij kan helpen.
Alvast bedankt
Groeten
 

Bijlagen

  • db1.zip
    46,9 KB · Weergaven: 69
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan