17. januar 2006 - 14:58Der er
18 kommentarer og 2 løsninger
Kopier fra felter til felter i anden post
Hejsa.
Jeg har en form der viser en enkelt posts informationer.
Der har jeg så ca. 15 felter der skal kunne kopieres fra en anden posts felter (i samme form og samme db). Så har jeg en kombo box hvor jeg kan vælge hvilken anden post den skal kopiere indholdet af felterne fra.
Hvordan får jeg lavet så når jeg vælger posten i combo boxen, så indsætter den alt i felterne ud fra valget i comboboxen?
Grunden til at jeg skal bruge dette er da der er mange poster der ligner hinanden, og derved kan jeg slippe for at skulle skrive det samme igen og igen.
Jeg ved ikke om jeg forstår :D, men det lyder som om du vil have en komboboks, der slår op i samme tabel, som der skal tilføjes til. Jeg er ikke sikker, men jeg tror det kan give problemer. Derudover lyder det som om det vil give en masse redundante data, hvis en stor del af posterne er ens.
Der vil ikke komme til at være redundante dat da jeg kun ønsker at få kopieret felterne så jeg ikke skal skrive div. ting igen og igen, og huske hvad jeg skulle skrive.
Og ja netop jeg vil have en kombiboks der vælger en post og tager de angivne felters indhold og sætter ind i den nuværende åbne post..
Det lyder som om din tabel med fordel kunne deles op. Hvis du har 15 felter med data der blot skal replikeres for hver ny post fremfor at skulle anedres, saa kan du med fordel smide disse 15 i en anden tabel og oprette relationer istedet.
Hvis du mener at du vil vil kopiere data ind for derefter at rette det til ny data vil jeg mene at det er en yderst risikabel metode da du meget nemt risikere at overse rettelser osv da der vil ligge data i alle felterne.
Hej hvis jeg forstår det rigtigt så vælger du en ellerede oprettet post i den com direkte på formen, dvs. at comboben returnere den post der er valgt, d er dette korrekt ?, hvis kan kan du lægge nedenstående kode under comboens After Update event
Koden kopiere indholdet af alle felter på den aktive post, går derefter til en ny post i formen og indsætter posten. Koden kan generes via den indbygget VBA guide.
Hvis man ikke ønsker at det skal køre så automatisk, kan man i stedet køre koden ved klik på en kommandoknap, når combovalget har returneret den valgte post.(anbefales)
For at kunne få comboen til at gå til en valgt post er det nødvendigt at posten kan genkendes unikt feks. en nøgle i tabellen. Du kan så indsætte en combo på form vha. at benytte guiden til formålet, og her vælge den værdi du ønsker, dette valg er så comboens første kolonne (0)
Jeg tror ikke rigtig det er noget af det jeg søger.
Når jeg står på en post i formen er denne post allerede oprettet, og har et "varenummer"!!
Der er så nogle detaljer der skal udfyldes (de 15 felter) og derfor ville jeg kopiere feltindholdet fra en vare der lignede denne vare meget, hvilket ville lette indtastningsfasen. Så jeg har altså åbnet en post med 2-3 felter der "er" udfyldt, og så vil jeg kopiere de andre 15 fra en anden post og tage de få tilretninger der nu måtte være.
Dim VARa as string Dim VARb as string VARa = Me!Felt1 VARb = Me!felt2 DoCmd.GoToRecord acForm, "Form1", acNewRec Me!Felt1 = VARa Me!Felt2 = VARb
Når det kun er udvalgte felter. Du skal så lave noget kode, der finder den post du er i færd med at oprette. Du kna neturligvis også finde den post du ønsker at kopiere inden du begynder at oprette den nye post.
Hmm ok, lige for at få det helt på plads, så står jeg på den post jeg ønsker at rette, og det er ind i den post jeg vil kopiere felterne fra en anden post. Dertil havde jeg lavet en combo box hvori jeg har de andre poster som valg, og havde så forstillet mig at jeg kunne sætte det nødvendige kode ind på box'ens afterupdate, og så ville den tage felter fra den valgte post og sætte ind i den nuværende.. Kan ikke helt finde ud af om det er det du mener, men jeg er ikke ved at "oprette" en post, blot ved at rette i den..
Så skal du undlade at gå til en ny post. Men når du står i en post du vil rette, og søger efter en anden post, må du nødvendigvis have en kode, der finder den post igen, som du vil rette.
Dim VARa as string Dim VARb as string VARa = Me!Felt1 VARb = Me!felt2 Me!Felt1 = VARa Me!Felt2 = VARb
Som mugs er rigtigt er inde på skal du ikke gå til en ny post, men spørge på de værdier du vil have indsat i den post der allerede er oprettet. disse værdier er som jeg læser det nogle mere eller mindre statisiske værdier der kan reg. for et varnummer ?.
Man kunne lave en form for sabelonstyring til dette i en seperat tabel, tabellen kunne så indeholde et felt med et sigende navn på skabelonen, samt et x antal felter med standardværdier.
På den form du benytter til at reg. vare kunne du indsætte en combo som for data fra din skabelon tabel.når posten er oprettet med et vare nummer kunne man vælge en skabelon fra comboen og via DlookUp funktionen få udfyldt de 15 felter med en standardværdi fra skabelontabellen. Dette kunne være en måde at gøre det på, den er ikke lige til højrebenet, men det sagtens lade sig at gøre at lave det.
Du også sagtens lave det dom forslået 17/01-2006 17:33:39, her gemmer du blot standardværdier til de 15 felter i nogle variabler.
Ok, jeg er vidst ved at fange den nu, men jeg er desværre ikke så skarp til alt det kodning.
Hvor skal denne kode sættes ind til på comboboxen??
Jeg kom til at spekulere på om det ikke var muligt at lade comboboxen indeholde de 15 kolonner for hvert produkt, og så når man valgte et produkt kopierede den fra kolonnerne til dokumentet?? Eller er det helt ude i skoven?
En combo kan kun indeholde max 8 kolonner, men kan du holde det indenfor det, kan det gøres som du selv er inde på, ellers må der andre metoder til.
En mere simpel løsning kunne være at angive en standardværdi for alle de berørte felter, denne væredi er så altid automatisk skrevet i de berørte felter når du opretter en ny post.
Hvis du går i designvisning på din form, og højreklikker på et felt og derefter vælger egenskaber for feltet, kan under fanebladet Data anive en sådan standardværdi, denne metode kræver ingen kodning.
Ja den sidste løsning ville jo være en mulighed, men kan desværre ikke bruges da man skal kunne kopiere data'ene fra et produkt der ligner, og derfor vil der være mange "standard" værdier :-)
Det var da ærgeligt den kun kan have op til 8 kolonner, virkede ellers som en nem løsning.
Men jeg må vel prøve at bikse mig gennem med mugs forslag 17:33:39, men kan bare ikke lige se hvad den gør, og hvor den skal gøre det..
Der er jo tale om mange felter der skal udfyldes automatisk, det kan være lidt svært at styre, og det skal jo også på en eller måde kunne vedligholdes. Jeg tror at den med skabelontabellen er den rigtige vej.
Hvis du har mod på det er du velkommen til at sende DB til mig, så vil jeg gerne prøve at skrue et forslag sammen. Du finder min mailadresse ved at klikke på mit brugernavn, husk at zippe den.
Jeg kom frem til at benytte mig af metoden med kolonnerne i comboboxen, det passede fint ind at jeg lavede 2 comboboxes, med henholdsvis 12 og 8 kolonner, det fungerer fint.
Jeg deler pointene mellem mugs og aandersen, mange tak for hjælpen.
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.