Avatar billede saxbjorn Nybegynder
09. september 2005 - 13:16 Der er 22 kommentarer og
2 løsninger

Udskrift via forespørgsler

Hej Eksperter

Jeg har lavet en time reg database.

Hvis jeg har en bestemt uge (39) hos en bestemt kunde (Kunde 1) kan jeg så godt lave en knap der udskriver en rapport.

Hvis jeg nu laver et udskrift hvor jeg vælger måned og kunde kan jeg vel få samtlige records ud på udskrift??

Det må være noget med forespørgsler??


//Charlotte
Avatar billede -anders- Juniormester
09. september 2005 - 14:01 #1
Hej Charlotte, dette kan godt lade sig gøre,men der er mange måder at lave det på, det afhænger af om du har en sepereat kundetabel med kundeoplysninger, har du feks en ordredato så vi kan beregne ugenr og eller måned e.t.c. Er der relationer i databasen o.s.v. Så lidt flere oplysninger ville hjælpe :o)
Avatar billede -anders- Juniormester
09. september 2005 - 14:57 #2
har leget lidt med det, prøv flg:

Opret en ny forspørgsel, og vælg alle relevante felter fra en eller flere tabeller, eks. forudsætter at du har et datofelt (kort datoformat af datatypen Dato,klokkeslet, samt en kundetabel hvor en kunde har et unikt ID).

Først skal vi finde ugenummer, i en tom kolonne i forspørgsel skriver du:
UgeNr: Format([DatoFelt];"ww")

Så finder vi måned (to cifret tal)
Mdr: Format([Dato];"mm")

Til sidst årstal (firecifret tal)
År: Format([Dato];"yyyy")

Hvis du har en kundetabel hvor kunden har et unikt nummer skal dette felt være i forspørgsel i kriteriefeltet for kundeID skriver du flg:
[Indtast KundeID]

I Kriteriefeltet Ugenr skriver du:
[Indtast Ugenr]

I Kriteriefeltet Mdr skriver du
[Indtast måned]

I kriteriefeltet År skriver du:
[Indtast årstal]

Luk og gem forspørgsel.

Når du nu åbner forspørgsel bliver du promtet for KundeId,Ugenr,Måned, og årstal, indtast parametereværdien for kriterierne, og du vil nu se at data i forspørgelsen er begrænset til dine kriterier.

Opret en ny rapport og vælg din forspørgsel som postkilde, når du åbner rapporten bliver du igen promtet og vupti din rapport er klar til udskrivning.
Avatar billede -anders- Juniormester
09. september 2005 - 14:59 #3
Husk at feltnavne i ovenstående eks. skal erstattes med dine egne feltnavne, der finde en mere elegant måde end ovenstående, men dette virker.
Avatar billede -anders- Juniormester
09. september 2005 - 15:18 #4
Hvis du skulle få problemer med det vil jeg gerne kikke på det evt. kan du maile database, du finder min mailadresse ved at klikke på mit brugernavn.
Avatar billede -anders- Juniormester
09. september 2005 - 17:30 #5
For god ordens skyld indlægget 09/09-2005 14:57:49 var tænkt som et svar :o)
Avatar billede mugs Novice
10. september 2005 - 07:24 #6
Hvis du har data fremme i din formular, kan du udskrive med kriterierne fra din formular således:

Med et numerisk kriterie
DoCmd.OpenReport "rapport1", acViewPreview, , "[Tabel1]![tal] = " & Me!tal & ""

Med et alfanumerisk kriterie:
DoCmd.OpenReport "rapport1", acViewPreview, , "[Tabel1]![tekst] = '" & Me!tekst & "'"

Med flere alfanumeriske kriterier:
DoCmd.OpenReport "rapport1", acViewPreview, , "[Tabel1]![tekst]= '" & Me!tekst & "' And [Tabel1]![Tekst1]= '" & Me!Tekst1 & "' And [Tabel1]![tekst2]= '" & Me!tekst2 & "'"

