Avatar billede dkoclni Nybegynder
16. november 2004 - 14:13 Der er 18 kommentarer og
1 løsning

Ændre rapportens indhold, afhængig af værdi i aktuelle post

Dette er sikkert et stykke af en kage for jer...:

Jeg vil gerne ændre indholdet på en rapport, afhængig af værdien af den aktuelle post der skrives på rapporten.
Data til rapporten bygger på en forespørgsel som returnere X antal poster der skal udskrives.
Det jeg bl.a. vil er: Afhængig af værdien af et af felterne i den aktuelle post, så skal rapportens fortrykte tekst, ændres til enten engelsk eller dansk.

Et lille forenklet eksempel:

Tabel A indeholder (og dermed også indholdet i forespørgslen):
String: "Fornavn"
String: "Efternavn"
Boolean: "Engelsksprog"

Indholdet kunne derfor være:
Hans, Petersen, false
Peter, Hansen, false
Jake, Something, true
Elise, Anything, true

Lad os sige at rapporten ikke indeholder andet end én fortrykt sætning, nemlig "Dit navn er: " (herefter indsættes en sammensætning af fornavn og efternavn).
Denne sætning vil jeg gerne ændre til "Your name is: ", hvis værdien i "Engelsksprog" er sand.
Det vil altså sige at de første to sider skrives på dansk og de efterfølgde to på engelsk jævnfør ovenstående eksempel.

What to do?

Hvordan styre man gennemløbet af dataene til rapporten, så jeg for hver side der udskrives af rapporten kan undersøge indholdet af posten og dermed rette de fortrykte ting - samt sammensætte variable til en (fornavn & " " & efternavn)?

Jeg ved at det sikkert er totalt basalt, men jeg er vant til at programmere tingene i Java, og der styre man det jo selv, med hård hånd....
Avatar billede jensen363 Forsker
16. november 2004 - 14:32 #1
Private Sub Report_Page()
   
    If Engelsksprog.Value = True Then
      Tekst.Value = "Your name ..  "
    Else
      Tekst.Value = "Dit navn ..  "
    End If
   
End Sub
Avatar billede dkoclni Nybegynder
16. november 2004 - 14:53 #2
Jamen, there you go. Såre simpelt...! ;)

Takker for det!
Avatar billede jensen363 Forsker
17. november 2004 - 09:10 #3
Velbekommen, skulle det være en anden gang ... c",)
Avatar billede dkoclni Nybegynder
18. november 2004 - 17:26 #4
OK, jeg var måske for hurtig der... Det virker nemlig ikke....

I dit eksempel hvor du skriver Engelsksprog.Value, er Engelsksprog da et element i rapporten eller et element i recordset'et??

Grunden til at jeg spørger, er at jeg slet ikke kan få det til at virke med selv den simpleste forespørgsel som kilde til rapporten.

Jeg har prøvet følgende (bare som et eksempel):

Postkilde er: SELECT holdnr FROM hold;

Dette resultere i en masse holdnr når forespørgslen køres, så data er ok.

I rapporten er der et enkelt ubundet tekstfelt (og ikke andet), som er det jeg gerne vil manipulere afhængig af værdien af feltet i forespørgslen. I dette tekstfelt kunne jeg godt tænke mig at kunne skrive f.eks. "Hello world" , hvis f.eks. holdnr starter med 2.

Men når jeg prøver at tilgå indholdet af HoldNr i den aktuelle post i forespørgslen/recordset'et, så fejler den i Private Sub Report_Page(), med fejlen at den ikke kan finde feltet HoldNr der refereres til i udtrykket.

Er det fordi at data SKAL ind som bundne felter i rapporten, før dataene kan tilgås??? Hvis ja, hvordan faen kommer man uden om det, da jeg vel ikke er den første der godt kunne tænke sig at indsætte manipuleret data i ubundne felter i en rapport??
;)
Avatar billede mugs Novice
18. november 2004 - 18:27 #5
Prøv at indsætte koden i Detaljesektionens VedFormattering.
Avatar billede dkoclni Nybegynder
18. november 2004 - 21:24 #6
Hvilken kode?
Avatar billede mugs Novice
18. november 2004 - 21:25 #7
If Engelsksprog.Value = True Then
      Tekst.Value = "Your name ..  "
    Else
      Tekst.Value = "Dit navn ..  "
    End If
Avatar billede dkoclni Nybegynder
18. november 2004 - 21:47 #8
Jeg havde lige en lille hjernebrist der... ;)
Jeg tester det lige i morgen, når jeg kommer på arbejde igen...

