27. marts 2004 - 16:00Der 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 ?
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:
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:
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.
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.
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 ?
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.
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"
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.
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.
"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.
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 ?
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
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.