16. november 2004 - 14:13Der 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....
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?? ;)
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...
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.
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
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...?
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.
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???
Mugs > Enig, DLookUp er ikke den bedst egnede, og som dig vil jeg anbefale de skjulte felter
Synes godt om
Ny brugerNybegynder
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.