26. marts 2009 - 22:47
Der er
10 kommentarer og 1 løsning
Array med løk
for idy = 1 to 10 ManT = rs.Fields("ManT") TirsT = rs.Fields("TirsT") OnsT = rs.Fields("OnsT") tid = cInt(ManT) + cInt(TirsT) + cInt(OnsT) next Ovenstående løber som sagt 10 gange og de 10 x tid vil jeg gerne havde lagt sammen, hvordan??
Annonceindlæg fra DE-CIX
Edge computing: behandling ved kilden
Edge computing revolutionerer den måde, data behandles på, ved at bringe kapacitet og ydeevne tættere på dér, hvor der er behov for det.
15. april 2025
26. marts 2009 - 23:00
#1
arrFld = Array("ManT", "TirT", "OnsT") tid = 0 for idy = 1 to 10 for each fld in arrFld tid = tid + cint(rs(fld)) next next
26. marts 2009 - 23:16
#2
hmm. jeg må heller beskrive det lidt bedere. Nedenstående er udtrak fra database: idy = 1 for idy = 1 to AntalLinjer UgeseddelNrLinje = UgeseddelNr & "-" & UgeseddelAntal sql = "SELECT * FROM [Linje] WHERE UgeseddelNr = '" & UgeseddelNrLinje & "' AND LinjeNr = " & idy Set rs = Server.CreateObject("ADODB.RecordSet") rs.Open sql, conn, 3,3 if rs.eof or rs.bof then else ManT = rs.Fields("ManT") TirsT = rs.Fields("TirsT") OnsT = rs.Fields("OnsT") tid = cInt(ManT) + cInt(TirsT) + cInt(OnsT) end if rs.close set rs = nothing next response.write tid AntalLinjer er antal af poster i databasen som opfylder sql krav for hver gennemløb findes der værdi i ManT, TirsT ovs. disse værdier skal så til slut lægges sammen, og udskrives. f.eks. 1. gemmenløb giver 4 og 2. gennemløb giver 5 ialt 9
26. marts 2009 - 23:25
#3
Det ændrer nu ikke på mit forslag, det skal bare flettes ind i din kode, men rent bort set fra det, så kan du vel klare dig med at skrive tid = tid + Cint(rs("ManT")) + CInt(rs("TirT")) + CInt(rs("OnsT")) så du akkumulerer tid på tværs af dine databasekald i stedet for at skulle holde styr på tid for hver enkelt iteration... Det er vel totalen der er interessant og ikke de mellemliggende resultater... eller hvad?
26. marts 2009 - 23:33
#4
Jo, det er kun totalen der er interessant.
26. marts 2009 - 23:36
#5
I så fald vil jeg mene det sidste jeg foreslå er det eneste der er nødvendigt. Den første løsning er bare en lidt mere fancy måde at summere på (måske...).
26. marts 2009 - 23:39
#6
Du mener altså at det skal se sådan ud? idy = 1 for idy = 1 to AntalLinjer UgeseddelNrLinje = UgeseddelNr & "-" & UgeseddelAntal sql = "SELECT * FROM [Linje] WHERE UgeseddelNr = '" & UgeseddelNrLinje & "' AND LinjeNr = " & idy Set rs = Server.CreateObject("ADODB.RecordSet") rs.Open sql, conn, 3,3 if rs.eof or rs.bof then else tid = tid + Cint(rs("ManT")) + CInt(rs("TirT")) + CInt(rs("OnsT")) end if rs.close set rs = nothing next response.write tid
26. marts 2009 - 23:43
#7
Det ser ud til at virke efter hensigten.
26. marts 2009 - 23:50
#8
Mange tak for din hjælp, hvis du laver et svar skal du få de 125 point. :o)
26. marts 2009 - 23:55
#9
Velbekomme :-) NB: det er altid en god skik at initialisere sine variable inden man bruger dem, så tid bør sættes til 0 (nul) inden løkken over idy...
27. marts 2009 - 00:24
#10
OK, takker
06. april 2009 - 22:31
#11
Tak for point :)
Kurser inden for grundlæggende programmering