Avatar billede jensen363 Forsker
19. september 2006 - 17:07 Der er 15 kommentarer og
1 løsning

Ukorrekt visning af forespørgsel

Formular ligger som underformular -bygger på denne forespørgsel med visning af ledig/optaget tid.

SELECT tblSkema.Skema, IIf(IsNull([AftaleTidspunkt]),"Ledig","Optaget") AS Status
FROM tblAftalekalender RIGHT JOIN tblSkema ON tblAftalekalender.AftaleTidspunkt = tblSkema.Skema
GROUP BY tblSkema.Skema, IIf(IsNull([AftaleTidspunkt]),"Ledig","Optaget"), tblAftalekalender.AftaleDato
HAVING (((tblAftalekalender.AftaleDato)=[Forms]![frmMAIN]![SøgeDato] Or (tblAftalekalender.AftaleDato) Is Null));

På baggrund af bruger datovalg i et kalenderobjekt, vises eksempelvis et underformularen data .... men ...

Dage med reservationer vises korrekt eksempel ( dato 1 )

08:00  Ledig
09:00  Optaget
10:00  Optaget
11:00  Ledig

Hvorimod dage uden reservationer vises således ( dato 2 )

08:00  Ledig
11:00  Ledig

Hvad er der lige galt
Avatar billede terry Ekspert
20. september 2006 - 14:57 #1
Not quite sure what you mean, what is wrong with the examples you gave?
Avatar billede jensen363 Forsker
20. september 2006 - 15:09 #2
I use tblSkema to ensure that I have all combinations needed

08:00
09:00
10:00
11:00
...

Therefore dato 2 should show :

08:00 Ledig
09:00 Ledig
10:00 Ledig
11:00 Ledig

because there are no reservations on the day / time
Avatar billede terry Ekspert
20. september 2006 - 15:29 #3
any chance of seeing the dB?
Avatar billede jensen363 Forsker
20. september 2006 - 15:35 #4
Sure no problem ... to your info mail ???
Avatar billede terry Ekspert
20. september 2006 - 15:39 #5
info is fine
Avatar billede jensen363 Forsker
20. september 2006 - 15:46 #6
One DB comming up
Avatar billede terry Ekspert
20. september 2006 - 16:51 #7
The problem is that for 18/09/2006 there are some times reserved (11:00+14:00+10:00). Yes it is true that they are for another date, but they exist in the table and therefore are NOT = (Is Null).  So the only reason they don’t appear is because you have a criteria which is for example 19/09/2006 so those with date 18/09/2006 will not appear. Testing for Is Null doesn’t work because they are NOT = (Is Null)



That was a bit of a mouth full but I hope you understand.



An easy solution would also to have a date in tblSkema, which actually would make things easier and also more flexible, for example it would allow different opening times for different days.
Avatar billede terry Ekspert
20. september 2006 - 16:52 #8
:o)
Avatar billede terry Ekspert
20. september 2006 - 19:41 #9
Come to think of it, there is quite a simple solution.

Make a query which selects the "aftale" for the selected date. Lets call it qryAftalerkalender.

SELECT tblAftalekalender.AftaleTidspunkt, tblAftalekalender.Kunde_id, tblAftalekalender.AftaleDato
FROM tblAftalekalender
WHERE (((tblAftalekalender.AftaleDato)=[Forms]![frmMAIN]![SøgeDato]));

Now make a query which you use as the Record Source for the skema info form (frmVisTider).

SELECT tblSkema.Skema, IIf(IsNull([AftaleTidspunkt]),"Ledig","Optaget") AS Status, qryAftalerkalender.Kunde_id
FROM tblSkema LEFT JOIN qryAftalerkalender ON tblSkema.Skema = qryAftalerkalender.AftaleTidspunkt;
Avatar billede jensen363 Forsker
20. september 2006 - 20:05 #10
If you couldn´t solve it I would be lost :o)  thx ...
Avatar billede terry Ekspert
20. september 2006 - 20:33 #11
selv tak.
It would also be possible to use a derived table instead of the query qryAftalerkalender and JOIN on this but there is no real need here.

A derived table is just a sub SELECT which does the same as the query qryAftalerkalender but the table is in memory.
Avatar billede kjulius Novice
21. september 2006 - 02:12 #12
Kom lige forbi, og kan ikke lade være med at blande mig!

Kan du ikke bare skrive:

SELECT DISTINCT tblSkema.Skema, IIf(IsNull([AftaleTidspunkt]),"Ledig","Optaget") AS Status
FROM tblAftalekalender RIGHT JOIN tblSkema ON tblAftalekalender.AftaleTidspunkt = tblSkema.Skema
WHERE (((tblAftalekalender.AftaleDato)=[Forms]![frmMAIN]![SøgeDato] Or (tblAftalekalender.AftaleDato) Is Null));

Der er ingen grund til at bruge GROUP BY og HAVING, for der sker ingen behandling på gruppeniveau (SUM, AVG osv.). I stedet bør DISTINCT kunne bruges.
Desuden vil jeg tro, at dine problemer netop beror på, at selektionen blev placeret efter grupperingen.
Avatar billede jensen363 Forsker
21. september 2006 - 08:33 #13
kjulius > din løsning viser ikke status optaget :o(
Avatar billede terry Ekspert
21. september 2006 - 12:14 #14
This is (was) the problem

WHERE (((tblAftalekalender.AftaleDato)=[Forms]![frmMAIN]![SøgeDato] Or (tblAftalekalender.AftaleDato) Is Null));

NOTE my comment 0/09-2006 16:51:37 which explians why.
Avatar billede kjulius Novice
21. september 2006 - 14:00 #15
Terry,

Sorry, I obviously didn't pay enough attention (or wasn't bright enough) to see through your explanation at the time I was submitting my theory. After reviewing your explanation again, I think you're right, and the only way is to either create two seperate queries like you did or create a single query with a derived table. Personally I would have gone for the single query but that's a personal preference more than anything else.

So, well done, mate. Couldn't do the job any better myself this time. One always hope, you know! Well, maybe some other time...
Avatar billede terry Ekspert
21. september 2006 - 15:02 #16
:o)
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