webForumDet fria alternativet

addera fält

11 svar · 267 visningar · startad av soffan76

soffan76Medlem sedan maj 2001684 inlägg
#1

Godmorgon alla!

Jag har sökt på detta i forumet men inte hittat det svar jag letat efter. Jag vill summera ett antal fält, 34 stycken tror jag de är. De heter v23, v24, v25 o.s.v. (v står för vecka)
Jag vet att man skriver nåt liknande detta:

sql = "select sum(antal) as summa " & "from uppdrag "

Men hur skriver jag för att den ska addera alla fält?

MVH Sofia

OveRRidEMedlem sedan feb. 200112 078 inlägg
#2

Vad har kolumen för datatyp?

SUM() fungerer väl bara på numeriska kolumner, ex. tal.

OveRRidEMedlem sedan feb. 200112 078 inlägg
#3

Iallfall:

sql = "SELECT SUM(antal) AS summa FROM uppdrag "
soffan76Medlem sedan maj 2001684 inlägg
#4

Datatypen är tal.
Jag testade din SQL-sats men fick:
[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.
Vad blir fel?

OveRRidEMedlem sedan feb. 200112 078 inlägg
#5

Too few parameters innebär att du troligtvis har skrivit fel kolumnnamn.

Jag vet inte om det påverkar, men kan inte svenska Access ha 'svenska' reserverade ord också?

soffan76Medlem sedan maj 2001684 inlägg
#6

Too few parameters innebär att du troligtvis har skrivit fel kolumnnamn.

Men jag har ju en massa fältnamn som ska adderas, det är inte en kolumn som ska adderas utan 34 fält. v23+v24+v25+v26+v27 o.s.v.

LarsGMedlem sedan dec. 200012 464 inlägg
#7

Du får summera ihop dom explicit

select v23 + v24 + v25 ... + v35 from t

Jag tycker att du har byggt din tabell på fel ledd. (Det är aldrig för sent att ändra.)

soffan76Medlem sedan maj 2001684 inlägg
#8

Vet inte hur jag ska kunna lösa det med tabellen på andra hållet.
v23, v24, v25 är ju veckofält där olika antal timmar för olika projekt fylls i.

I alla fall ser min snygga SQL-sats följande ut:

SQL2 = "SELECT v23 + v24 + v25 + v26 + 
v27 + v28 + v29 + v30 + v31 + v32 + v33 + 
v34 + v35 + v36 + v37 + v38 + v39 + v40 + 
v41 + v42 + v43 + v44 + v45 + v46 + v47 + 
v48 + v49 + v50 + v51 + v52 + v1+ v2 +v3+ v4 
AS summa FROM uppdrag "

och borde så skrivas ut med:

<td valign="top"><%=replaceZero(rs2("summa"))%></td>

..men det gör den inte, fältet blir tomt...

LarsGMedlem sedan dec. 200012 464 inlägg
#9

Finns det värden i alla kolumner? Om det är null i någon kolumn så blir summan också null.

soffan76Medlem sedan maj 2001684 inlägg
#10

Nej, det finns inte värden i alla. Men varför adderar den inte de fält där det finns värden då?

LarsGMedlem sedan dec. 200012 464 inlägg
#11

Det är så null fungerar. Det är inte samma sak som noll.

Antingen kan du uppdatera tabellen

update uppdrag set v25 = iif(v25 is null,0,v25),
                     v26 = iif(v26 is null,0,v26)

etc

eller så kan du lägga in en mappning i select-satsen

SQL2 = "SELECT iif(v23 is null,0,v23) + iif(v24 is null,0,v24)  ... AS summa FROM uppdrag "

Som sagt, om du har en tabellstruktur åt hållet

uppdrag!Vecka!Timmar

så hade alla dessa frågor blivit mycket enklare

soffan76Medlem sedan maj 2001684 inlägg
#12

OK, jag tror jag ska ändra stukturen, detta verkar lite för bökigt. Tack för hjälpen!

137 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
133 ms — hämta tråd, inlägg och bilagor (db)