Toon posts:

[Access] naam of bijschrift van rapport aanpassen

Pagina: 1
Acties:
  • 1.178 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Beste heb heel je forum afgezocht en op internet al gezocht, vindt nergens een antwoord.
Hoe zorg ik ervoor dat de naam van een rapport (bijschrift of Caption) verandert in functie van de persoon die op het rapport voorkomt.
probeerde bij bijschrift iets te zetten zoals = Me.Naam, maar werkte niet.

Wil het ook wel met programmacode proberen, maar kom er niet uit. Het rapport wordt opgeroepen vanuit een formulier met een knop en er staat een filter op de persoon.

Van harte,

Claudine

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Wat je zoekt, gok is, is hoe te verwijzen naar een control op een geopend form. Daar is wel e.e.a. over ter vinden :)

offtopic:
Let ajb even op de etiquette van het maken van een openingspost. Je vermeldt nog niet eens het programma waarin je werkt, noch wat er precies fout gaat of wat je wél gevonden hebt. Eventueel kun je nog aangeven welke zoektermen je gebruikt hebt. Wat voor jou vanzelfsprekend is hoeft dat voor een ander niet te zijn. Registratievoorwaarden / korte FAQ bechrijft wat we verwachten van een topicstart; Versietags in topictitel verplicht *lezen svp* beschrijft waarom we in de titel vermeld willen zien welke software je gebruikt.

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


Verwijderd

Topicstarter
Beste Tweaker,

Het probleem is opgelost. Als titel is het microsoft access (rapportnaam veranderen ifv naam op het formulier).

Hieronder volgt wat meer uitleg zodat andere mensen ook gebruik kunnen maken van deze code.

Ik heb een formulier (frmCoordinatorInput) van waarop ik een report verzend naar de email van de Coordinator aanwezig op het formulier.

Het report bevat een overzicht van zijn gegevens en wordt verzonden als snapshotview, teneinde de Coordinator toe te laten deze gegevens te verbeteren.

Bedoeling van mijn vraag was om het report een naam te geven die relevant was voor de snapshot.
Om dit te verkrijgen moest ik het bijschrift van het rapport kunnen veranderen. Hoe en waar was de vraag. Hier de oplossing:

Achter de knop op het formulier die de snapshot onmiddelijk naar een mailprogramma verstuurt werd volgende code geplaatst.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 'een variabele voor het emailadres
    Dim strMail As String
'een variabele om de aard van het document te bepalen
    Dim stDocName As String
'een variabele voor de naam van de snapshotview
    Dim strNaamSNP As String
    
'de naam van de verzonden SNP verandert in funktie van de naam persoon
    strNaamSNP = Me.cooNaam & " " & Me.cooVoornaam & " " & Format(Now(), "dddd d mmmm yyyy hh:nn:ss")
'naargelang de taal van de persoon wordt het report verandert
'als de persoon nederlandstalig is zal een report met nederlandstalig adres verzonden worden
'als de persoon franstalig is zal een report met franstalig adres verzonden worden
'als de persoon duitstalig is zal een report met het adres zowel in het nederlands als in het frans verzonden worden
    If Me.cooTaalId = 1 Then
        stDocName = "rptCoordinatorNl"
        Reports![rptCoordinatorNl].Caption = strNaamSNP
    ElseIf Me.cooTaalId = 2 Then
        stDocName = "rptCoordinatorFr"
        Reports![rptCoordinatorFr].Caption = strNaamSNP
    Else
        stDocName = "rptCoordinator"
        Reports![rptCoordinator].Caption = strNaamSNP
    End If
    
'het emailadres bepalen vanop de subform op het formulier
    strMail = [Forms]![frmCoordinatorInput]![Email]![emlMail]
'de snapshot verzenden
    DoCmd.SendObject acReport, stDocName, acFormatSNP, _
        strMail, "{knip}@gmail.com", , "Snapshot Coordinator", "Hier komt de Message tekst", , False

  • sjongenelen
  • Registratie: Oktober 2004
  • Laatst online: 26-02 11:43
