26. november 2005 - 10:38
Der er
18 kommentarer og 2 løsninger
Lægge tal sammen?
Hej, Jeg har en tabel med grain1, grain2, grain3, grain4, og grain5. Jeg vil gerne lægge de værdier sammen der ikke er lig 0. Jeg ved ikke om jeg skal gøre det via min sql? Jeg har lavet et loop: lpcontrol = 0 strTal = 1 do while (lpcontrol <= 4) strGrain = RS1.Fields("grain" & strTal).Value IF strGrain <> "0" Then 'strGrain = "strGrain" & strTal strGrain = CDbl(strGrain) strSum = strSum + strGrain END IF lpcontrol = lpcontrol + 1 strTal = strTal + 1 loop Men kan ikke oprette en streng ala: "strSum" & strTal så jeg kan skille dem fra hinanden? Hvad skal jeg gøre? Pelle
Annonceindlæg fra Novataris
Vejen til devops med Bavarian Nordic
Bavarian Nordics vækst blev starten på et DevOps-samarbejde med Novataris for hurtigt at kunne tilpasse IT-organisation til forretningen.
7. december 2023
26. november 2005 - 10:51
#1
Du kan da bare lægge dem alle sdammen sammen - dem som er 0 bidrager jo ikke til summen på nogen måde.
26. november 2005 - 10:53
#2
lpcontrol = 0 strTal = 1 Do While (lpcontrol <= 4) strGrain = RS1.Fields("grain" & strTal).Value strGrain = CDbl(strGrain) strSum = strSum + strGrain lpcontrol = lpcontrol + 1 strTal = strTal + 1 Loop
26. november 2005 - 10:55
#3
... men jeg er ikke sikker på hvad det er du øsnker at kunne gøre mht. din: strGrain = "strGrain" & strTal Kan du forklare lidt mere? Evt. med nogle eksempler.
26. november 2005 - 11:14
#4
du kan også ligge dem sammen i din SQL sætning: SQL = "select grain1+grain2+grain3+grain4+grain5 as grainSum from tabelnavn" og så kan du hente summe via recordsetet: strSum = RS1.Fields("grainSum")
26. november 2005 - 11:15
#5
hov glemte .value i sidste linie :) strSum = RS1.Fields("grainSum").Value
26. november 2005 - 19:21
#6
Hej Begge, Og tak for hjælpen... der er dog ingen af løsningerne der løser mit problem. Jeg forsøger at beskrive det lidt bedre. Jeg har en tabel: ID, navn, flag, grain1, grain2, gran3, grain4, grain5 Her ligger f.eks: 1, Peter, Dansk, 10, 10, 10, 10, 10 2, Morten, Svensk, 5, 5, 5, 5, 5 Det jeg vil have er et output til en tabel der ser sådan ud: Peter | Dansk | 50 Morten | Svensk | 25 Giver det bedre mening? Måske skal men lave en SQL der både vælger alle de andre felter (SQL1 = "SELECT * FROM) og så lægger alle de forskellige grain værdier sammen? Håber i kan løse det nu! Vh Pelle * nielle - det jeg tænkte var at loopet kører værdien for den første record igennem men gemmer dem som strSum og lægger derefter alle de andre ind i samme sum. Hvis jeg kunne lave en "strSum" & strTal (strSum1) så ville jeg få fem forskellige strSum1, strSum2... som ville indeholde hver sin værdi... mn efter jeres svar tror jeg nok at det er smartest at konstruere en vild SQL?!
26. november 2005 - 19:29
#7
Som eagleeye foreslog kan du lave din sammenregning i selve SQL-kaldet. Din løsning kunne se nogenlunde sådan her ud: SQL = "SELECT navn, nationalitet, grain1+grain2+grain3+grain4+grain5 AS grainSum FROM tabelnavn" Set rs = Coon.Execute(SQL) Do While Not rs.EOF Response.Write rs("navn") & " | " & rs("nationalitet") & " | " & rs("grainSum") & "<br>" rs.MoveNext Loop
26. november 2005 - 19:30
#8
Så kan du udvide SQL sætnignen sådan her: SQL = "select id, navn, flag, grain1+grain2+grain3+grain4+grain5 as grainSum from tabelnavn" Eks på koden som ligger sammen i databsen: SQL = "select id, navn, flag, grain1+grain2+grain3+grain4+grain5 as grainSum from tabelnavn" Set rs1 = Conn.Exeute(SQL) do while not rs1.EOF response.write rs1("navn") response.write " | " response.write rs1("flag") response.write " | " response.write rs1("grainSum") response.write "<br>" rs1.movenext loop
26. november 2005 - 19:38
#9
Kan man sortere på grainSum? Order by grainSum - en anden detalje; der er 55 felter i min tabel kan man ikke skrive: SELECT *, grain1+grain2+grain3+grain4+grain5 as grainSum ?? Det kan man nok ikke? Jeg vil helst ikke skulle skrive alle felterne... men der er måske ingen vej udenom? Pelle
26. november 2005 - 19:39
#10
Du kan godt gøre det på den måde der, men så ofre du noget af effektiviteten. Man bør aldrig trække mere ude end det man skal bruge senere.
26. november 2005 - 19:40
#11
Hvis det er access så skal man skrive regne stykke igen
26. november 2005 - 19:40
#12
Altså: order by grain1+grain2+grain3+grain4+grain5 DESC Nogle andre databasser kan godt sortere på et aliasnavn.
26. november 2005 - 19:40
#13
Og ja, du kan godt sortere på grainSum.
26. november 2005 - 21:24
#14
Hej begge, SQL'en gjorde det... den trækker det ud... den sorterer... super! eagleye.. må jeg smide ti af dine velfortjente point til nielle? han har trods alt brugt noget af sin lørdag aften? Hvis det er ok så skriv det i dit svar... så kan nielle også lige oprette et! Takker og bukker! Pelle
26. november 2005 - 23:28
#15
Jeg måtte også lige smutte nogle timer, ja naturligvis må du også give nogle point til nielle :)
27. november 2005 - 07:19
#16
Jamen, så lægger jeg da et svar :^)
28. november 2005 - 18:57
#17
Tak for hjælpen!
11. december 2005 - 19:48
#18
Husk nu at acceptere svarene :^)
12. december 2005 - 07:09
#19
Sorry...
12. december 2005 - 18:01
#20
Det er helt ok :^) ... og takker for point.
Kurser inden for grundlæggende programmering