01. marts 2006 - 15:08Der er
20 kommentarer og 1 løsning
sum af kolonne
har været i gang med dette før men det er først nu jeg får taget mig rigtigt sammen til at gøre noget ved det. Jeg har en dynamisk tabel der bliver indtastet et timeforbrug i. Jeg kunne så tænke mig at i en td skrive den totale sum af timer. Jeg fik i en tidligere tråd den besked at sum vil addere antallet af timer. Men jeg er lidt i tvivl om fremgangsmåden. Er der mon en venlig sjæl der kunne give mig et bud på hvordan min response.write skal se ud? lad os sige at kolonnen (meget genialt 8>))kaldes hours - skal jeg så skrive noget i stil med "Response.write sum (hours) " eller hur?
Jeg kan ikke lige gennemskue om du henter data i en database eller hvad (men det vil jeg som udgangspunkt antage). I så fald ville jeg jo finde summen af alle timer ved at køre flg. SQL:
hvis dine timer ligger i et array kan det se således ud:
Imports System Imports System.Collections.Generic Imports System.Collections Imports System.Text Namespace eksperten_array_sum
Class Program
Shared Sub Main(ByVal args As String()) Dim timer As ArrayList = New ArrayList Dim rnd As Random = New Random Dim time As Double Dim resutat As Double = 0 time = 10 timer.Add(time) time = 15 timer.Add(time) time = 5 timer.Add(time) time = 7.7 timer.Add(time) time = 5.6 timer.Add(time) For Each d As Double In timer resutat += d Next Console.WriteLine(resutat.ToString) End Sub End Class End Namespace
det driller lidt - nu sidder jeg ved en ny pc og jeg har glemt hvor det er jeg sætter IE til at vise ASP fejlen - i ved den med at i linienr. XXX er deren fejl
fandt den tak igen - den brokker sig over denne her måske lidt uden for emnet af denne tråd objRS ("dato")=Request.Form("dato") = type mismatch. Jeg forsøger at indsætte noget i min access database, hvad er det jeg har overset?
Måske er Request.Form("dato") tom eller ikke en valid dato...?
Prøv evt. at kontrollere indholdet af Request.Form("dato") inden du indsætter det i feltet (allerbedst ville det være at du validerer alle dine felter inden du indsætter noget som helst i databasen :)). Validering af dato kan gøres med isDate, altså:
if isDate(Request.Form("dato")) then objRs("dato") = Request.Form("dato") end if
Jamen det gør jeg så 8>) Når jeg nu har noget der ligner nedenstående, hvordan kommer jeg afsted med at lave din SQL ? Skal jeg åbne en ny forbindelse når jeg laver den ?
Set objRS=objConn.Execute("SELECT dato,start,slut,bem,timer FROM timer") Do while Not objRS.EOF Response.Write("Dato: "& objRS("dato")& "<br/>") Response.Write("Start: "& objRS ("start") & "<br>") Response.Write("Slut: "& objRS ("slut") & "<br><p>") Response.Write("Bem:"& objRS ("bem") & "<br><p>") Response.Write("Timer:"& objRS ("timer") & "<br><p>") objRS.Movenext Loop
Hvis du vil summere kolonnen timer i tabllen timer, så skal du nok udføre SQL-sætningen for sig selv, f.eks. efter du har gennemløbet indholdet i objRS i din løkke.
hehe - jeg gør noget galt, ovenfor dette lukker jeg databasen og åbner den så igen men den brokker sig over at "name redefined" ?? <% Dim objConn Set objConn = Server.CreateObject ("ADODB.Connection") objConn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\empty-site.org\www\timetable\timer.mdb" objConn.Open ()
Set objRS=objConn.Execute("SELECT sum (timer) FROM timer") Do while Not objRS.EOF Response.Write("Timer:"& objRS ("sum") & "<br><p>") objRS.Movenext Loop
Det er ikke nødvendigt at lukke og åbne forbindelsen igen, du kan bare lave forspørgslen umiddelbart efter din løkke...
Dim objConn, objRS Set objConn = Server.CreateObject("ADODB.Connection") objConn.ConnectionString="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\empty-site.org\www\timetable\timer.mdb" objConn.Open
Set objRS=objConn.Execute("SELECT dato,start,slut,bem,timer FROM timer") Do while Not objRS.EOF Response.Write("Dato: "& objRS("dato")& "<br/>") Response.Write("Start: "& objRS ("start") & "<br>") Response.Write("Slut: "& objRS ("slut") & "<br><p>") Response.Write("Bem:"& objRS ("bem") & "<br><p>") Response.Write("Timer:"& objRS ("timer") & "<br><p>") objRS.Movenext Loop objRS.close
set objRS = objConn.Execute("SELECT SUM(timer) AS sumTimer FROM timer") if not objRS.eof then Response.Write("Timer:"& objRS("sumTimer") & "<br><p>") end if objRS.close
Jeg har selv lavet det trick et par gange (og jeg drikker desværre ikke mokka, så jeg må bare leve med min fejlbarlighed :))
Synes godt om
Ny brugerNybegynder
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.