Med kombineret alfanumerisk og numerisk kriterie:
DoCmd.OpenReport "rapport1", acViewPreview, , "[Tabel1]![tekst]= '" & Me!tekst & "' And [Tabel1]![tal]= " & Me!tal & ""
Avatar billede mugs Novice
10. september 2005 - 10:18 #7
En lidt anden mulighed er, at du i forespørgslen refererer til din formular og overfører et kriterie til forespørgslen:

=[Forms]![formularnavn]![feltnavn]

Skrives på kriterielinien under det felt hvori kriteriet liger.
Avatar billede saxbjorn Nybegynder
12. september 2005 - 18:28 #8
puuhhaa... har ikke haft tid til at kigge på det - men det vil jeg gøre - måske onsdag!! Super tak for svar, det ser indviklet ud men det er det nok ikke når jeg først kommer i gang. kan godt følge lidt af logikken :-)

Min kunde er ikke baseret på et id, men et kundenavn (men unikt), kan jeg ikke bruge det som en slags "id"?.
Tror jeg bedst kan håndtere svaret fra 09/09-2005 14:57:49 - det ser mest overskueligt ud - I er sku rigtig søde til at svare hurtigt - skal nok komme efter det og blive færdig - høre nærmere!!

//Charlotte
Avatar billede saxbjorn Nybegynder
12. september 2005 - 18:32 #9
Kan man for øvrigt ikke nøjes med at skrive

I Kriteriefeltet Mdr [Indtast måned]
I kriteriefeltet kundeID [Indtast KundeID]

... og så alt det andet der følger med ...
Så må man vel få en rapport for en given måned med en unik kunde

//Charlotte
Avatar billede mugs Novice
12. september 2005 - 18:37 #10
Når kundenavnet er unikt kan du sagtens bruge det.

Og du kan sagtens nøjes med:

I Kriteriefeltet Mdr [Indtast måned]
I kriteriefeltet kundeID [Indtast KundeID]
Avatar billede mugs Novice
12. september 2005 - 18:39 #11
Hvad der er bedst at bruge kan du kun svare på selv. Jeg har blot suppleret aandersen's svar med at par andre muligheder. Ved f.eks at bruge denne:

DoCmd.OpenReport "rapport1", acViewPreview, , "[Tabel1]![tal] = " & Me!tal & ""

Har du ikke noget kriterie i forespørgslen, og du kan således bruge den til andre rapporter. Hvorimod disse løsninger.


I Kriteriefeltet Mdr [Indtast måned]
I kriteriefeltet kundeID [Indtast KundeID]

"låser forespørgslen" til dette specifikke formål.
Avatar billede -anders- Juniormester
12. september 2005 - 21:41 #12
Hej, som mugs siger kan du godt bruge kundenavnet unikt, men det kræver så at du skriver kundens navn præcist, derfor ville det være nemmere hvis kunden havede en eller anden form for unikt ID, feks. et tal eller nogle initialer.

Skal poster for en kunde vises feks. for en bestemt uge eller en bestemt måned kommer du ikke uden om at skulle beregne disse ud fra en valid dato
Avatar billede -anders- Juniormester
12. september 2005 - 21:46 #13
Det samme med årstallet, hvis du feks. vælger august mdr vil alle poster jo vises uanset årstal for den valgte kunde, men er dette meningen er den god nok, ellers skal årstallet også bruges som kriterie.

