Avatar billede ugotabe_kidding Nybegynder
29. oktober 2002 - 11:29 Der er 18 kommentarer og
2 løsninger

Null eller 0 i en query

Jeg har følgende problem:
Jeg har en form for pointsystem, hvor man dels kan tildele nogle brugere points, bruge points og se hvor mange der er tilbage.
Mit "Remaining"-felt i queryen er derfor baseret på "Granted" - "Vested".
Men hvis der kun er Granted og endnu ikke Vested, er både Vested og Remaining blanke. Dette giver problemer når jeg hiver data ind i en pivottabel, hvor jeg vil summere hvor mange point alle brugere har, samt hvor meget der er brugt over en given periode og sidst, hvor mange point der er tilbage.

Jeg har først en qryGranting og en qryVested, men qryVested indeholder ikke data for den pågældende bruger, hvis der ikke er brugt nogle point - derfor bliver den blank.

Summasummarum:
Hvorledes sætter jeg Vested=0, hvis der ikke er en værdi, således at regnestykket Granted-Vested enten er lig med Granted eller differencen mellem ovenstående - og dermed IKKE blank (dette kan Excel nemlig ikke summere)

U.K.
Avatar billede terry Ekspert
29. oktober 2002 - 11:32 #1
You an use the NZ fucntion to convert to 0

Or iif(isNull([somefield], 0, [somefield])
Avatar billede jkrons Professor
29. oktober 2002 - 11:32 #2
=Hvis(Vested="";0;Vested)
Avatar billede terry Ekspert
29. oktober 2002 - 11:32 #3
NULL is NOT ""
Avatar billede jkrons Professor
29. oktober 2002 - 11:33 #4
Jeg var lige et øjeblik ovre i regneark - derfor den beynderlige formel.
Avatar billede jkrons Professor
29. oktober 2002 - 11:34 #5
Som nævnt, jeg drømte om Excel, som til gengæld ikke har det godt med Null.
Avatar billede terry Ekspert
29. oktober 2002 - 11:35 #6
:o)
Avatar billede ugotabe_kidding Nybegynder
29. oktober 2002 - 11:37 #7
Jeg skal nok bede om en nærmere beskrivelse af begge løsningsforslag?
I den query jeg bruger til Pivot i Excel har jeg naturligvis BrugerID, ..., ..., ..., qryGranted.Granting, qryVested.Vested (som til tider er blank - skal være 0), Remaining: [Granted]-[Vested] (blank hvis Vested er blank - skal være = Granted, hvis Vested=blank/0 ellers lig differencen.

Men hvordan gør jeg det? Kan det gøres i query-designet?
29. oktober 2002 - 11:40 #8
Brug den dertil indrettede funktion Nz:

Nz([Vested];0)

Den sørger for at der altid står 0, hvis ikke andet er angivet
29. oktober 2002 - 11:41 #9
..som Terry også skrev, ser jeg ;o)
Avatar billede ugotabe_kidding Nybegynder
29. oktober 2002 - 11:47 #10
Det så fint ud indtil jeg skulle opdatere pivot'en.
[Microsoft][ODBC Microsoft Access Driver] Undefined function 'NZ' in expression

What to do?
29. oktober 2002 - 11:48 #11
Er det en passthrough-query?
Avatar billede ugotabe_kidding Nybegynder
29. oktober 2002 - 11:51 #12
Passthrough? Hvad er det?

Desuden kan jeg nu se at den kun udvælger de poster, hvor Vested er blank? Det skyldes vel at jeg har sat Nz([Vested];0) ind som Criteria, men det skal jo være en form for If-sætning istedet! Den skal jo også vise de poster, hvor der er en værdi i Vested!!
Avatar billede ugotabe_kidding Nybegynder
29. oktober 2002 - 12:03 #13
Rettelse: Ved at indsætte Nz([Vested];0) i Criteria under Vested finder den kun de poster, hvor Vested IKKE er blank el. 0

Kan det ikke klares i query-designet? Og hvad skyldes Excel-fejlen? Duer Nz-kommandoen ikke i Access97?
29. oktober 2002 - 12:06 #14
hmm...Nz virker i Access 97

Prøv at lav en ny kolonne:
Vested2: Nz([Vested];0)

Herefter kan du bruge dine kriterier under denne kolonne.
Avatar billede ugotabe_kidding Nybegynder
29. oktober 2002 - 12:20 #15
Nu virker det perfekt med Vested

Men Excel2000 brokker sig over at 'Nz' er undefined, når jeg vil importere fra en Access97-DB

Kan jeg "definere" Nz et sted?
Jeg retter i DBen i Access2000, men konverterer tilbage til 97, da jeg skal køre basen fra en VB-applikation, der åbenbart ikke kan li' 2000? Men jeg kan ikke se hvorfor Nz ikke kan bruges i Excel2000?
Avatar billede terry Ekspert
29. oktober 2002 - 12:21 #16
dont use NZ use IIF
Avatar billede ugotabe_kidding Nybegynder
29. oktober 2002 - 12:23 #17
iif virker kun de steder hvor Vested er blank a la:
Prøv at lav en ny kolonne:
Vested2: Nz([Vested];0) //Virker!
Prøv at lav en ny kolonne:
Vested3: iif([Vested];0) //Virker kun hvor Vested er blank
Avatar billede terry Ekspert
29. oktober 2002 - 12:25 #18
iif(isNull([Vested]);0;[Vested])
Avatar billede ugotabe_kidding Nybegynder
29. oktober 2002 - 12:30 #19
Superb!

Tak for kampen, begge!
Det spiller bare nu!

/U.K.
Avatar billede ugotabe_kidding Nybegynder
29. oktober 2002 - 12:31 #20
Glemte noget ;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

IT-JOB

Politiets Efterretningstjeneste

IT Sikkerhedsarkitekt i PET

Forsvarsministeriets Materiel- og Indkøbsstyrelse

Teknisk Projektleder til Forsvarets data- og AI-projekter

Netcompany A/S

Linux Operations Engineer

Roskilde Universitet

AV Tekniker