oké, dat is een stuk beter! :)
je zou de code voortaan nog tussen [ code ] kunnen zetten, dan is het helemaal mooi :)

you had me at EHLO


  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Yup, dank :*

Ik ben wel zo vrij geweest om het e-mailadres uit de code te knippen. Tegenwoordig zijn er net even te veel botjes die het net afzoeken op mailadressen en het zou jammer zijn als de coordinator bedolven werd onder de spam :P En heb dus in 1 moeite door even [code]..[/code] tags om de code geplakt, zoals je ziet.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Verwijderd

Topicstarter
Beste Tweakers,

Er moet toch iets verkeerd zijn met mijn verwijzing naar het rapport. Het lukt nu niet meer. Hij vindt het rapport niet meer. Probeerde al verschillende manieren om die Caption te veranderen.
Kan je dit op een andere manier? Of heb ik misschien ergens iets misprutst waardoor ik geen enkel rapport nog kan aanspreken. Want ondertussen maakte ik al verschillende varianten van rapporten en voor allen krijg ik de volgende foutmelding:

De ingevoerde rapportnaam is onjuist gespeld of verwijst naar een raport dat niet is geopend of niet bestaat.
De gebruikte code is nog steeds:
Reports![rptCoordinatorNl].Caption = strNaamSNP

:(
Claudine

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Het rapport moet geopend zijn. Maardat zegt de foutmelding al. :)
Wil je opgeslagen documenten gaan wijzigen dan wordt het lastiger, dan ga je namelijk met de documents collectie werken. 't is handiger om die caption aan te passen in het 'on open' event van het rapport zelf.

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


Verwijderd

Topicstarter
Wanneer ik de caption aanpas in het 'on open' event werkt dit wel als ik het rapport open doe, maar als ik de snapshot verzend rechtstreeks naar email van op het formulier Coordinator, dan wordt het report niet open gedaan immers en wordt de naam niet aangepast. Er moet een andere oplossing zijn, of is er misschien een manier om de 'on open' event te forceren? Het is een moeilijke zaak toch...

Alleszins bedankt al voor de tip om het op de 'on open' event te zetten.

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

'caption' is alleen de titel van het venster. :) Het lijkt me meer voor de hand liggen om een veld in het rapport zelf de juiste tekst mee te geven :?

Maw wat wil je nu eigenlijk bereiken?

[ Voor 12% gewijzigd door Lustucru op 07-11-2007 11:10 ]

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


Verwijderd

Topicstarter
Vermits de 'on open' event niet werkt wanneer ik het rapport als snapshot verstuur, ben ik terug gekeerd naar de eerste optie, nl om de naam te geven van als ik op de knop versturen snapshot duw.
De volgende code waarbij ik het rapport open doe, werkt vrij goed (let op het is slechts een deel van de code):
code:
1
2
3
4
5
6
7
8
9
10
11
If Me.cooTaalId = 1 Then
        stDocName = "rptCoordinatorNl"
        DoCmd.OpenReport stDocName, acPreview, , , acHidden
        Msgbox stDocName
        Reports![rptCoordinatorNl].Caption = strNaamSNP
        Msgbox strNaamSNP
        
        'de snapshot verzenden
    DoCmd.SendObject acReport, stDocName, acFormatSNP, _
        strMail, "*KNIP*", , "Snapshot Coordinator", "Hier komt de Message tekst", , False
End if


Maar als ik een tweede rapport wil versturen dan opent hij het voorgaande en verandert de naam zonder de gegevens aan te passen... Probeerde dan het rapport te sluiten met de docmd.close method en de .close method maar geen van beiden hebben impact. Ergens moet er nu nog een kleinigheid zijn denk ik.