Er der da forskel på adgangen til dataene ved brugen af de to (page og vedformatering)..?
Og igen - er det nødvendigt at have bundne felter i rapporten for at kunne manipulere med dataene, eller kan man sagtens holde alle felter ubunde og indsætte data i dem for hvert gennemløb. Det er mere fordi jeg ikke gider bruge tid på det, hvis det slet ikke kan lade sig gøre...
Avatar billede mugs Novice
18. november 2004 - 21:55 #9
Koden er afprøvet i en ubundet tekstboks og fungerer.

Når du indsætter koden i rapportens VedFormattering bestemmes tekstboksens indhold allerede når rapporten formatteres. Ved Page bestemmes tekstboksens indhold når den enkelte side udskrives.
Avatar billede dkoclni Nybegynder
19. november 2004 - 07:11 #10
Cool - jeg tester lige om et par timer og vender tilbage! Takker Mugs!
Avatar billede dkoclni Nybegynder
19. november 2004 - 11:48 #11
Tja, det virker altså ikke - hva faen gør jeg galt.... ;)

For lige at holde fast i det gennemgående eksempel og det I har givet løsninger på, så har jeg gjort følgende:

Postkilde til rapporten er: SELECT Fornavn, Efternavn, Engelsksprog FROM a;
Dette giver fire records som rapporten skal arbejde med, da jeg har lagt de fire personer ind fra eksemplet, i tabellen a, ud fra eksemplet.

I rapporten har jeg ét ubundent tekstfelt kaldet Tekst (og KUN det ene tekstfelt, intet andet i rapporten!).
I rapportens VBA-kode for Detaljesektionens VedFormattering har jeg koden som den står fra Mugs 18/11-2004 21:25:24 - præcis som den står og intet andet.

Når rapporten åbnes får jeg fejlen:
Runtime Error 2465
Programskrivning kan ikke finde feltet 'Engelsksprog' der refereres til i udtrykket.

Hvordan stemmer dette overens med det I har gjort for at få det til at virke...???
På forhånd takker! (Jeg skal selvfølge nok kaste nogle flere point efter jer for jeres tid....)
**Claus
Avatar billede dkoclni Nybegynder
19. november 2004 - 12:06 #12
Nu prøvede jeg lige for sjov at skrive me. i VBA - for at se om engelsksprog, fornavn og efternavn overhovedet kunne ses af rapporten, og det kan de godt. Når jeg skriver me.engelsksprog. kan jeg kun vælge value, ganske som i løsningen. Så hvorfor pokker kan den ikke finde ud af det når rapporten åbnes...?
Avatar billede mugs Novice
19. november 2004 - 12:38 #13
Hvis du refererer til feltet engelsksprog, mener jeg dette felt skal være i rapporten. Prøv at hente det ind. Fungerer det, kan du så prøve at skjule engelsksprog i egenskaber > synlig.
Avatar billede jensen363 Forsker
19. november 2004 - 12:42 #14
Engelsksprog er forudsaf at være et afkrydningsfelt ( true/false ) i rapporten, som gerne må være skjult
Avatar billede dkoclni Nybegynder
19. november 2004 - 12:56 #15
Ja, der var den så! Når feltet hentes ind i rapporten så fungere det fint.

Men er access virkelig begrænset til at man ikke kan arbejde med dataene fra forespørgslen uden at disse SKAL repræsenteres i sin rå form i rapporten med egentlige tekstfelter, tjekboxe osv.???
Svaret er jo allerede mere eller mindre givet gennem hele dette indlæg, men det virker bare underligt at VBA sagtens kan se "engelsksprog" under kodning, men ikke under afvikling før feltet indsættes! Reelt betyder det jo at alt data der skal bruges i rapporten, men som ikke nødvendigvis skal bruges uden at det manipuleres først, skal indsættes som tekstfelter, tjekboxe osv. og dernæst skjules for brugeren... Er det sådan I andre gør det???

Anyways - tak for svaret Mugs (og jensen)!
Avatar billede dkoclni Nybegynder
19. november 2004 - 12:57 #16
Kast bare et svar - hvis der ønskes point...
Avatar billede jensen363 Forsker
19. november 2004 - 13:05 #17
Du kan godt eksperimentere med DLookUp(), men det er langt det nemmeste at medtage feltet skjult i rapporten
Avatar billede mugs Novice
19. november 2004 - 13:25 #18
Pas på med DLookUp - Den er langsom. Jeg plejer blot at skjule feltet.
Avatar billede jensen363 Forsker
19. november 2004 - 13:28 #19
Mugs > Enig, DLookUp er ikke den bedst egnede, og som dig vil jeg anbefale de skjulte felter
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester