Avatar billede dane022 Seniormester
27. marts 2004 - 16:00 Der er 14 kommentarer og
1 løsning

Oversigt med søgefunktion

Jeg skal lave en oversigt der indeholder regler for forskellige søgnehelligdage for de forskellige personalegrupper.
Der er 5 personalegrupper, 4 forskellige arbejdssteder og 14 forskellige søgnehelligdage. Det bliver ialt til 280 records hvis jeg tæller rigtigt. Er der en måde så jeg slipper for at oprette 280 records.
Jeg havde forestillet mig noget i retning af at man ved indgang til rapporten skulle blive spurgt om de 3 kriterier en efter en.
Der kan jeg så sætte parameterværdi [] i forespørgslen, men kan det lade sig gøre at der er rullegardin på parameterværdi forespørgslen ?
Avatar billede mugs Novice
27. marts 2004 - 21:48 #1
På een eller anden måde skal alle records jo oprettes. Du kan gøre det i VBA eller med en SQL. Men oprettes skal de jo. Du kan oprette 3 tabeller hver med en primær nøgle:

- Personalegrupper
- Arbejdssteder
- Søgnehelligdage

Herefter opretter du en 4. tabel med 3 kombinationsbokse, der i respektive felter henter en værdi fra de 3 andre tabeller.

Lav en formular baseret på denne 4. tabel. Her har du nu 3 kombinationsbokse. Herfra udskriver du nu din rapport, idet du sætter flg ind i en kommandoknap:





DoCmd.OpenReport "rapport1", acViewPreview, , "[Tabel1]![combo1]= '" & Me!combo1 & "' And [Tabel1]![combo2]= '" & Me!combo2 & "' And [Tabel1]![combo3]= '" & Me!combo3 & "'"

Rapporten vil nu blive udskrevet med de værdier der matcher alle kombinationsnokse i din formular.

Koden gælder kun hvis værdierne er alfanumeriske. Hvis een eller flere værdier er numeriske, skal du fjerne apostrofferne fra respektive felter.
Avatar billede dane022 Seniormester
28. marts 2004 - 00:27 #2
Tak for det, jeg må give dig kredit for at du har skrevet det i et sprog jeg forstår. Det er ikke alle der gør det. Det virker, nu bliver udfordringen de 280 records.
Avatar billede mugs Novice
28. marts 2004 - 08:16 #3
Tak for point.
M.h.t. de 280 records, er det vel ikke så slemt som det lyder. I de 3 tabeller skal du have opretet:

- 5 personalegrupper
- 4 arbejdssteder
- 14 søgnehelligdage

Ialt 23 records. Nu skal du så i den 4. tabel have disse kombineret. Og det er vel her besværet kommer. Men husk på, at du jo har dine kombinationsbokse og skal således ikke taste noget, men udelukkende VÆLGE x antal værdier fra de andre tabeller. Husk at sætte kombionationsboksene's egenskab "BegrænsTilListe" til Ja. Så kan du ikke indtaste en værdi i den 4. tabel, der ikke findes i de andre 3.

Man kan naturligvis lave en kode med nogle løkker der opretter kombinationerne, men hvis du ikke er velbevandret i VBA, tror jeg du er mere tjent med ½ times arbejde med musen.
Avatar billede dane022 Seniormester
28. marts 2004 - 12:06 #4
Jeg har et yderligere spørgsmål til dette indlæg. Jeg har fundet ud af det ikke er 280 records alligevel, så det er godt nok. Mit spørgsmål går ud på at når der går en bruger ind og søger i denne formular, så vil personen jo overskrive de værdier der står i databasen. F.eks hvis record 1 er fremme når personen udvælger kriterierne og man bruger andre værdier til sin søgning, så vil de gamle værdier blive overskrevet.
Hvad kan jeg gøre for at forhindre dette ?
Avatar billede mugs Novice
28. marts 2004 - 13:32 #5
Du kan igen arbejde med en ubundet tekstboks i din formular. Derefter indsæte flg i en forespørgsel i det du vil søge i:

Like "*" & [Forms]![form1]![Tekst0] & "*"

