Avatar billede ullidk Nybegynder
09. april 2004 - 18:32 Der er 18 kommentarer og
1 løsning

Visning af data kun hvis checkbox er markeret

Hej!

Er igang med at lave en database, der skal kunne generere juridiske kontrakter, naermere bestemt webdesign kontrakter. En af mine tabeller hedder "elements" og indeholder flg. felter:
element_id: PK(autonumber)
element_name: Overskrift paa det enkelte element, eks. 'Email support'
element_desc: En detaljeret beskrivelse af det enkelte element.

Derudover har jeg bl.a. en form hvor bruger skal indtaste kunde navn og andre oplysninger, INKL HVILKE ELEMENTER DER SKAL MED I KONTRAKTEN.
TIl sidst har jeg en form der viser den faerdig-lavede kontrakt.

Mit sporgsmaal:
Hvordan faar jeg kun de elementer vist i sidstnaevnte formular som brugeren har valgt? Jeg tanker noget med et ekstra felt i element-tabellene med datatypen yes/no osv, men kan sgu ikke lige gennemskue det...

Haaber nogle kan hjaelpe!
09. april 2004 - 18:38 #1
Hvordn har du gemt oplysninger om hvilke elemter, som brugeren skal have med? Står de i kolonner? Eller er det (som det bør være) at det står i en relationstabel, således at BrugerID og Element_ID gemmes i én tabel?

Derved ville du jo kunne liste de valgte elemeter i en subform.

Giver det mening?
Avatar billede ullidk Nybegynder
09. april 2004 - 18:43 #2
Det er lidt det der er problemet for jeg kan jo ikke afgore hvor mange og hvilke elementer der skal med i den endelige kontrakt - det er jo op til bruger selv. Men jo, alle tabeller er relationstabeller, som samles i en tabel der heddder contract - herunder element_id. Men problemet er jo, at der som regel skal vaere mere end et element med i en en kontrakt, saa mon ikke man er ude i noget mange-til-mange forhold...?
09. april 2004 - 19:28 #3
jo, netop. For at kunne lave en mange-til-mange-relation, er man nødt til at have en relationstabel med nøglefelt fra de 2 tabeller.

Og hvis du så laver en fortløbende (eller datasheet) formular på denne tabel og bruger den som subform, vil den netop kun vise de relationer (elementer) som er valgt af brugeren.

Det er lidt svært at beskrive det eksakt, når jeg ikke kender hele dit system
Avatar billede ullidk Nybegynder
10. april 2004 - 11:17 #4
Jeg prover og haaber det virker:-)
10. april 2004 - 12:07 #5
ok, ellers siger du bare til :o)

tnhx for points :o)
Avatar billede ullidk Nybegynder
10. april 2004 - 21:03 #6
Har du evt mulighed for at give mig et eksempel paa hvordan man kan goere? Jeg har flg. felter i element tabellen:
element_id
element_navn
element_desc

Er det noget med et ekstra felt med datatype yes/no eller hva?
11. april 2004 - 11:23 #7
Prøv at kigge på denne: http://www.makeiteasy.dk/eksempler/test.zip

Det er sådan, jeg har forstået opgaven ;o)
Avatar billede ullidk Nybegynder
14. april 2004 - 18:34 #8
Hej Thomas,

