Avatar billede fomse Nybegynder
08. januar 2004 - 20:11 Der er 13 kommentarer og
2 løsninger

Smmere tid i ASP/Access

Jeg er ved at lave et træningsprogram i ASP/Access, og i den forbindelse skal jeg bla. lave et felt hvor man indtaster træningstid altså fx. 2:35 hvordan summerer man lettest.

Databasen hedder kmdata, tabellen hedder tid og den skal regen det samlede antal timer og minutter men har indtastet.

Håber i forstår spørgsmålet.

Fomse:-)
Avatar billede syntax_hh Nybegynder
08. januar 2004 - 21:12 #1
Mener du ikke bare at den skal plusse det?
Avatar billede fomse Nybegynder
09. januar 2004 - 06:07 #2
Jo den skal lægge alle tidene sammen...
Avatar billede syntax_hh Nybegynder
09. januar 2004 - 11:44 #3
Lav en løkke
Så skal du jo bare bruge +
Sådan?
Avatar billede deeflate Nybegynder
09. januar 2004 - 22:48 #4
<%
Set rs = Server.CreateObject("ADODB.RecordSet")
Set Conn = Server.CreateObject("ADODB.Connection")
strDSN = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("kmdata.mdb")
Conn.Open strDSN

strSQL = "SELECT * FROM tid"

rs.open strSQL, conn

dim tid, tidIalt

do while not rs.eof
arrTid = split(rs("tid"),":")
intTimer = CInt(arrTid(0))
intMinutter = CInt(arrTid(1))
intTotalMinutter = intTotalMinutter + (intTimer*60) + intMinutter
response.Write intTimer & " - " & intMinutter & "<br>" 
response.Write intTotalMinutter & "<br><br>" 
rs.MoveNext
Loop

intTotalTimer = int(intTotalMinutter/60)
intTotalMinutter = intTotalMinutter - (intTotalTimer * 60)
response.write(intTotalTimer & ":" & intTotalMinutter)

%>
Avatar billede deeflate Nybegynder
09. januar 2004 - 22:52 #5
Feltet i databasen skal være af typen tekst og alle tider skal indtastes i formatet tt:mm (f.eks. 2:35).
Her er det lidt pænere uden testudskrivninger og dim'ning af gamle variabler og med lukning af diverse åbnede sager:

<%
Set rs = Server.CreateObject("ADODB.RecordSet")
Set Conn = Server.CreateObject("ADODB.Connection")
strDSN = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("kmdata.mdb")
Conn.Open strDSN

strSQL = "SELECT * FROM tid"

rs.open strSQL, conn

do while not rs.eof
  arrTid = split(rs("tid"),":")
  intTimer = CInt(arrTid(0))
  intMinutter = CInt(arrTid(1))
  intTotalMinutter = intTotalMinutter + (intTimer*60) + intMinutter
  rs.MoveNext
Loop

intTotalTimer = int(intTotalMinutter/60)
intTotalMinutter = intTotalMinutter - (intTotalTimer * 60)

response.write(intTotalTimer & ":" & intTotalMinutter)

rs.close
set rs = Nothing

conn.close
set conn = nothing
%>
Avatar billede fomse Nybegynder
16. januar 2004 - 07:57 #6
Hej deeflate

Kanon, tak skal du ha'
Kan du også vise mig hvordan jeg skriver den samlede tid månedsvis?
altså således:
Jan Feb Mar osv......
3:30 2:45 3:10 osv....

Du får selvfølgelig flere point....

Fomse:-)
Avatar billede deeflate Nybegynder
16. januar 2004 - 10:53 #7
Hvordan er måneden anført i db'en?
Står der en dato eller et månednavn?
Og skal brugeren kunne vælge hvilke måneder han/hun vil se, er det alle årets måneder indtil nu, alle de måneder, der er tal for i db'en, eller hvad?
Avatar billede fomse Nybegynder
16. januar 2004 - 10:58 #8
-Måneden er anført i dd-mm-yyyy
-Brugeren skal ikk ekunn evælge hvilken måden de vil se, men alle måneder skal listes op ved siden af hinanden (forestiller mig i en tabel) og neden under hver måden skal den samlede tid stå.
-Det er jun fra jan-2004 til dec-2004

Har lavet noget tilsvarende på kilometer! Men kan ikke få det til at virke med tid....

Fomse:-)
Avatar billede deeflate Nybegynder
16. januar 2004 - 11:16 #9
<%
Session.LCID = 1030

Set rs = Server.CreateObject("ADODB.RecordSet")
Set Conn = Server.CreateObject("ADODB.Connection")
strDSN = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("database.mdb")
Conn.Open strDSN

strSQL = "SELECT * FROM tider"

rs.open strSQL, conn

response.Write "<table><tr>"

For i=1 to 12
  response.Write "<td>" & MonthName(i,true) & "</td>"
Next

response.Write "</tr><tr>"

For i=1 to 12

  intTotalTimer = 0
  intTotalMinutter = 0

  rs.MoveFirst
  do while not rs.eof
    if datepart("m",rs("dato")) = i then
      arrTid = split(rs("tid"),":")
      intTimer = CInt(arrTid(0))
      intMinutter = CInt(arrTid(1))
      intTotalMinutter = intTotalMinutter + (intTimer*60) + intMinutter
    end if
    rs.MoveNext
  Loop

  intTotalTimer = int(intTotalMinutter/60)
  intTotalMinutter = intTotalMinutter - (intTotalTimer * 60)

  response.write "<td>" & (intTotalTimer & ":" & intTotalMinutter) & "</td>"

Next

rs.close
set rs = Nothing

conn.close
set conn = nothing
%>

Hvis månedernes navne skal skrives helt ud, erstatter du bare

  response.Write "<td>" & MonthName(i,true) & "</td>"

med

  response.Write "<td>" & MonthName(i) & "</td>"
Avatar billede deeflate Nybegynder
16. januar 2004 - 11:18 #10
Session.LCID = 1030

er det der gør at månederne skrives på dansk. Hvis de skal stå på engelsk, skal du bare skifte det ud med

Session.LCID = 1033
Avatar billede fomse Nybegynder
16. januar 2004 - 11:56 #11
Kanon tak for hjælpen:-)

Fomse
Avatar billede deeflate Nybegynder
16. januar 2004 - 12:06 #12
Værsågod :)
Og jeg takker for point :)
Avatar billede fomse Nybegynder
16. januar 2004 - 12:19 #13
Lige en lille ting!!
Jeg kombinerer det du har lavet med brugerens ID og hvis en bruger ikke har indtastet noget i tidsregnskabet kommer der en fejl:

Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.

Hvordan får man den til at skrive 0 hvis record er tom?
Avatar billede deeflate Nybegynder
16. januar 2004 - 12:30 #14
Du kan teste på om der er nogle records med følgende (rs er navnet på recordsettet):

If not (rs.eof or rs.bof) then
  'udfør kode
else
  'der var ingen poster
end if
Avatar billede fomse Nybegynder
16. januar 2004 - 12:42 #15
Takker:-)
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
Kurser inden for grundlæggende programmering

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

IT-JOB

Politiets Efterretningstjeneste

IT-løsningsarkitekt i PET

KMD A/S

Projektleder

Riskpoint A/S (Riskpoint Solutions Limited)

Senior Developer

Riskpoint A/S (Riskpoint Solutions Limited)

IT Business Analyst