Avatar billede sigyn Seniormester
16. august 2010 - 08:42 Der er 12 kommentarer og
1 løsning

Bruge del af tabel som skabelon

Jeg har en tabel, hvor de to første feler er en dobbeltnøgle (Access2000). Jeg kunne frygtelig godt tænke mig, at kunne kopiere dele af den tabel via en formular, og så tildele en ny Nøgle1

Tabellen kunne se ud som nedenstående

Nøgle1    Nøgle2    Data1    Data2    Data3
1    bla    ja    1    x
1    blabla    ja    2    v
1    blæver    nej    3    b
2    bla    ja    1    h
2    blæver    ja    3    v
2    sludder    ja    4    c

Så ville jeg gerne, i formularen trække f. eks den del, hvor Nøgle1 er 1, ændre 1 til tre, evt rette lidt i data, og så tilføje det til den oprinelige tabel, så den kom til at se således ud

Nøgle1    Nøgle2    Data1    Data2    Data3
1    bla    ja    1    x
1    blabla    ja    2    v
1    blæver    nej    3    b
2    bla    ja    1    h
2    blæver    ja    3    v
2    sludder    ja    4    c
3    bla    nej    2    v
3    blabla    ja    2    v
3    blæver    nej    3    b

"Skabelontabellen" kunne evt. være en tabel, hvorfra jeg så hentede og ændrede inden det røg i en anden tabel.

Kan det lade sig gøre ? og i så fald, hvordan ?

Hilsen Sigyn
18. august 2010 - 09:08 #1
Jeg er i gang med at kikke paa det her.  Lad mig foerst fortaelle hvad jeg forstaar opgaven er saa du kan checke om jeg har forstaaet dig rigtigt.

Du har en tabel med en dobbeltnoegle og et antal datafelter.  Hvis du saa vaelger en af vaerdierne i Noegle1 saa vil du have en alle raekker med den Noegle1 skrevet ud paa en maade saa du kan redigere i datafelterne, og naar du har redigeret vil du have disse raekker foejet til tabellen med en ny noegle1.

Det kan med den rigtige ekspertise sagtens lade sig goere.  For at checke om jeg har denne ekspertise, eller som hjaelp til at udvikle den, er jeg i gang med at lave en minidatabase.  Min situation er at jeg selv er i gang med at laere Access.  Yderligere maa jeg naevne at mit system er paa hollandsk og jeg kender ikke de danske betegnelser for de forskellige kontroller, men jeg haaber det bliver nogenlunde forstaaeligt. 

Jeg lavede foerst en Tabel1 med felterne Noegle1, Noegle2, og Data1 og brugte i Noegle1 og Noegle2 de samme vaerdier som du viste.

Saa lavede jeg en Formular1 med en liste med kilde "SELECT DISTINCT Noegle1 FROM Tabel1" og en knap.  Naar brugeren har valgt en af Noegle1 vaerdierne i listen og trykket paa knappen kommer der en Formular2.