Hvor Tekst0 er den ubundne tekstboks.
Avatar billede dane022 Seniormester
28. marts 2004 - 20:24 #6
Jeg har nu oprettet en ubundet tekstboks. jeg har nu isat ovenstående linje
Like "*" & [Forms]![hovedtabel test]![Text12] & "*"
i forespørgslen, under feltet arbejdssted.
Hvad er næste skridt ? Når jeg prøver at åbne formularen spørger den efter parameterværdi, pga sætningen i forespørgslen.
Avatar billede mugs Novice
28. marts 2004 - 20:28 #7
Kontroller for stavefejl.
Med flg. sætning søger du i en formukar der hedder [hovedtabel test] i feltet [Text12]
Like "*" & [Forms]![hovedtabel test]![Text12] & "*"

Hedder din formular "hovedtabel test", i givet fald hedder dit ubundne felt "Text12"
Avatar billede dane022 Seniormester
28. marts 2004 - 20:36 #8
Jeg var for hurtig, jeg ville kalde den test, men havde ikke fået gjort det, jeg har nu omdøbt formularen og der kommer ikke en boks om parameterværdi.
Den formular med navnet hovedtabel test, indeholder kun det ubundne tekstfelt. Min mission nu er at få tekstfelt 12, til at søge i f.eks arbejdssted, eller en af de andre felter.
Er det her din tidligere sætning kommer ind i billedet og kan bruges til det ?
Og er det så meningen at jeg skal oprette 2 ubundne tekstfelter til og bruge dem hver især til at søge i overenskomster og helligdage ?
Jeg ville gerne have tekstfelterne til at benytte rullegardin. Korrigér mig lige hvis jeg tager fejl, men det er sådan det ser ud i mit hoved lige nu.
Avatar billede mugs Novice
28. marts 2004 - 20:40 #9
Når du bruger min sætning som beskrevet, kan du kun lade feltet søge i eet felt i forespørgslen. Men du jo kombinere det på samme måde som vist med rapporten.

I steder for tekstbokse kan du blot vælge kombinationsbokse i varktøjslinien, og lade dem få postkilde fra tabellerne.
Avatar billede dane022 Seniormester
28. marts 2004 - 20:48 #10
Er det en kombination der skal angives i forespørgslen eller formularen ?

Men hvis jeg lader den få postkilde fra de eksisterende tabeller, vil jeg så ikke have samme problem med at den overskriver mine værdier ?
Avatar billede mugs Novice
28. marts 2004 - 20:52 #11
"Er det en kombination der skal angives i forespørgslen eller formularen ?"

Når du har 3 combo i formularen og indtaster sætningen i forespørgslen, vil du kunne åbne forespørgslen visende de poster, der matcher kombinationen af combo's i formularen.

"Men hvis jeg lader den få postkilde fra de eksisterende tabeller, vil jeg så ikke have samme problem med at den overskriver mine værdier ?"

Nej - Du vælger allerede eksisterende værdier, du overskriver dem ikke.
Avatar billede dane022 Seniormester
28. marts 2004 - 21:12 #12
Det virker, jeg har nu skrevet flg sætning i formularens kode:
DoCmd.OpenReport "hovedtabel forespørgsel", acViewPreview, , "[hovedtabel]![arbejdssted]= '" & Me!Combo14 & "' And [hovedtabel]![overenskomstnr]= '" & Me!Combo17 & "' And [hovedtabel]![helligdage]= '" & Me!Combo19 & "'"
Den søger nu i de 3 tabeller, uden at overskrive som du sagde

Den sætning der står i forespørgslen kan jeg vel slette nu ?
Avatar billede mugs Novice
28. marts 2004 - 21:17 #13
Den kan du sagtens slette hvis du ikke skal bruge den. Men jeg har forstået det sådan, at du har haft 2 problemer.

Det ene løste vi iaftes, og du har kvitteret med point. Jeg har opfattet dette som et andet problem.

Men hvis tanken med dit spørgsmål idag kun er at åbne rapporten har du intetn at bruge forespørgslens sætning til.
Avatar billede dane022 Seniormester
28. marts 2004 - 21:41 #14
Det ser ud til at fungere og den sætning der står i forespørgslen, refererer til et tekstfelt der ikke eksisterer mere, så det burde ikke have betydning.
Tak for hjælpen igen, alting løser sig til sidst
Avatar billede mugs Novice
28. marts 2004 - 21:43 #15
: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