09. april 2004 - 18:32Der 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...
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.
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...?
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
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?
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?!
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.
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!
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
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?!
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.
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?
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.