Da's nu de tweede keer dat we een emailadres uit je post knippen en er codetags omheen zetten.
F_J_K in "[Access] naam of bijschrift van rapport ...".
Zorg je er de volgende keer zelf voor?

[ Voor 13% gewijzigd door Lustucru op 07-11-2007 18:06 ]


Verwijderd

Topicstarter
Vergeef me dat ik mijn mailadres opnieuw doorstuurde. Ik was aan't zoeken hoe ik die code als code kon doorsturen en ben kompleet vergeten van mijn emailadres te knippen. Wou het dan daarna nog doen, maar wist niet hoe ik mijn verzonden mail kon terugroepen. Alleszins van harte bedankt om zowel mijn mailadres te knippen als de code in een codeblok te zetten. Kan je me misschien vertellen hoe ik mijn code als code kan weergeven? 8)7

Wat mijn probleem betreft, zoek ik het misschien wel wat ver. Het enige wat ik zou willen is dat de caption van het rapport verandert in functie van de naam van de coordinator gevolgd door de huidige datum. In feite zou het voldoende zijn moest ik in het bijschrift kunnen verwijzen naar een veld en dit dan laten volgen door de datum. Iets zoals = Me.Naam & Date(now). Maar probeerde daar al verschillende expressies in te vullen en dat werkt niet.

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Verwijderd schreef op donderdag 08 november 2007 @ 10:51:
Kan je me misschien vertellen hoe ik mijn code als code kan weergeven? 8)7
zie Overzicht van UBB-codes
In feite zou het voldoende zijn moest ik in het bijschrift kunnen verwijzen naar een veld en dit dan laten volgen door de datum. Iets zoals = Me.Naam & Date(now). Maar probeerde daar al verschillende expressies in te vullen en dat werkt niet.
Me verwijst altijd naar het object zelf. Je wilt verwijzen naar een control op een formulier dus dat wordt iets als forms!formnaam!controlnaam & " " & date()

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


Verwijderd

Topicstarter
Heb reeds verschillende dingen geprobeerd om in te vullen voor de caption of het bijschrift op het rapport, maar het resultaat in de uiteindelijke e-mail is dan [Forms]![frmCoordinatorInput]![cooCoordinatorIdn].snp, dus de expressie werkt niet.

Wanneer ik het volgende invul op de on open event
code:
1
2
3
 Private Sub Report_Open(Cancel As Integer)
Me.Report.Caption = [Forms]![frmCoordinatorInput]![cooCoordinatorIdn]
End Sub


Werkt dit wel als ik het rapport open doe, maar de on open event werkt niet als ik werk vanop de form, de snapshot krijgt dan de default name die gelijk is aan rptCoordinatorNl.snp.

