Avatar billede totalpc Seniormester
01. april 2011 - 14:24 Der er 16 kommentarer og
1 løsning

SELECT SUM giver problemer med NULL

Hej

Jeg har en hel del felter jeg gerne vil have summeret. Enkelte indeholder NULL og dermed får jeg intet resultat med en almindelig SUM(felt1+felt2) osv..
Jeg har prøvet diverse
NZ(sum(felt,0)
IFNULL
Coalesche

Men jeg kan ikke få noget at det til at virke. Kan I hjælpe?`

Her er mit sidste forsøg, men led mig endelig i den mest "rigtige" retning.

strsql2 = "Select Nz(SUM(fboldkontrol,0)) + Nz(SUM(mboldkontrol,0)) + Nz(Sum(aboldkontrol,0))  AS Ialt FROM Observationer WHERE [KampID]=" & ID
Avatar billede jensen363 Forsker
01. april 2011 - 14:30 #1
Normalt vil man benytte Nz() direkte, altså

Select SUM(Nz(fboldkontrol))
Avatar billede michael_stim Ekspert
01. april 2011 - 14:32 #2
...WHERE Not IsNull(felt)...
Avatar billede totalpc Seniormester
01. april 2011 - 14:38 #3
jensen363 :

strsql2 = "Select SUM(NZ(fboldkontrol)) + SUM(Nz(mboldkontrol)) + Sum(NZ(aboldkontrol))  AS Ialt FROM Observationer WHERE [KampID]=" & ID

Microsoft][ODBC Microsoft Access Driver] Der er en ikke-defineret funktion "NZ" i udtrykket.

Michael_stim

Gider du lave et eksempel ud fra ovenstående?
Jeg kan ikke lige helt se det for mig :)
Avatar billede mugs Novice
01. april 2011 - 14:54 #4
I en forespørgsel:

SELECT Sum(Nz([Tabel1].[felt1]))+Sum(Nz([Tabel1].[felt2])) AS Udtryk1
FROM Tabel1;
Avatar billede totalpc Seniormester
01. april 2011 - 14:59 #5
Mugs:

kode:

strsql2 = "Select SUM(NZ([observationer].[fboldkontrol])) + SUM(Nz([observation].[mboldkontrol])) + Sum(NZ(observationer[].[aboldkontrol]))  AS Ialt FROM Observationer WHERE [KampID]=" & ID

SQL der udføres:

Select SUM(NZ([observationer].[fboldkontrol])) + SUM(Nz([observation].[mboldkontrol])) + Sum(NZ(observationer[].[aboldkontrol])) AS Ialt FROM Observationer WHERE [KampID]=7

Fejl:

Microsoft OLE DB Provider for ODBC Drivers fejl '80040e14'

[Microsoft][ODBC Microsoft Access Driver] Der er en syntaksfejl, fordi der mangler en operator. i forespørgselsudtrykket "SUM(NZ([observationer].[fboldkontrol])) + SUM(Nz([observation].[mboldkontrol])) + Sum(NZ(observationer[].[aboldkontrol]))".
Avatar billede Slettet bruger
01. april 2011 - 15:05 #6
fejlmeddelelsen i #3 antyder linket tabel over ODBC

NZ og andre vba ting fungerer ikke over ODBC

men, totalpc, har du så ikke fået den fejlmeddelelse hele tiden - også på dit oprindelige forsøg?
Avatar billede mugs Novice
01. april 2011 - 15:07 #7
SELECT Sum(Nz([Tabel1].[felt1]))+Sum(Nz([Tabel1].[felt2])) AS Udtryk1
FROM Tabel1;

Er afprøvet i en forespørgsel og den fungerer. Prøv at kave en forespørgsel ved at indsætte dine egne objektnavne i stedet for "Tabel1.felt" og "Tabel11.felt2"

Når det fungerer kan du kopiere SQL-strengen ind i f.eks VBA.

Så vidt jeg kan se, mangler du et " som afslutning på strsql2.
Avatar billede jensen363 Forsker
01. april 2011 - 15:29 #8
SUM(IFNULL()) skulle virke i forbindelse med ODBC, altså :

    Sum(IFNULL(([observationer].[fboldkontrol], 0)
Avatar billede totalpc Seniormester
01. april 2011 - 17:20 #9
brugerekspert@ Jo jeg har fået fejl på alle forsøg.

Mugs@ Det virker fint direkte i ACCESS, men virker ikke i ASP. Der kommer fejlen:

Microsoft OLE DB Provider for ODBC Drivers fejl '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Der er en ikke-defineret funktion "Nz" i udtrykket.

jensen363@ Det prøver jeg lige
Avatar billede mugs Novice
01. april 2011 - 17:28 #10
Du burde fra starten have gjort opmærksom på, at det skal benyttes i ASP. Har ikke forstand på ASP. Havde jeg den oplysning, ville jeg ALDRIG have afgivet et svar.

Er der ikke en kategori for ASP?
Avatar billede mugs Novice
01. april 2011 - 17:37 #11
Er det en ide, at lave en opdateringsforespørgsel i Access, der opdatarer NULL felter til 0 og derefter en opsummering på baggrund af denne forespørgsel.

Derved undgår du funktionen Nz.
Avatar billede Slettet bruger
01. april 2011 - 18:11 #12
http://stackoverflow.com/questions/881226/how-do-i-concatenate-two-strings-with-the-jet-oledb-4-0-provider
i lyset af '1 Answer' - måske (bare et bud):

sum(("0" & felt1)+("0" & felt2))
Avatar billede totalpc Seniormester
01. april 2011 - 18:51 #13
Det beklager jeg meget. Jeg oprettede faktisk her, da jeg tænkte at der nok var nogen der var klogere på SQL her :)

Jeg får lige prøvet de sidste 2 forslag i aften. Det var for at undgå at konvertere til 0'er i databasen.
Avatar billede totalpc Seniormester
01. april 2011 - 19:02 #14
Jensen363@ Giver stadig:
Der er en syntaksfejl, fordi der mangler en operator.

Brugerekspert@ Den metode addere ikke men lægger blot felterne sammen. Så 1 1 2 bliver til 112 i stedet for 4

Smid evt et svar alle sammen, så kan vi dele point og så opretter jeg ovre i ASP
Avatar billede Slettet bruger
01. april 2011 - 19:31 #15
sider ikke lige med et setup der kan teste
men prøv lige med indledende 0+:

sum(0+("0" & fel1)+.........

Ingen løsning - ingen point her!
Avatar billede totalpc Seniormester
01. april 2011 - 19:51 #16
Der var den sgu brugerekspert....det virker...og den regner rigtigt ;)

Så nu må du gerne smide et svar ;)
Avatar billede Slettet bruger
01. april 2011 - 20:11 #17
ok - værsgod.
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

Udviklings- og Forenklingsstyrelsen

Underdirektør til gældsområdet

Teknologisk Institut

Udvikler til digitaliseringsteam

Politiets Efterretningstjeneste

Configuration Manager til PET