Avatar billede klk Nybegynder
10. juni 2010 - 20:24 Der er 9 kommentarer og
1 løsning

Panik. At fjerne #Fejl med IsError pga en outer join

Mål: Jeg vil have null felter, når der ikke er match på data.

Kører Access 2003.

Problemet bør kunne løses i et forespørgsels gitter med simple udtryk uden brug af VBA. Det er det jeg har gjort.

Tabeller.
1a. Har en tabel med alle datoer i hele 2010 Tbl_Calender.
2a. En tabel der indeholder den første dag i måneden samt en dag i denne måned (03,09,23)
Forespørgsler.
1a. En forespørgsel der laver en DateValue(Date) Q_Calender
2a. En forespørgsel der laver en
Date_: DateAdd("d";[Day];[Month_Year]) hvor Month_Year er f.eks. 01-05-2010 altså altid den første i måneden.
1b. Join data. Alle dage fra Q_Calender og kun de dage fra Date_ som har en værdi. (outer join)
Når den køres kommer den fint med data når datoer passer sammen. Men når der ikke er data i Date_, så forventer jeg at felter uden match kommer ud som Null.
Men de kommer ud som #Fejl.
2b. Arbejd arbejd
Udtryk1: IIf(IsError([Date_])=1;"1";Null)
Udtryk2: Str(IIf([Udtryk1] Is Null;1;0))
Udtryk3: IsNull([Udtryk1])

Når jeg kopierer det herover
Q_Date_From_TimeData_Result_3
Date                date_    Udtryk1    Udtryk2    Udtryk3
01-05-2010                #Fejl    #Fejl   
02-05-2010                #Fejl    #Fejl   
03-05-2010    03-05-2010        1    -1
04-05-2010    04-05-2010        1    -1
05-05-2010    05-05-2010        1    -1
06-05-2010    06-05-2010        1    -1
07-05-2010    07-05-2010        1    -1

Når Jeg viser hvad der står på skærmen
Q_Date_From_TimeData_Result_3
Date                date_    Udtryk1    Udtryk2    Udtryk3
01-05-2010        #Fejl    #Fejl    #Fejl    #Fejl
02-05-2010        #Fejl    #Fejl    #Fejl    #Fejl
03-05-2010    03-05-2010        1    -1
04-05-2010    04-05-2010        1    -1
05-05-2010    05-05-2010        1    -1
06-05-2010    06-05-2010        1    -1
07-05-2010    07-05-2010        1    -1
Avatar billede Slettet bruger
10. juni 2010 - 22:16 #1
nz([EtEllerAndet];0)
Avatar billede klk Nybegynder
11. juni 2010 - 12:55 #2
Ja ok, tak. Det havde jeg da helt glemt.

Men nu opdager jeg, at det opstår fordi jeg opretter relationer direkte mellem datoerne. Sikke noget klamp. Det kan man jo ikke, når der er mange data. Og jer er allerede over en kvart million records.

Hvordan er det lige man omdanner en dato til et tal som repræcenter datoen.

DateSerial dur ikke her
Avatar billede Slettet bruger
11. juni 2010 - 13:11 #3
der er flere metoder, prøv clng([dato])
Avatar billede klk Nybegynder
11. juni 2010 - 14:14 #4
Virker den også i forespørgselsgitteret?
Avatar billede Slettet bruger
11. juni 2010 - 14:24 #5
ja!~)
Avatar billede klk Nybegynder
11. juni 2010 - 16:28 #6
Det er super. Det virker bare

Mange tak. Læg et svar
Avatar billede klk Nybegynder
11. juni 2010 - 16:29 #7
Øhh gik noget galt?
Avatar billede klk Nybegynder
11. juni 2010 - 16:30 #8
Hvordan tildeler man point i den her version
Avatar billede Slettet bruger
11. juni 2010 - 23:03 #9
Man skal vælge den person, som skal have points, men jeg er nød til at lægge et svar først. Derudover kommenterer man kun!~)

Du har givet dig selv points... og det man så gør er at oprette et nyt spørgsmål, som hedder "Points til spg" og smider et link til det nye spm. i dette spm. og ligeledes ligger man et link til dette spm. i det nye spm. og så ordner vi det hele i det nye spm!~)

Det er sjovt ik'
Avatar billede Slettet bruger
11. juni 2010 - 23:04 #10
ps. godt du fik løst dit problem!~)
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