Formular2 indeholder en Tabel2 med de raekker fra Tabel1 der har den valgte Noegle1 vaerdi.  I Tabel2 er felterne Noegle1 og Noegle2 ikke-aktive saaledes at de ikke kan redigeres, men brugeren kan redigere vaerdierne i feltet Data1.  Naar brugeren er faerdig med at redigere og trykker paa en knap saa skal systemet finde den naeste ledige Noegle1 vaerdi (n = MAX(Tabel1.Noegle1) + 1), erstatte Noegle1 vaerdien med n, og saa tilfoeje Tabel2 vaerdierne til Tabel 1 (INSERT INTO Tabel1(Noegle1, Noegle2, Data1) VALUES (n, Tabel2.Noegle2, Tabel2.Data1).

Det virker delvis derved at den foerste raekke af Tabel2 bliver korrekt tilfoejet Tabel1, men ikke (endnu) de foelgende raekker.  Det sidder jeg nu og bakser med.

I mellemtiden vil jeg bede om dine kommentarer.  Har jeg forstaaet problemet korrekt og mener du at min fremgangsmaade vil give det oenskede resultat?
Avatar billede sigyn Seniormester
18. august 2010 - 11:00 #2
Du har forstået mig rigtigt :-) Dog skal den nye nøgle1 ikke have det næste nummer i rækken, men et nummer, som ikke er fortløbende. Det nummer ligger i en anden tabel, der kun indeholder disse numre og et udgavenr.
18. august 2010 - 11:14 #3
Du har altsaa en saerskilt tabel med adskillige Noegle1 vaerdier.  Naar du har trukket dine data med en bestemt Noegle1 vaerdi ud fra tabellen og redigeret dem, hvordan vaelges saa den nye Noegle1 vaerdi, og hvordan sikrer du dig mod at den samme Noegle1 vaerdi bliver brugt en gang mere?  Hvad er udgavenr og hvordan bruges den?
Avatar billede sigyn Seniormester
18. august 2010 - 11:58 #4
Det er netop for at sikre mig, at nøgle1 værdien er unik, at den ligger i en Nøgle1Tabel. Udgavenummeret er "bare" en yderligere information, som vi skal have med over i Word, og den kan ændres. Tabellen har kun de to kolonner og Nøgle1 er nøglefeltet.
Når jeg så skal lave et nyt skema, som det er, åbner jeg en formular med en underfor-mular. Den første kommer fra Nøgle1Tabel, og der kan jeg hente et eksisterende num-mer, eller oprette et nyt. Underformularen kommer så fra den tabel jeg gerne vil kunne kopiere dele af data fra, og den er linket op på Nøgle1. Nøgle2 vælges fra en combo-boks og resten tastes manuelt. Og da der ofte er meget der kan genbruges, vil det netop være smart at kunne kopiere en udvalgt del.
18. august 2010 - 13:16 #5
Den fik jeg ikke rigtig med.  Det er uden tvivl mig der er tumpet naar jeg ikke krystal klart kan se sammenhaengen mellem forklaringen i dit oprindelige spoergsmaal og din forklaring i #4.  Maaske burde jeg stoppe, men jeg proever lige en gang mere: 
Fra dit oprindelige spoergsmaal, naar jeg sammenligner den foerste tabel med seks raekker med den anden tabel med ni raekker, faar jeg det indtryk at du udvaelger  et antal raekker (i dette tilfaelde 3 raekker) nemlig alle raekker med en givet Noegle1, at du giver disse raekker en ny Noegle1 vaerdi, bevarer Noegle2 vaerdierne uaendret, og bevarer vaerdierne i datafelterne med mindre du redigerer dem.

Fra #4 faar jeg det foelgende indtryk:

Du har en Noegle1 tabel med en Noegle1 kolonne plus en Udgavenummer kolonne.  Saa har du en tabel, lad os kalde den Tabel1, med, lad os sige, fem felter, Noegle1, Noegle2, og tre datafelter.  Tabel1.Noegle1 vaerdierne er taget fra Noegle1 tabellen.

Saa aabner du, lad os sige, Formular1 hvor du faar Noegle1 vaerdierne fra Noegle1 tabellen saaledes at du kan vaelge en af vaerdierne.  Naar du saa i Formular1 har valgt en Noegle1 vaerdi befolkes en combo-boks i Underformular1 med Noegle2 vaerdierne fra de raekker i Tabel1 der har den valgte Noegle1 vaerdi.  Du valger saa en Noegle2 vaerdi. 

Naar du saa ogsaa har valgt Noegle1 og Noegle2, hvad sker der saa?  Faar du i en tredje formular den raekke af Tabel1 med den valgte Noegle1-Noegle2 kombination saaledes at du kan redigere datafelterne?  Og naar du saa har redigeret datafelterne hvad sker der saa?  Bliver Tabel1 opdateret saaledes at raekken med Noegle1-Noegle2 kombinationen overskrives med de nye data?  Altsaa ingen af noeglefelterne forandres.  Eller tilfoejes der en ny raekke til Tabel1 med de redigerede datavaerdier?  Hvis der tilfoejes en ny raekke maa du forandre vaerdien i et af noeglefelterne.  Hvor faar du saa den nye vaerdi fra?

