22. september 2008 - 11:56Der er
7 kommentarer og 1 løsning
Dynamisk valg af kolonne
Ligesom jeg f.eks. kan gøre afgrænsningen på et felt i en forespørgsel dynamisk ved at sætte [ ]. Kan man så på samme måde gøre udvælgelsen af kolonner dynamisk. Jeg har et felt som jeg har kaldt value, dette felt vil jeg gerne kunne vælge hvor i tabellen den skal hente data. Jeg vil gerne kunne skrive [jan], og så skal den hente data i kolonne "jan" fra input tabellen.
Du vil eventuelt også kunne bruge DLOOKUP funktionen. Der skal bare være en primær nøgle, man kan bruge til at identificere den korrekte række. Det er normalt ikke noget problem, da det er standard for tabeller i Access, som normalt har et felt der hedder Id, som fungerer som primær nøgle.
SELECT Valgtfelt, DLOOKUP(Valgtfelt, "TABEL1", "Id=" & Id) AS Feltværdi FROM TABEL1
Ovenstående vil returnere indholdet af det felt, hvis navn står i feltet Valgtfelt i tabellen.
På samme måde vil man naturligvis kunne vælge et bestemt felt via navn fra en form ved at referere til dette. Hvis man på formen har et felt, der hedder Valgtfelt, hvor man angiver navnet på den kolonne man vil vise:
SELECT Forms!Form1.Valgtfelt, DLOOKUP(Forms!Form1.Valgtfelt, "TABEL1", "Id=" & Id) AS Feltværdi FROM TABEL1
Jeg er desværre ikke meget inde i VBA, selvom det sikkert kunne være en fornuftig løsning.
Min SQL skal i en forsimplet udgave se ud lignende denne Select Account, [vælg måned] as month, [valgfelt] as value from tabel
Tabel består af en kolonne med account numre, og så en hel masse kolonner med data pr. måned. Kolonneoverskrifter er account, f2, f3, f4, osv.
Vælg måned og valgfelt har jeg lagt i en form sammen med en makro der kører SQL'en som så tilføjer data til min tabel hver gang jeg har ændret de to variable og kørt makroen igen..
Well I could suggest that you consider altering your tbales so that each month has its own record, but I can guess that your not interested in doing that. So I would still suggest that you build your query dynamically in code. If this is a problem then you can send me your dB and I'll do it for you later today after work.
If its a problem sending the dB then you could just send the stuff I would need (table/form). ekspertenATsanthell.dk AT = @
Du kan gå begge veje: Den som terry har foreslået, nemlig at opbygge og udføre en forespørgsel hver gang, hvor der kun selekteres de kolonner der ønskes, eller mit forslag, som indebærer at der for hver række der hentes skal udføres et selvstændigt opslag til den samme tabel via DLOOKUP.
Jeg indrømmer blankt, at jeg selv nok også ville være gået efter terrys version, hvis jeg skulle have kodet det, da det nok i de fleste situation er en bedre løsning, i hvert fald for store tabeller med mange rækker.
På den anden side vil mit alternative forslag nok i andre situationer være nemmere at håndtere, da det alene involverer forespørgslen, mens terrys forslag er helt afhængig af et nogenlunde kendskab til VBA, som skal klare opbygningen af den nødvendige SQL.
Livet består af en lang række valg, som man siger...
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.