Alternativt kan du køre det hvor man vælger/indtaster en startdato og en slutdato, og så vælger en kunde feks. via en combobox, mugs er inde på det i dette indlæg.
Avatar billede -anders- Juniormester
12. september 2005 - 21:47 #14
Ups, det var dette indlæg 10/09-2005 10:18:53
Avatar billede saxbjorn Nybegynder
15. september 2005 - 10:32 #15
Kundenavn kunne jo være en combobox??
Avatar billede -anders- Juniormester
15. september 2005 - 10:52 #16
Ja, hvis man køre det via en form, kan man vælge kunde via en combobox (kundedata fra tabellen)
Avatar billede mugs Novice
15. september 2005 - 11:03 #17
Det er fuldstændig ligegyldig om kundenavn ligger i en tekstboks eller en combo. Jeg ville nok foretrække en combo, idet det eliminerer stavefejl.
Avatar billede -anders- Juniormester
15. september 2005 - 11:29 #18
Hej mugs, enig, som jeg forstår spørgsmålet vil bruger trække data for en bestemt kunde i en bestemt periode, defor forslår jeg en parameterforspørgsel der reff. til 3 felter i en formular Startdato, Sludato, og til sidst kundedata (som kunne vælges via en combo), men lad os vente og se hvad saxbjorn melder ud,men syntes du at en parameterforspørgsel er en god ide her :o)
Avatar billede -anders- Juniormester
15. september 2005 - 11:50 #19
Her er et eksp. på hvordan det kunne fungere med en parameterforspørgsel:

1. Opret en forspørgsel, og medtage alle relevante felter fra tabellen.

2. Opret en ny formular, navngiv den frm1.

3. I desigvisning på formen indsætter du først 2 ubunde tekstbokse, formatet skal være kort datoformat, navngiv tekstboksene txt1 og txt2.

4. Opret nu en ubunden combobox navngiv den combo1, rækkekilden til comboen skal være feltet med kundedata fra tabellen, gem og luk formularen.

5. Åbne din forspørgsel i designvisning, i dit datofelt i kriterie skriver du:
Between [Forms]![frm1]![txt1]And [Forms]![frm1]![txt2]

6.I feltet med kundedata i kriterie skriver du:
[Forms]![frm1]![combo1]. Gem og luk din forspørgsel.

7. Åben formularen frm1, og indsæt en komandoknap, under hændelse ved klik skriver du:
Dim stDocName As String
stDocName = "NavnPåDinForspørgsel"
DoCmd.OpenQuery stDocName, acNormal, acEdit, gem og luk formularen.

8. Åben din formular, indtast start og slutdato, vælg til sidst den aktulle kunde, og klik på knappen, nu åbnes forspørgslen og viser data for de valgte kriterier.

9.Nu er det blot at lave din rapport, og ændre koden på kommandoknappen.
Avatar billede mugs Novice
15. september 2005 - 12:40 #20
En parameterforespørgsle er udmærket til formålet, omend jeg ville foretrække mit forslag og indsætte kriterierne direkte i udskrivningskommandoen. Det gør at forespørgslen kan anvendes til andre rapporter. Dermed udgår brugeren et hav af forespørgsler.

Vedr. din sidate kommentsar pkt 7 kan det forenkles til:

DoCmd.OpenQuery "Forespørgslens navn"
Avatar billede saxbjorn Nybegynder
15. september 2005 - 13:30 #21
uha... i taler kode sprog! :-)
Som tidligere nævnt er jeg nybegynder i access men troede ikke det var så stort et problem. Det virker som beskrevet i 09/09-2005 14:57:49
men der bliver ikke taget data med fra forespørgslen.

//Charlotte
Avatar billede mugs Novice
15. september 2005 - 13:42 #22
Og du er sikker på, at der er poster der opfylder kriterierne?

Tag evt. en kopi af din forespørgsel og slet alle parametrerne. Indtast derefter dine kriterier direkte i i forespørgslens kriterielinie. Kør forespørgslen og se om der kommer poster med. Evt. kan du sende din db til:

mugs@mail.dk

så vil jeg se på den iaften. Husk:

- Komprimer den i Funktioner > Komprimer og reparer database.
- Zip den.
Avatar billede saxbjorn Nybegynder
19. september 2005 - 16:04 #23
må vist hellere give point - jeg finder ud af noget :-)

Tak for hjælpen ind til nu

//Charlotte
Avatar billede -anders- Juniormester
19. september 2005 - 16:11 #24
Hej Charlotte, selv tak, og tak for point, jeg håber du kommer godt videre med projektet, har du flere spørgsmål, er du velkommen til at vende tilbage :o)
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