Avatar billede bjarkepedersen Nybegynder
22. oktober 2005 - 15:13 Der er 12 kommentarer

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
Avatar billede kabbak Professor
22. oktober 2005 - 20:25 #1
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;
Avatar billede kabbak Professor
22. oktober 2005 - 20:27 #2
en lille rettelse kommaet kom med i gadenavn

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;
Avatar billede bjarkepedersen Nybegynder
23. oktober 2005 - 11:29 #3
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 ?
Avatar billede kabbak Professor
23. oktober 2005 - 12:01 #4
ny forespørgsel, vælg ingen tabel, vælg SQL visning, sæt det ind der.

Hvis din tabel hedder noget andet, skal du rette tabelnavnet først
Avatar billede jesperfjoelner Nybegynder
23. oktober 2005 - 12:21 #5
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.
Avatar billede kabbak Professor
28. oktober 2005 - 22:30 #6
hvordan går det ?
Avatar billede kabbak Professor
02. november 2005 - 11:11 #7
hallo
Avatar billede bjarkepedersen Nybegynder
03. november 2005 - 17:22 #8
Hey... har lige haft lidt travl.. Prøver det lige og svarer tilbage
Avatar billede bjarkepedersen Nybegynder
03. november 2005 - 20:07 #9
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..
Avatar billede kabbak Professor
03. november 2005 - 22:54 #10
Hvorfor skal de over i en tabel, når de kan beregne dem.

Formålet med ed database er at have rådata, og så beregne på dem.
Hvis du så også vil gemme beregningerne, vokser basen unødvendig
Avatar billede kabbak Professor
03. november 2005 - 22:59 #11
Men her er den
Tabel3 er den jeg sætter ind i

Tabel1 er den jeg beregner på

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;
Avatar billede bjarkepedersen Nybegynder
03. november 2005 - 23:57 #12
Kan ikke helt følge dig..

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))
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