Maaske ville det hjaelpe hvis du fortalte lidt mere om hvad det skal bruges til i stedet for at behandle det saa abstrakt?
Avatar billede sigyn Seniormester
18. august 2010 - 13:53 #6
Jeg tror ikke du er tumpet.  Det, der foregår i formularen, er sådan set det der foregår i mit oprindelige spørgsmål, men det er lidt svært at forklare. Sommetider ville jeg gerne kunne sætte skærmprint ind her.
I praksis er det produktspecifikke analyseskemaer jeg prøver at få organiseret på denne måde. Nøgle1 er skemanummeret. Skemaet skal konverteres til Word og gemmes i en anden styret database, derfor udgavenummeret, så det er "fortrykt". Nøgle2 er analysen, og dataene er normer, enheder mm. At det i tabellen, som det hele drejer sig om, er lavet som en dobbeltnøgle skyldes dels at skemanummeret skal være unikt, dels, at analysen kun må være en gang pr. skema. Analyserne ligger også i en anden tabel, hvor Nøgle2 er Nøglen.
Mange af disse analysekemaer er næsten ens, blot skal der ændres på normerne. Nogle gange skal der måske tilføjes eller fjernes en analyse (række)
Som det er lige nu, sidder jeg så og taster de samme 10 rækker i min formular hver gang, jeg skal lave et nyt skema, derfor vil jeg gerne kunne kopiere, altså bruge et allerede eksisterende skema som skabelon.
Det abstrakte var for bare at lave en lille hurtig eksempeltabel.
18. august 2010 - 20:14 #7
Ok - lad mig skaere ud i pap hvordan jeg nu forstaar det:

Der foretages en raekke analyser paa produkter.  For eksempel analyseres taendstikker paa afmaaling (laengde, bredde, ...) og paa holdbarhed (modstand mod at braekke under brug, slidfasthed for svovlet, taendstikaesker analyseres paa afmaaling og overflade (farve, glathed, ..) og balloner paa holdbarhed (at de ikke let springer) og taethed.  Navnene paa analyserne (afmaaling, holdbarhed, ...) bevares i Noegle2, og i felterne Data1, Data2, o.s.v. bevares de forskellige normer der hoerer til analysen.

Saa opretter man et skema, med skemanummer (Noegle1 vaerdi), for hvert produktanalyse.  For hvert skema vaelger man, fra en combobox, en eller flere analyser og for hver analyse udfylder man Data1, Data2, o.s.v.  Resultatet bevarer man i en tabel med en raekke for hver kombination af skemanummer og analyse (Noegle1 og Noegle2.)  Senere, udenfor spoergsmaalet, producerer man saa fra tabellen for hver noegle1 vaerdi et word-skema med resultaterne af de forskellige analyser.

Er det saa saaledes at naar man i februar har analyseret taendstikker saa analyserer man taendstikker igen i august for at se hvordan produktet har udviklet sig, og saa vil i august normalt 90% af oplysningerne normalt vaere uaendret?  Saa kan jeg godt se at det ville vaere 'handy' hvis man kunne faa den gamle analyse trukket ud, redigere det der er aendret, og saa slaa det up i tabellen med de samme noegle2 vaerdier men under noegle1 vaerdien for det nye skema?

Jamen hvordan mange saadanne skemaer er der?  10 om dagen eller 1000 om dagen?  Hvis antallet af skemaer er begraenset er loesningen saa ikke ganske enkelt at lave en formular med kilde i en query "SELECT * FROM Tabel1 WHERE Noegle 1 = " & noeglevalg & " ORDER BY Noegle2" og saa redigere vaerdierne inklusiv overskrive Noegle1 vaerdien med vaerdien for det nye skema og saa slaa det hele op i tabellen igen?
Avatar billede sigyn Seniormester
19. august 2010 - 07:22 #8
Skemaerne er ikke til resultaterne, det foregår i et helt andet system. Men det system skal fodres med nogle data for hvert produkt, og det er det vi bruger skemaerne til. I "gamle dage" registrerede vi resultaterne på analyseskemaerne i papirudgave, det gør vi ikke mere.
Hvis vi nu bliver ved tændstikkerne, så kunne mit skema se f.eks. således ud

Skemanr    Analyse    Min    Maks    Enhed
1    Længde    3    3,5    cm
1    Tykkelse    2    3    mm
2    Længde    10    11    cm
2    Tykkelse    1    1,5    cm

Skema nr 1 er så beregnet til en alm. tændstik, og skema 2 til en særlig stor tændstik, den sammenkobling styres andet steds. Min og maks er de specifikationer tændstikkerne skal overholde, og enheden er det målene skal opgives i.
Så er det, at jeg skal have oprettet et skema til en 3. tændstik, en pejsetændstik f.eks. Den skal så have skemanr 5, men der skal stadig måles længde og tykkelse, og så skal der måske også laves en brudstyrkemåling. I praksis drejer det sig om mange flere analyser, hvoraf mange er gengangere.
Sidenhen kan det så være, at man finder ud af at den store tændstik skal være længere, så er jeg inde og redigere i skema 2 og ændrer normerne til hhv 12 og 13 cm. Det er i den forbindelse vi bruger udgavenummeret.
19. august 2010 - 20:00 #9
Saa lykkedes det vist - foerst at forstaa problemet og saa at udarbejde en foreslaaet loesning i Access.

Foerst problemet:  I tabellen bevarer du de oplysninger der skal bruges til at lave et skema med de noedvendige normer for produktanalyser.  Noegle1 indeholder betegnelsen for et skema og Noegle2 indeholder betegnelserne for de forskellige analyser for skemaet.  Data1, Data2, o.s.v., indeholder saa normerne for hver analyse.  Regelmaessigt skal der laves et nyt skema der har meget til faelles med et tidligere skema.  Du vil derfor kunne indfoere oplysningerne om det nye skema ved at redigere det gamle skema i stedet for at starte forfra.

Jeg har lavet en Tabel1 med tre felter, Noegle1, Noegle2, og Data.  Jeg har fyldt nogle data i tabellen i lighed med de i dit oprindelige spoergsmaal.  Jeg har saa lavet en formular med en kombobox og et tekstfelt.  I tekstfeltet txtNyNoegle1 indsaettes nummeret paa det nye skema, Noegle1 vaerdien (hvor man saa faar denne vaerdi fra, det ligger udenfor spoergsmaalet.)  I komboboxen cboGammelNoegle1 kan man vaelge hvilket bestaaende skema, hvilken bestaaende Noegle1 vaerdi, der skal bruges som skabelon.  Ved tryk paa en knap sker der saa det foelgende:  Foerst indsaettes i tabellen en kopi af raekkerne med cboGammelNoegle1 vaerdien undtagen at Noegle1 er udfyldt med txtNyNoegle1 vaerdien.  Derefter aabnes en ny formular med txtNyNoegle1 vaerdierne hvor Data vaerdierne kan redigeres (ikke Noegle1 og Noegle2 vaerdierne.)  Tabellen bliver saa opdateret med de redigerede vaerdier.

Jeg satte en kopi af databasen her.  Jeg haaber du kan laese den og at du saa kan bruge det.  Ellers maa vi snakkes ved igen.
19. august 2010 - 20:01 #10
Det kom for tidligt af sted.  Her er linket til databasen:

http://christianjorgensen.be/Database1.accdb
Avatar billede sigyn Seniormester
20. august 2010 - 06:43 #11
Jeg kan desværre ikke åbne dit link, har du mulighed for at lave det om så jeg kan åbne det som Access2000 ? ellers må jeg lige prøve når jeg kommer hjem, der har jeg 2007, jeg er bare ikke så hård ud i 2007 (og kan ikke fordrage skærmopsætningen, men det er nok bare en vanesag, før eller siden bliver vi nok også opgraderet her)
Men du har i hvert fald forstået problematikken rigtigt :-)
20. august 2010 - 08:39 #12
Avatar billede sigyn Seniormester
20. august 2010 - 11:04 #13
Bingo! Det var lige det jeg kunne bruge. Mange tak for hjælpen :-)
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





White paper
Optimering af Source-to-Pay: Identificér oplagte gevinster og skær omkostninger