Tak for dit eksempel, men ak...det er ikke helt sådan det skal forstås:-(
Hmm...
Ok..:-)
Forestil dig en underformular hvor der vises en checkbox ved navn is_selected og så en textbox ved navn element_name. Skjult ved siden af ligger en tekstbox med element_id. Nu er spørgsmålet så...:
Hvordan f.... kan jeg med én knap få indsat alle de element_id'er, hvor den tilsvarende checkbox er afkrydset, i en tabel?
Har prøvet med If is_selected = -1 Then bla bla....men der indsætter den kun
værdien af den første afkrydsede box ligemeget om der er fem mere, der også er markeret...
Jeg tænker evt noget med noget For Each...men kan ikke gennemskue det:-(
Håber du har tid og mod på at lægge hjernen i blød endnu engang?!

Ulli
14. april 2004 - 20:55 #9
hmm, der er flere problemer i dette. Hvis du bare placerer en ubunden checkboks i en fortløbende formular, vil de alle blive afkrydset i det øjeblik du sætter kryds i én af dem.

Alternativt skulle du oprette feltet i tabellen Elements og så lade denne tabel indgå i subformen. Derved ville man kunne benytte en tilføjelsesforespørgsel til at oveføre alle de elementer, som var krydset af. Men så opstår der en række andre problemer: I et flerbrugermilø kan dette slet ikke lade sig gøre, da du risikere at tilføge elementer, som en anden bruger har valgt - ligesom du også skal sørge for at fjerne krydserne igen efter overførslen og derved risikere at slette andre brugeres krydser.
Kan du følge mig? Har jeg forstået dig rigtigt denne gang?
Jeg ved godt, at mit forslag ikke er helt så brugervenligt, som hvis man bare kunne sætte krydser, men ville mit forslag ikke virke efter hensigten?

Jeg siger ikke, at dit problem ikke kan løses. Men det kræver en del omstrukturering og programmering for at få det til at virke.
Avatar billede ullidk Nybegynder
14. april 2004 - 22:10 #10
Det som du skriver er, så vidt jeg kan bedømme, lige præcis det jeg er nået til indtil videre: Nemlig feltet is_selected (checkbox) og det tilhørende felt element_name som begge er fra tabellen elementes, som indgår som eneste tabel i subformen Elements...
Min DB skal ikke, som udgangspunkt, være i et flerbruger miljø, så det skulle være muligt med lidt "work around" at undgå at der kommer komplikationer i forbindelse med brugers valg af elementer...
Den tilføjelsesforespørgsel du snakker om...kan du give et bud på den?
Tak!
14. april 2004 - 22:29 #11
Noget á la dette:
Insert INto [Den anden tabel] ( Bruger_ID, Element_ID ) Select Forms![DinFormular]!BrugerID, Element_ID From Elements Where Is_Selected = True

Forms![DinFormular]!BrugerID kunne også erstattes af f.eks. Environ("Username"), hvis du ville indsætte windows-login eller hvad ved jeg.

Efterfølgende skal du så køre en opdateringsforespørgsel som fjerner krydserne:
Update Elements Set Is_Selected = False
Avatar billede ullidk Nybegynder
14. april 2004 - 22:41 #12
Skal lige være sikker:-)

Insert INto [Den anden tabel] ( Bruger_ID, Element_ID ) Select Forms![DinFormular]!BrugerID, Element_ID From Elements Where Is_Selected = True

skal altså indsættes som en event procedure på en knap (f.eks.)?
14. april 2004 - 22:44 #13
både den og "Update Elements Set Is_Selected = False" kan placeres i 2 forespørgsler.
På knappens OnClick-event kan du så kalde dem således:

docmd.setwarnings false
docmd.openquery "Forespørgsel1"
docmd.openquery "Forespørgsel2"
docmd.setwarnings true
Avatar billede ullidk Nybegynder
14. april 2004 - 22:51 #14
Jeg tror sgu vi er MEGET tæt på nu! Men af en eller andet grund får jeg
en pop-up med parameter value for element_id til trods for at feltet er med i
formularen?!
14. april 2004 - 22:53 #15
Er det også med i [Den anden tabel]?
Avatar billede ullidk Nybegynder
14. april 2004 - 22:57 #16
Ja, som fremmednøgle til element_id fra element-tabellen
14. april 2004 - 23:14 #17
hmm, jeg kan ikke lige komme i tanke om noget andet, der kan være galt..men jeg er også ved at være godt mør i hovedet...fik ikke så meget søvn i går, så jeg bliver nok nødt til at smutte nu....Zzzzz
hvis du ikke selv finder fejlen inden i morgen, så smid et indlæg, så kan vi evt kigge lidt videre på den.

'nat :o)
Avatar billede ullidk Nybegynder
14. april 2004 - 23:15 #18
Det er smukt! Sov godt!:-)
Avatar billede ullidk Nybegynder
15. april 2004 - 16:52 #19
Hej igen,

Har fåe tindsnævret problemet til:

1) Parameter value-boxen kommer fordi subformen af en eller anden grund ikke er loadet?! Når jeg har samtidig har subformen åbent alene i baggrunden så virker forespørgslen. MEN!!....
2) Når jeg markerer f.eks. checkbox 2, 4 og 10 så indsættes der i stedet tre gange 1 i tabellen...?!

Siger det dig noget?
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