Avatar billede 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?
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
Computerworld tilbyder specialiserede kurser i database-management

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