Avatar billede avalon116 Nybegynder
25. november 2004 - 08:55 Der er 12 kommentarer og
1 løsning

hente feltnavne fra tabel og regne på dem

Jeg har brug for at lave en forespørgsel, der henter alle værdierne (områder) fra en tabel med områder (tOmråder).

For hvert område skal der beregnes noget i stil med:
Val(Str(Nz([EgenskabA]![Område1]*[EgenskabB]![Område1];0)))

Da områderne skal kunne ændres, er det vigtigt for mig at kunne hente dem fra tabellen, så det er nemt at indsætte nye områder.
Men kan jeg det og hvordan?
Avatar billede terry Ekspert
25. november 2004 - 14:14 #1
can you give an example of your tables/fields and also data please?
Avatar billede avalon116 Nybegynder
25. november 2004 - 14:35 #2
Tabellen med områder: tOmråder indeholder nogle felter:
omr1
omr2
omr3 osv. og ikke andet

Så er der en række personer med to forskellige egenskaber. De bor i de forskellige områder. For hver person med egenskab A er der en række i tabel tEgenskabA, fx:
Id  Område  Alder
1    Omr2    24
2    Omr1    1
3    Omr3    82
4    Omr1    1
osv

Og ligeledes for egenskab B.

Jeg vil nu gerne lave en forespørgsel, der giver mig alle de områder der er i tOmråder som kolonneoverskrifter. For hver alder og hvert område vil jeg så gerne vise antallet af personer med den pågældende alder i det pågældende område med egenskab A gange med personer i samme alder og i samme område med egenskab B. Dvs:

Alder  Omr1                                Omr2 ...
1      2 * y                              0 * y
2      (antal i omr1 med egenskabA        (antal i omr2 med egenskabA
        * antal i omr1 med egenskabB)      * antal i omr2 med egenskabB)

Hjælper det?
Avatar billede terry Ekspert
25. november 2004 - 15:14 #3
Hjælper det? A little!



Firstly, I think you need to look at your database design! In tOmråder you only need one field (Område) and for each ormråde you have a record with the name.

Now table tEgenskabA field Område  has a relationship with tOmråder.Område and the same for tEgenskabB.


Now this is just an idea, so you need to try it yourself.

Make a query on tEgenskabA where you group on Område and alder and a caculated field showing count. Then you need to make a sub select where you slect count from tEgenskabB where Område and Alder are the same. Something  like

SELECT tEgenskabA.Område, tEgenskabA.Alder, Count(tEgenskabA.Alder) AS Antal, [Antal]*(Select Count(*) from tEgenskabB Where tEgenskabB.Område = tEgenskabA.Område  AND tEgenskabB.Alder = tEgenskabA.Alder) AS Tot
FROM tEgenskabA
GROUP BY tEgenskabA.Område, tEgenskabA.Alder
Avatar billede terry Ekspert
25. november 2004 - 15:15 #4
I'm not really using tOmråder, not quite sure why its necessary
Avatar billede avalon116 Nybegynder
25. november 2004 - 15:30 #5
Du har ret i at områderne i tOmråder ikke er felter, men værdier. Der er kun ét felt "Områder".
grunden til at jeg har brug for tOmråder er, at jeg har brug for at få vist alle områder som er heri, også selvom der ikke er observationer for et enkelt område. (Det er fordi jeg efterfølgende skal regne videre på det i excel, og her skal tabellerne være helt ens hver gamg).

Jeg er ikke så hurtig til Access, men jeg kigger lige på dit forslag
Avatar billede avalon116 Nybegynder
25. november 2004 - 15:31 #6
Måske kan man efterfølgende lave en foresp. der knytter alle områderne på?
Avatar billede avalon116 Nybegynder
25. november 2004 - 16:49 #7
Ideen var at man skulle kunne tilføje eller slette områder nemt og kun ét sted i tabellen tOmråder.
Avatar billede terry Ekspert
25. november 2004 - 17:46 #8
If you can send me your dB then I can maybe do it for you?

eksperten@NOSPAMsanthell.dk

remove NOSPAM
Avatar billede terry Ekspert
25. november 2004 - 17:47 #9
you could make another query where you use th efirst query and also tOmråder with an INNER JOIN (default) between område. Then only records where there are records in both will be displayed.
Avatar billede avalon116 Nybegynder
26. november 2004 - 10:43 #10
Jeg sender lige
Avatar billede terry Ekspert
26. november 2004 - 12:14 #11
downloading now
Avatar billede avalon116 Nybegynder
26. november 2004 - 14:19 #12
Jeg takker for hjælpen, og smider lige dit svar ud, så andre kan få glæde af det også.


"Hi
I have made a query which selects the information I think you want in your result. (qryOmr) Now we should be able to use a pivot query (wizard) to get the område as column headings, but I dont seem to be able to get this to work. I think its because the query (qryOmr) is too complex!

So another solution is to put the data you get from the query (qryOmr) into a new table which you can then use in the pivot query.

This is the SQL for qryOmr

SELECT tOmr.Omr, tEgenskabA.Alder, Count([tEgenskabA].[Alder])*(Select Count(*) from tEgenskabB Where tEgenskabB.Omr = tEgenskabA.Omr  AND tEgenskabB.Alder = tEgenskabA.Alder) AS Tot
FROM tEgenskabA RIGHT JOIN tOmr ON tEgenskabA.Omr = tOmr.Omr
GROUP BY tOmr.Omr, tEgenskabA.Omr, tEgenskabA.Alder;


This is the SQL for the query to make your table (tblPivot)

SELECT qryOmr.* INTO tblPivot
FROM qryOmr;

And this is the SQL for the Pivot query

TRANSFORM First(tblPivot.Tot) AS FirstOfTot
SELECT tblPivot.Alder
FROM tblPivot
GROUP BY tblPivot.Alder
PIVOT tblPivot.Omr;


This isnt a very elegant solution but it seems to work, and I hope you can use it!"
Avatar billede terry Ekspert
26. november 2004 - 14:20 #13
selv tak og god weekend
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