Avatar billede dane022 Seniormester
18. december 2005 - 21:20 Der er 18 kommentarer og
1 løsning

6 kollonner i en tabel, skal blive til en kollone i rapport

Jeg har en tabel der pr. record indeholder en dato og op til 6 tider. Den ser ud som følger i en forenklet udgave:

          Tid1    Tid2
Dato      cpr    cpr
Dato      cpr    cpr

Udfordringen er nu for mig at kunne få hevet disse data over i en rapport så der bliver en linie og cpr nummer pr. tid.
Noget lignende:

Dato      cpr
Dato      cpr

Dvs. de cpr numre der står under tid1, tid2 osv., skal stå under hinanden i rapporten. Håber det er til at forstå.
Avatar billede kasper_knaldperle Nybegynder
18. december 2005 - 23:28 #1
Jeg forstår ikke helt tror jeg, men er det ikke noget, der kan løses ved at gruppere efter de forskellige CPR-numre?
Avatar billede terry Ekspert
19. december 2005 - 08:51 #2
SELECT Tid1 FROM YourTable
UNION ALL
SELECT Tid2 FROM YourTable
.
.
Avatar billede terry Ekspert
19. december 2005 - 08:52 #3
But I agree with Kasper, its not easy to understand exactly what you want
Avatar billede dane022 Seniormester
19. december 2005 - 09:00 #4
Jeg kan godt forstå i ikke kan forstå det.
I tabellen står cpr numrene i 6 kollonner, på rapporten vil jeg have de 6 kollonner samlet til en. I de 6 kollonner er nogle af felterne tomme, og de tomme felter skal ikke medtages i rapporten.
Avatar billede terry Ekspert
19. december 2005 - 09:02 #5
Do you want all 6 cpr in the same row but in one field, or do you want then under each other?
Avatar billede terry Ekspert
19. december 2005 - 09:03 #6
Under each other

SELECT Tid1 FROM YourTable
WHERE NOT cpr IS NULL
UNION ALL
SELECT Tid2 FROM YourTable
WHERE NOT cpr IS NULL
Avatar billede terry Ekspert
19. december 2005 - 09:04 #7
beside each other. If they are empty then it wont be visible

SELECT Tid1 & Tid2 & Tid3 .... AS CPR FROM YourTable
Avatar billede dane022 Seniormester
19. december 2005 - 16:55 #8
Det skal være under hinanden. Når union forespørgslen åbnes, skal det være sådan at man skal skrive månedsnr (1 for jan, 2 for feb osv.)
Avatar billede terry Ekspert
19. december 2005 - 19:40 #9
Your going to have to explain there dane022. What do you mean by "..man skal skrive månedsnr (1 for jan, 2 for feb osv.)"? I dont see that mentioned in th eoriginal question
Avatar billede dane022 Seniormester
19. december 2005 - 20:11 #10
Det har du ret i, på det tidspunkt troede/håbede jeg det kunne løses ved en alm. forespørgsel eller en anden nemmere metode. Havde det været tilfældet havde jeg kunne finde ud af selv at sætte kriteriet ind.
Er en union forespørgsel den eneste metode ?
Avatar billede terry Ekspert
19. december 2005 - 20:14 #11
The way your table is design at the moment then I would say taht a UNION is the best way, but then I dont know your requirements, so its not easy to make other suggestions.

But where does month number come into it?
Avatar billede dane022 Seniormester
19. december 2005 - 20:25 #12
Forklaringen er at der hver måned bliver udtrukket en rapport fra databasen der indeholder de tider der har været for den måned. Taster man 1 i den boks der kommer frem når rapporten åbnes, får man således de tider der har været i januar.
Hele problemet er at tiderne kommer i 6 kollonner i rapporten og jeg vil gerne have listet dem i én kollonne.
Jeg skal sige at det ikke er mig der har lavet databasen og dens konstruktion er ikke så godt lavet og åbner ikke for nemme forandringer. Hvis jeg kan, vil jeg meget gerne undgå at lave den om fra bunden.
Avatar billede terry Ekspert
19. december 2005 - 20:35 #13
OK that helps a bit.

If you make a new field in each select which contains the month number then would that help?

I also noticed a slight error in my last example (cpr = TIDX)

SELECT Tid1 as TID, Month(Tid1) as mdr FROM YourTable
WHERE NOT TID1 IS NULL
UNION ALL
SELECT Tid2, Month(Tid2) as mdr FROM YourTable
WHERE NOT TID2 IS NULL


now you should end up with a query which gives you ALL TIDX in one column and a month number.

Now you can make a query which

SELECTS * FROM YOurUNIONQuery WHERE MDR = [Indtast Mdr]
Avatar billede dane022 Seniormester
19. december 2005 - 20:53 #14
Nu ser den sådan ud:

SELECT Tid1 as TID, Month(Tid1) as rapportmåned FROM tidstabel
WHERE NOT TID1 IS NULL
UNION ALL SELECT Tid2, Month(Tid2) as rapportmåned FROM tidstabel
WHERE NOT TID2 IS NULL;

Jeg får en fejlmeddelse om at datatyperne ikke stemmer overns i kriterieudtrykket
Avatar billede terry Ekspert
19. december 2005 - 20:58 #15
any chance of seing your dB?

eksperten@NOSPANsanthell.dk

remove NOSPAM
Avatar billede dane022 Seniormester
19. december 2005 - 21:15 #16
Den er nu tømt for følsomme data og sendt til dig.
Der er kun lagt 2 datoer ind og 2 personer
Avatar billede terry Ekspert
19. december 2005 - 21:30 #17
dane022>I dont think we have received all the information we need to give an answer yet.

The field TidX deosnt contain any date or time its a text field.

Can we start from the beginning again?

I'm stopping for the evening now, will take a look tomorrow, but you need to give a FULL explanantion to your data and what you want from it.
Avatar billede dane022 Seniormester
19. december 2005 - 21:42 #18
Beklager hvis vi har snakket forbi hinanden. Jeg vil have at felterne tidx i forespørgslen skal være oven på hinanden. Men vi må prøve igen imorgen
Avatar billede terry Ekspert
20. december 2005 - 19:30 #19
SELECT * FROM (SELECT Tid1 as TID, rapportmåned FROM tidstabel
WHERE NOT TID1 IS NULL
UNION ALL
SELECT Tid2, rapportmåned FROM tidstabel
WHERE NOT TID2 IS NULL
UNION ALL
SELECT [Tid 3],  rapportmåned FROM tidstabel
WHERE NOT [TID 3] IS NULL
UNION ALL
SELECT [Tid 4], rapportmåned FROM tidstabel
WHERE NOT [TID 4] IS NULL
UNION ALL
SELECT [Tid 5],  rapportmåned FROM tidstabel
WHERE NOT [TID 5] IS NULL
UNION ALL SELECT [Tid 6], rapportmåned FROM tidstabel
WHERE NOT [TID 6] IS NULL) AS T WHERE T.rapportmåned = [Indtast måned];
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