Ben er dus nog steeds niet uit! :(

Een ander probleem is dat ik een tekstvak gezet heb op dat formulier waarin ik de tekst plaats die automatisch bij de mail hoort en die eigenlijk steeds hetzelfde is. Maar als ik het formulier dicht doe is de tekst in het tekstvak natuurlijk verdwenen. Ben al op zoek gegaan op internet om hierover iets te vinden, maar stoot op niets. Ik weet trouwens niet echt goed hoe ik mijn vraag moet formuleren.

Ik denk dat het best is voor deze vraag bij deze topic te houden, maar als jij vindt dat ik hiervan een nieuwe topic moet maken laat het dan maar weten.

Van harte bedankt voor de reeds geboden hulp,
Claudine

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Ik denk dat je de helpfile over sendobject nog eens goed moet nalezen en proberen te begrijpen wat je nu eigenlijk doet. Wat je dus wilt is de bestandsnaam wijzigen van het gexporteerde rapport. Dat lukt alleen door het rapport eerst te openen en dan het actieve object te verzenden, of het rapport eerst in designview te openen, op te slaan en dan pas te verzenden. Of je maakt eerst eerst een uitvoerbestand, wijzigt de defaultnaam en verzendt het.
De oplossing van het tweede probleem is natuurlijk het formulier pas te sluiten als het rapport naar de mail gestuurd is :?

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


Verwijderd

Topicstarter
Wanneer ik het rapport eerst open, en op de open form van het rapport staat de code om de caption te veranderen, is het bijschrift inderdaad verandert. Wanneer ik dan het rapport terug sluit en daarna de code zet voor het snapshotview te verzenden, kiest hij opnieuw voor de default name.
Wanneer ik het rapport sluit na de snapshot te verzenden, loopt het echt verkeerd. Daar hij de mailbox open doet, leest hij de rest van de code waarin ik het rapport sluit niet meer. Dus het rapport blijft hidden open staan. Sluit ik het rapport heel in het begin van de code, om het dan verborgen open te doen, dan werkt alles prima, maar dit betekent wel dat het rapport hidden open blijft... niet echt proper... Hieronder volgt een gereduceerd deel van de code.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
        stDocName = "rptCoordinatorNl"
'deze extra regel is nodig om eventuele open rapporten te sluiten
        DoCmd.Close acReport, stDocName
'nu doe ik het raport open     
        DoCmd.OpenReport stDocName, acPreview ', , , acHidden
       
 'als ik hier zou sluiten dan is de naam niet verandert, dus niet sluiten hier  in commentaar    
    ' DoCmd.Close acReport, stDocName, acSaveYes
 
' De True op het einde van deze regel geeft aan dat u het bericht nog kunt wijzigen (EditMessage),
'voordat het verzonden wordt. Als u deze waarde op False zet,
'wordt uw bericht direct verzonden.  
    
 'nu verzend ik de snapshot  
  DoCmd.SendObject acReport, stDocName, acFormatSNP, _
        strMail, "Naam@gmail.com", , strOnderwerp, strBoodschap, , True

'deze laatste code wordt dus niet gelezen omdat de mailbox open gaat
DoCmd.Close acReport, stDocName, acSaveYes


Tweede probleem: Inderdaad sluit ik het formulier pas als het rapport verzonden is, maar de bedoeling is dat als het formulier terug open gaat, onmiddelijk het mailbericht kan verzonden worden zonder het opnieuw in te moeten typen, maw de boodschap voor de mail (eender naar wie) blijft steeds hetzelfde en daar hij in een gewoon tekstvak staat blijft hij niet aanwezig.

Ik dacht nu om een extra tabel aan te maken en daarin de mailboxen in verschillende talen onder te brengen, teneinde deze zo op te roepen op het formulier en deze statische berichten zo te gebruiken. Het voordeel hiervan zou zijn dat ik indien nodig de gebruiker toch toelaat om de berichten aan te passen. Ik had graag je mening hierover, misschien zijn er andere mogelijkheden.

Verwijderd

Topicstarter
Beste Tweakers, voor eventuele geïnteresseerden hier de oplossing voor alle voorgaande problemen.

Volgende code achter de knop mail verzenden
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
On Error GoTo Err_cmdOverzicht_Click
'een variabele voor het emailadres
    Dim strMail As String
'een variabele om de aard van het document te bepalen
    Dim stDocName As String
'een variabele voor de naam van de snapshotview
    Dim strNaamSNP As String
'een variabele voor de boodschap van de mail
    Dim strBoodschap As String
'een variabele voor het onderwerp
    Dim strOnderwerp As String
    Dim strOnderwerpFr As String
    Dim strOnderwerpNl As String
'toekennen van de waarden aan de variabelen
    strOnderwerpFr = "Données du coordinateur infomatique locale"
    strOnderwerpNl = "Gegevens van de lokale informaticacoördinator"

'de boodschap wordt gehaald uit een niet zichtbaar tekstvak
'gebaseerd op een tabel die gelinkt is aan de tabel taal  (1-1)
    strBoodschap = Me.booBoodschap

'het emailadres bepalen vanop de subform op het formulier
    strMail = [Forms]![frmCoordinatorInput]![Email]![emlMail]
'naargelang de taal van de persoon wordt het report verandert
'als de persoon nederlandstalig is zal een report met nederlandstalig adres verzonden worden
'als de persoon franstalig is zal een report met franstalig adres verzonden worden
'als de persoon duitstalig is zal een report met franstalig adres verzonden worden
    If Me.cooTaalId = 1 Then
        stDocName = "rptCoordinatorNl"
        strOnderwerp = strOnderwerpNl
'eerst sluit ik het rapport voor in geval het nog zou open zijn van een vorige keer te gebruiken
        DoCmd.Close acReport, stDocName
'nu open ik het rapport opnieuw en zal het rapport de caption, het bijschrift veranderen doordat
'de code on open wordt uitgevoperd bij het openen van het rapport
        DoCmd.OpenReport stDocName, acPreview, , , acHidden
    
        
    ElseIf Me.cooTaalId = 2 Then
        stDocName = "rptCoordinatorFr"
        strOnderwerp = strOnderwerpFr
'eerst sluit ik het rapport voor in geval het nog zou open zijn van een vorige keer te gebruiken
        DoCmd.Close acReport, stDocName
'nu open ik het rapport opnieuw en zal het rapport de caption, het bijschrift veranderen doordat
'de code on open wordt uitgevoperd bij het openen van het rapport
        DoCmd.OpenReport stDocName, acPreview, , , acHidden
    Else
        stDocName = "rptCoordinatorFr"
        strOnderwerp = strOnderwerpFr
'eerst sluit ik het rapport voor in geval het nog zou open zijn van een vorige keer te gebruiken
        DoCmd.Close acReport, stDocName
'nu open ik het rapport opnieuw en zal het rapport de caption, het bijschrift veranderen doordat
'de code on open wordt uitgevoperd bij het openen van het rapport
        DoCmd.OpenReport stDocName, acPreview, , , acHidden
    End If
    
' De True op het einde van deze regel geeft aan dat u het bericht nog kunt wijzigen (EditMessage),
'voordat het verzonden wordt. Als u deze waarde op False zet,
'wordt uw bericht direct verzonden.  Wanneer u Outlook gebruikt als e-mail verzend programma,
'kan het zijn dat Outlook in dat geval een venster weergeeft waarin u pas na vijf seconde op een knop Ja mag klikken.
'Outlook voorkomt hiermee dat programma's die met een virus besmet zijn, buiten uw goedkeuring ongewenst e-mail verzenden.
    DoCmd.SendObject acReport, stDocName, acFormatSNP, _
        strMail, "mailadresInCc", , strOnderwerp, strBoodschap, , True
 'volgende code wordt enkel uitgevoerd als het sendobject effectief wordt uitgevoerd
 'bij annulatie van het sendobject wordt de rest van de code niet meer uitgevoerd
 'vandaar dat we het rapport nogmaals sluiten in het begin van de if
    DoCmd.Close acReport, stDocName
    
Exit_cmdOverzicht_Click:
    Exit Sub

Err_cmdOverzicht_Click:
    Msgbox Err.Description
    Resume Exit_cmdOverzicht_Click


Voor de messageboxen maakte ik een extra tabel aan en koppelde deze aan de tabel taal met een 1 op 1 relatie. Het aanmaken van die extra tabel met het bericht in zorgde ervoor dat ik eventueel het bericht nog kon aanpassen in aan andere form. Voor deze boodschapmemoveld zette ik de eigenschap zichtbaar op nee op het formulier.

Op het report zelf schreef ik volgende code on open:
code:
1
2
3
Private Sub Report_Open(Cancel As Integer)
Me.Report.Caption = [Forms]![frmCoordinatorInput]![cooNaam] & " " & [Forms]![frmCoordinatorInput]![cooVoornaam] & " " & Format(Now(), "dddd d mmmm yyyy hh:nn:ss")
End Sub
Pagina: 1