jakob77 Novice
17. august 2020 - 20:07

SQL sætninger der viser rigtigt og forkert

Jeg har to sql-sætninger, hvor den ene regner rigtigt mens den anden regner forkert.
Begge sql-sætninger er ud fra to parameter hvor jeg vil have den samlede sum ud fra projektnr og artnr samt måned og år. Jeg kan ikke finde ud af hvad der går galt med den sidste sql-sætning, for den har virket, men har lavet lidt om i tabellerne, men det burde ikke have nogen betydning i disse sql-sætninger.

Tabellerne er oprettet som følgende:
c.Execute _
        "CREATE TABLE datainput(" & _
        "DataID  VARCHAR(40) PRIMARY KEY NOT NULL," & _
        "projektnr  VARCHAR(40) NOT NULL," & _
        "artnr  VARCHAR(40) NOT NULL," & _
        "AfdelingID  VARCHAR(40)," & _
        "linjenr INTEGER NOT NULL," & _
        "Beskrivelse  VARCHAR(100)," & _
        "OMFM  VARCHAR(10)," & _
        "Bevnr  VARCHAR(40)," & _
        "lonnummer  INTEGER," & _
        "DataDato  DATETIME," & _
        "Budgetaar  INTEGER," & _
        "OpretDato  DATETIME," & _
        "OpretBruger    VARCHAR(10)," & _
        "ModiDato    DATETIME," & _
        "ModiBruger  VARCHAR(10))"
       
    c.Execute ("Drop Table datainputBelob")
   
    c.Execute _
        "CREATE TABLE datainputBelob(" & _
        "DataBelobID  VARCHAR(40) PRIMARY KEY NOT NULL," & _
        "Belob  DECIMAL(18,5)," & _
        "DataDato  DATETIME," & _
        "DataID  VARCHAR(40) NOT NULL," & _
        "OpretDato  DATETIME," & _
        "OpretBruger    VARCHAR(10)," & _
        "ModiDato    DATETIME," & _
        "ModiBruger  VARCHAR(10))"
og der er efterfølgende lavet relation mellem tabellerne.

Denne regner rigtigt, idet jeg skal have sum(belob) x satsbelob for at regne timer gange sats ud.
Set rs1 = c.Execute("SELECT sum(belob) * Satsbelob as [belob], datainput.dataDato FROM datainputBelob INNER JOIN datainput ON datainput.dataId = DatainputBelob.dataID INNER JOIN medarbSats ON MedarbSats.lonnummer = datainput.lonnummer WHERE datainput.satstype = medarbSats.SatstypeID AND projektnr = '" & rs![Projektnr] & "' AND artnr = '" & rs![artnr] & "' AND month(datainputbelob.dataDato) = '" & t & "' AND year(datainputbelob.dataDato) = '" & Worksheets("Indtægt og omkostningsbudget").Range("Budgetår").Value & "' GROUP BY datainput.dataDato, Satsbelob")

Denne tager kun den første projektnr og artnr - selvom der er flere linjer med de samme oplysninger
Set rs1 = c.Execute("SELECT sum(belob) as [belob], datainput.dataDato FROM datainputBelob INNER JOIN datainput ON datainput.dataId = DatainputBelob.dataID WHERE projektnr = '" & rs![Projektnr] & "' AND artnr = '" & rs![artnr] & "' AND month(datainputbelob.dataDato) = '" & t & "' AND year(datainputbelob.dataDato) = '" & Worksheets("Indtægt og omkostningsbudget").Range("Budgetår").Value & "' GROUP BY datainput.dataDato")

Jeg kan ikke lige se, hvad jeg gør galt, for jeg mener at den virkede i sidste uge, uden at jeg har ændret i koden.

Nogen som kan gennemskue hvad jeg gør galt?
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

Opret Preview

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





Premium
IBM fortsætter offensiv opkøbsstrategi: Køber en af de største og ældste multicloud-leverandører i USA
IBM opkøber cloud-virksomheden MSP Taos. Det er blot det seneste opkøb fra IBM i jagten på de store cloud-giganter og falder i tråd med IBM's offensive hybrid cloud-strategi.
Computerworld
Verdens tredjestørste smartphone-producent blacklistes af Trump-administrationen
Smartphoneproducenten Xiaomi er blandt de ni nytilkomne på Trump-administrationens sorte liste over kinesiske virksomheder, som amerikanerne ikke længere må investere i.
CIO
Podcast: Hos Viking Life-Saving Equipment er it gået fra at være backend til at være noget, som kunderne spørger aktivt efter
Podcast, The Digital Edge: Viking leverer en stadig større del af deres produkt som en tjeneste. Som en del af tjenesten tager Viking ansvar for sikkerheden ved at levere, dokumentere og vedligeholde det nødvendige sikkerhedsudstyr. Hør hvordan Henrik Balslev senior digital director hos Viking har løftet den opgave.
Job & Karriere
Microsoft i kæmpe dansk satsning - åbner tre store datacentre i Danmark
Microsoft lancerer kæmpe satsning fra hovedkvarteret i Lyngby. Selskabet åbner tre store bæredygtige datacentre på Sjælland.
White paper
Sådan outsourcer du effektivt – og undgår fælderne
Nogle outsourcer for at minimere omkostningsniveauet, andre for at skaffe ressourcer og spidskompetencer, der er svære at skaffe lokalt – eller af en helt tredje årsag. Der er dog talrige forhold, der er gode at afdække, før man overhovedet begynder at lede en outsourcingudbyder. Man skal klarlægge egne projektbehov samt de spørgsmål og krav, man vil stille samt indsamle viden og erfaringer om, hvordan samarbejdet indledes, drives og styres optimalt. Dertil skal man kende til de hyppigste faldgruber, der kan få et ellers lovende outsourcingsamarbejde til at køre i grøften.