Sum af antal afkrydsninger i afkrydsningsfelter som talværdi..
Hej...
Jeg har en databaser over medlemmer i en antenneforening. Hver adresse har en ID. Til en adresse er der en betaler. En adresse kan have flere lejligheder, men kun en betaler. hver lejlighed/adresse kan vælge mellem 3 programpakker. pakke1, pakke2 og pakke3.
Eks: Peter Petersen ejer adressen Nørregade 45. På adressen er der 6 lejligheder. 2 lejligheder har "pakke1", 1 lejlighed har "pakke2" og 3 lejligheder har "pakke3".
Jeg har en tabel over adresser, hvor hver lejlighed har sin egen række i tabellen. Jeg krydser af i et afkrydsningsfelt, hvilken pakke de har valgt. eks: TABEL1 Adresse | Navn | Pakke1 | pakke2 | pakke3 | Nørregade 44 | Hans | [] | [] | [x] | Nørregade 45,a | Peter | [] | [] | [x] | Nørregade 45,b | Peter | [x] | [] | [] | Nørregade 45,c | Peter | [x] | [] | [] | Nørregade 45,d | Peter | [] | [] | [x] | Nørregade 45,e | Peter | [] | [x] | [] | Nørregade 45,f | Peter | [] | [] | [x] |
Nu vil jeg oprette en tabel over en adresse med flere lejligheder, så jeg kan se hvor mange, og hvilke programpakker der er valgt. eks: TABEL2 Adresse | Navn | Pakke1 | pakke2 | pakke3 | Nørregade 45 | Hans | 2 | 1 | 3 |
Spørgsmål: Hvordan får jeg lagt antallet af afkrydsninger i pakke1 (TABEL1) lagt sammen og vist som et tal i TABEL2 ( som eks. ovenfor). osv. med pakke 2 og 3.
Altså hvordan beregner jeg summen af antal afkrydsede efkrydsningsfelter, og får lavet dette om til et tal, som kan vises i TABEL2...?
Håber i kan forstå det lidt indviklede spørgsmål... mvh Bjarke Pedersen
SELECT IIf(InStr(1,[Adresse],",")>0,Left([adresse],InStr(1,[Adresse],",")),[adresse]) AS Sted, tabel1.Navn, Sum(IIf([Pakke1],1,0)) AS P1, Sum(IIf([Pakke2],1,0)) AS P2, Sum(IIf([Pakke3],1,0)) AS P3 FROM tabel1 GROUP BY IIf(InStr(1,[Adresse],",")>0,Left([adresse],InStr(1,[Adresse],",")),[adresse]), tabel1.Navn;
SELECT IIf(InStr(1,[Adresse],",")>0,Left([adresse],InStr(1,[Adresse],",")-1),[adresse]) AS Sted, tabel1.Navn, Sum(IIf([Pakke1],1,0)) AS P1, Sum(IIf([Pakke2],1,0)) AS P2, Sum(IIf([Pakke3],1,0)) AS P3 FROM tabel1 GROUP BY IIf(InStr(1,[Adresse],",")>0,Left([adresse],InStr(1,[Adresse],",")-1),[adresse]), tabel1.Navn;
Nu er jeg ikke lige den helt store haj til Access... Hvor skal jeg indsætte denne kode... ? Som et kriterie ?, eller skal jeg oprette en forespørgsel ?
Hefttig SQL, men det ser fint ud. Generelt vill jeg nok anbefale at splitte adressefeltet ud på nogle flere felter: gade, nr og evt. bogstav, side. Det vil gøre det meget nemmere at lave en forespørgsel, som finder de rigtige poster, da man ikke via SQL'en skal lede kommaer m.m.
Har lige en tilføjelse.. Har allerede tabellen hvor svarene skal sættes over i. altså tabel2. Skal vide hvilken kode jeg skal sætte ind i det enkelte felt..
INSERT INTO Tabel3 ( Adresse, Navn, Pakke1, pakke2, pakke3 ) SELECT IIf(InStr(1,[Adresse],",")>0,Left([adresse],InStr(1,[Adresse],",")-1),[adresse]) AS Sted, tabel1.Navn, Sum(IIf([Pakke1],1,0)) AS P1, Sum(IIf([Pakke2],1,0)) AS P2, Sum(IIf([Pakke3],1,0)) AS P3 FROM tabel1 GROUP BY IIf(InStr(1,[Adresse],",")>0,Left([adresse],InStr(1,[Adresse],",")-1),[adresse]), tabel1.Navn;
Har tabel1 hvor jeg krydser af. Tabel2 inderholder adresser med flere lejligheder. Der er 13 kolonner med div. info. 3 af dem er pk 1, pk 2 og pk 3. Jeg taster pt. selv antallet af pakke 1, 2 og 3 på adressen ind. Hvordan gøres dette automatisk.
Har forsøgt at lave nogle udtryk for feltet pk 1 i tabel2 under designvisning, men det fungerer ikke rigtig. Har prøvet følgende:
SELECT Sum([Pakke 3]) AS Udtryk1 FROM tabel1 WHERE ((tabel1.Adresse)=(tabel2.Adresse))
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.