Avatar billede kimborg Nybegynder
25. februar 2006 - 20:10 Der er 37 kommentarer og
1 løsning

Tal fra 3 felter i loop og vis derefter total

Jeg er ved at lave en regnskabsside, hvor jeg har lavet 3 felter i databasen (Indskud, Debit og Kredit) disse vises med loop og virker fint.

1) Kunne tænke mig at hvis værdien er 0 skal den bare springes over.

2) Efter loopet vil jeg gerne vise saldo (sum af Indskud, Debit og Kredit), kan det lade sig gøre??

3) Datatypen er decimal(6,2), men komma (,) vises ikke.. hvorfor?

Nogle ideér??
Avatar billede thesurfer Nybegynder
25. februar 2006 - 20:30 #1
Hvordan ser din kode ud nu?

/theSurfer
Avatar billede kimborg Nybegynder
25. februar 2006 - 20:41 #2
Her koden:

<%
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={MySQL ODBC 3.51 Driver};SERVER=mydb3.surf-town.net;DATABASE=xxx_xxxx;UID=xxxx_xxxxx;PWD=xxxxx;"

strSQL = "Select * From Regnskab"
Set rs = Conn.Execute(strSQL)

If RS.EOF Then
    Response.Write "Under opbygning..."
Else
    Do While NOT RS.EOF

Response.Write RS("Dag") & "/" & RS("Maaned") & "-" & RS("Aar")
Response.Write " - " & RS("Overskrift") & " - " & RS("Navn") & ": " & RS("Indskud") & RS("Debit") & RS("Kredit")
%>
<br><hr>
<%
    RS.MoveNext
  Loop
End If

Response.Write "<br><br><h4>Saldo: " & RS("Indskud") + RS("Debit") + RS("Kredit") & "</h4>"

Conn.Close
Set Conn = Nothing
%>
Avatar billede thesurfer Nybegynder
25. februar 2006 - 20:54 #3
Hvad står der i felterne Indskud, Debit og Kredit, siden du kan lave sådan en opsætning?:

": " & RS("Indskud") & RS("Debit") & RS("Kredit")

/theSurfer
Avatar billede kimborg Nybegynder
25. februar 2006 - 20:57 #4
det er bare tal - datatypen er: decimal(6,2)
Avatar billede thesurfer Nybegynder
25. februar 2006 - 21:00 #5
"1) Kunne tænke mig at hvis værdien er 0 skal den bare springes over."
Hvilken værdi? (Indskud, Debit, Kredit, eller samlet)

/theSurfer
Avatar billede kimborg Nybegynder
25. februar 2006 - 21:03 #6
Følgende: Indskud, Debit, Kredit
Avatar billede thesurfer Nybegynder
25. februar 2006 - 21:09 #7
ind = rs("indskud") ' smid indholdet af "indskud"-feltet over i variablen ind
deb = rs("debit") ' smid indholdet af "debit"-feltet over i variablen deb
kre = "rs("kredit") ' smid indholdet af "kredit"-feltet over i variablen kre

if ind > 0 and deb > 0 and kre > 0 then
' ind, deb og kre er alle større end 0, så den udskriver informationerne:

Response.Write RS("Dag") & "/" & RS("Maaned") & "-" & RS("Aar")
Response.Write " - " & RS("Overskrift") & " - " & RS("Navn") & ": " & RS("Indskud") & RS("Debit") & RS("Kredit")

end if

Var det noget i den stil, til nr 1?

/theSurfer
Avatar billede thesurfer Nybegynder
25. februar 2006 - 21:09 #8
Rettelse:

ind = rs("indskud") ' smid indholdet af "indskud"-feltet over i variablen ind
deb = rs("debit") ' smid indholdet af "debit"-feltet over i variablen deb
kre = "rs("kredit") ' smid indholdet af "kredit"-feltet over i variablen kre

if ind > 0 and deb > 0 and kre > 0 then
' ind, deb og kre er alle større end 0, så den udskriver informationerne:

Response.Write RS("Dag") & "/" & RS("Maaned") & "-" & RS("Aar")
Response.Write " - " & RS("Overskrift") & " - " & RS("Navn") & ": " & ind & deb & kre

end if

/theSurfer
Avatar billede thesurfer Nybegynder
25. februar 2006 - 21:14 #9
ind = rs("indskud") ' smid indholdet af "indskud"-feltet over i variablen ind
deb = rs("debit") ' smid indholdet af "debit"-feltet over i variablen deb
kre = "rs("kredit") ' smid indholdet af "kredit"-feltet over i variablen kre

if ind > 0 and deb > 0 and kre > 0 then
' ind, deb og kre er alle større end 0, så den udskriver informationerne:

Response.Write RS("Dag") & "/" & RS("Maaned") & "-" & RS("Aar")
Response.Write " - " & RS("Overskrift") & " - " & RS("Navn") & ": " & ind & deb & kre

sum_ind = sum_ind + ind
sum_deb = sum_deb + deb
sum_kre = sum_kre + kre
end if

Og uden for loop'en:

Response.write "Saldo: " & sum_ind + sum_deb + sum_kre

Jeg forstår ikke helt: RS("Indskud") & RS("Debit") & RS("Kredit")

Eksempel:
hvis Indskud indeholder "1", "Debit" indeholder "2" og "Kredit" indeholder "3", kommer der til at stå: 123


/theSurfer
Avatar billede kimborg Nybegynder
25. februar 2006 - 21:19 #10
Altså så koden er:

strSQL = "Select * From Regnskab"
Set rs = Conn.Execute(strSQL)

If RS.EOF Then
    Response.Write "Under opbygning..."
Else
    Do While NOT RS.EOF

ind = rs("indskud") ' smid indholdet af "indskud"-feltet over i variablen ind
deb = rs("debit") ' smid indholdet af "debit"-feltet over i variablen deb
kre = "rs("kredit") ' smid indholdet af "kredit"-feltet over i variablen kre

if ind > 0 and deb > 0 and kre > 0 then
' ind, deb og kre er alle større end 0, så den udskriver informationerne:

Response.Write RS("Dag") & "/" & RS("Maaned") & "-" & RS("Aar")
Response.Write " - " & RS("Overskrift") & " - " & RS("Navn") & ": " & RS("Indskud") & RS("Debit") & RS("Kredit")

%>
<br><hr>
<%
    RS.MoveNext
  Loop
End If

Conn.Close
Set Conn = Nothing
%>
Avatar billede thesurfer Nybegynder
25. februar 2006 - 21:27 #11
Eksempel:

Set rs = Conn.Execute(strSQL)

dim ind, deb, kre
dim sum_ind, sum_deb, sum_kre

ind = 0
deb = 0
kre = 0
sum_ind = 0
sum_deb = 0
sum_kre = 0

If RS.EOF Then
    Response.Write "Under opbygning..."
Else
    Do While NOT RS.EOF

        ind = rs("indskud") ' smid indholdet af "indskud"-feltet over i variablen ind
        deb = rs("debit") ' smid indholdet af "debit"-feltet over i variablen deb
        kre = "rs("kredit") ' smid indholdet af "kredit"-feltet over i variablen kre

        if ind > 0 and deb > 0 and kre > 0 then
            ' ind, deb og kre er alle større end 0, så den udskriver informationerne:

            Response.Write RS("Dag") & "/" & RS("Maaned") & "-" & RS("Aar")
            Response.Write " - " & RS("Overskrift") & " - " & RS("Navn") & ": " & ind & deb & kre

            sum_ind = sum_ind + ind
            sum_deb = sum_deb + deb
            sum_kre = sum_kre + kre
        end if


%>
<br><hr>
<%
    RS.MoveNext
  Loop
End If

Response.write "Saldo: " & sum_ind + sum_deb + sum_kre

/theSurfer
Avatar billede kimborg Nybegynder
25. februar 2006 - 21:28 #12
Okay, havde ikke lige set det andet svar...

Har nu denne kode, men den skriver bare:

saldo: 0

Vedr. RS("Indskud") & RS("Debit") & RS("Kredit"), så tilføjer jeg lige mellemrum eller - eller der nu ser okay ud, men først skal jeg lige have vist mine tal...
Avatar billede kimborg Nybegynder
25. februar 2006 - 21:33 #13
Hehe... du er hurtig..

Der var en lille fejl i: kre = "rs("kredit") '

Skulle have været: kre = rs("kredit") '

Men der kommer ingen tal fra Indskud, Debit og Kredit...
Avatar billede thesurfer Nybegynder
25. februar 2006 - 21:40 #14
Hvor "kommer ingen tal fra Indskud, Debit og Kredit" ?

Hvis det er ved: Response.write "Saldo: " & sum_ind + sum_deb + sum_kre

Prøv med: Response.write "Saldo: " & (CLng(sum_ind) + CLng(sum_deb) + CLng(sum_kre))

/theSurfer
Avatar billede kimborg Nybegynder
25. februar 2006 - 21:43 #15
Der ved disse linier (har indsæt et tegn for at adskille..)

Response.Write RS("Dag") & "/" & RS("Maaned") & "-" & RS("Aar")
Response.Write " - " & RS("Overskrift") & " - " & RS("Navn") & ": " & ind & " | " & deb & " | " & kre
Avatar billede thesurfer Nybegynder
25. februar 2006 - 21:47 #16
Få det til at se sådan ud:

    Do While NOT RS.EOF

        response.write "DEBUG! indskud: *" & rs("indskud") & "*, debit: *" & rs("debit") & "*, kredit: *" & rs("kredit") & "*<br><br>"

' resten af koden her...

Hvad skriver den så ved "DEBUG!"-linierne?

/theSurfer
Avatar billede kimborg Nybegynder
25. februar 2006 - 21:54 #17
DEBUG! indskud: *0*, debit: *0*, kredit: *0*

DEBUG! indskud: *500*, debit: *0*, kredit: *0*


Er lidt i tvivl om jeg har forklaret mig godt nok, slutresultatet skulle gerne være:

Eks.
                  Indskud: Debit:  Kredit:

01/1-2006 - Start:        |      |
19/1-2006 - Kim:  500,00 |      |
23/1-2006 - Kim:          |150,00 |
01/2-2006 - Jens:  500,00 |      |

o.s.v

Giver der mening?
Avatar billede kimborg Nybegynder
25. februar 2006 - 21:54 #18
okay, det så pænere ud da jeg skrev det...
Avatar billede thesurfer Nybegynder
25. februar 2006 - 22:02 #19
Ahh.. så er jeg med..
Så det nok bedste at bruge tabeller..

/theSurfer
Avatar billede kimborg Nybegynder
25. februar 2006 - 22:04 #20
Okay, kan du give et eks.?
Avatar billede thesurfer Nybegynder
25. februar 2006 - 22:06 #21
Yeps.. laver lige et eksempel til dig..

/theSurfer
Avatar billede kimborg Nybegynder
25. februar 2006 - 22:07 #22
Super, tak ;O)
Avatar billede thesurfer Nybegynder
25. februar 2006 - 22:20 #23
Eksempel på layout:

<table width="400">
<tr>
    <td >Dato:</td>
    <td>Overskrift:</td>
    <td>Indskud</td>
    <td>Debit</td>
    <td>Kredit</td>
</tr>
<tr>
    <td>01/1-2006</td>
    <td>Start</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
</tr>
    <td>19/1-2006</td>
    <td>Kim</td>
    <td>500,00</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
</tr>
    <td>23/1-2006</td>
    <td>Kim</td>
    <td>&nbsp;</td>
    <td>150,00</td>
    <td>&nbsp;</td>
</tr>
    <td>01/1-2006</td>
    <td>Jens</td>
    <td>500,00</td>
    <td>&nbsp;</td>
    <td>&nbsp;</td>
</tr>
</table>

/theSurfer
Avatar billede kimborg Nybegynder
25. februar 2006 - 22:45 #24
Jeg har nu lavet det på følgende måde og det virker fint, men jeg mangler bare at kunne lægge talene samme i et "saldo-felt", ved du hvordan jeg gør det?

Koden:

strSQL = "SELECT * FROM Regnskab ORDER BY Dag, Maaned, Aar"
Set rs = Conn.Execute(strSQL)

    Response.Write "<table><tr><td style='font-weight:bold;' width='100px'>Dato:</td><td style='font-weight:bold;' width='300px'>Overskrift:</td><td style='font-weight:bold;' width='150px'>Navn:</td><td width='90px' style='font-weight:bold;'>Indskud:</td><td width='70px' style='font-weight:bold;'>Debit:</td><td width='70px' style='font-weight:bold;'>Kredit:</td></tr><tr><td height='10px'></td></tr><tr>"

If RS.EOF Then
    Response.Write "Under opbygning..."
Else
    Do While NOT RS.EOF

    Response.Write "<td>" & RS("Dag") & "/" & RS("Maaned") & "-" & RS("Aar") & "</td>"
        Response.Write "<td>" & RS("Overskrift") & "</td><td>" & RS("Navn") & "</td><td>" & RS("Indskud") & "</td><td>" & RS("Debit") & "</td><td>" & RS("Kredit") & "</td></tr>"

    RS.MoveNext
  Loop
End If

    Response.Write "</table>"

Conn.Close
Set Conn = Nothing
%>
Avatar billede thesurfer Nybegynder
25. februar 2006 - 23:24 #25
Hmm.. nogen grund til at du har fjernet mine koder?

/theSurfer
Avatar billede kimborg Nybegynder
25. februar 2006 - 23:35 #26
Hvis du mener dem fra 22:20:36, så brugte jeg dem da jeg lavede min nye tabel, men disse data skal nemlig rettes af bestyrelsen som ved INTET om HTML og ASP og derfor var jeg jo nød til at bruge databasen...

Hvis du mener de første:

dim ind, deb, kre
dim sum_ind, sum_deb, sum_kre

ind = 0
deb = 0
kre = 0
sum_ind = 0
sum_deb = 0
sum_kre = 0

If RS.EOF Then
    Response.Write "Under opbygning..."
Else
    Do While NOT RS.EOF

        ind = rs("indskud") ' smid indholdet af "indskud"-feltet over i variablen ind
        deb = rs("debit") ' smid indholdet af "debit"-feltet over i variablen deb
        kre = "rs("kredit") ' smid indholdet af "kredit"-feltet over i variablen kre

        if ind > 0 and deb > 0 and kre > 0 then
            ' ind, deb og kre er alle større end 0, så den udskriver informationerne:

            Response.Write RS("Dag") & "/" & RS("Maaned") & "-" & RS("Aar")
            Response.Write " - " & RS("Overskrift") & " - " & RS("Navn") & ": " & ind & deb & kre

            sum_ind = sum_ind + ind
            sum_deb = sum_deb + deb
            sum_kre = sum_kre + kre
        end if


O.s.v. - så kunne jeg jo ikke få dem til at vise nogle tal. Jeg har imellemtiden fået fjernet mine 0'er (sat som nulværdi i db'en). Så det eneste jeg mangler er at få tallene lagt sammen, har prøvet med:

rs.open "select sum(Indskud) as sum from Regnskab"
if not rs.eof then
    Response.write "<tr><td height='10px'></td></tr><tr><td><b>I alt:</b></td><td></td><td></td><td><u>" & rs("sum") & "</u></td>"
End If

rs.close

rs.open "select sum(Debit) as sum from Regnskab"
if not rs.eof then
    Response.write "<td><u>" & rs("sum") & "</u></td>"
End If

rs.close

rs.open "select sum(Kredit) as sum from Regnskab"
if not rs.eof then
    Response.write "<td><u>" & rs("sum") & "</u></td></tr>"
    Response.Write "<tr><td height='10px'></td></tr><tr><td><b>Saldo:</b></td></tr></table>"
End If


Og det virker fint nok, men mangler stadig at få lagt 3 summe sammen i "saldo".
Smider du iøvrigt ikke et svar, så du kan få nogle point?
Avatar billede thesurfer Nybegynder
25. februar 2006 - 23:46 #27
Hvis du vil bruge sum i sql'en, kan du bruge:

select sum(Indskud) as sum_ind, sum(Debit) as sum_debit, sum(Kredit) as sum_kredit from Regnskab"

Summen af alle tre til sammen:
s = CLng(rs("sum_ind")) + CLng(rs("sum_deb")) + CLng(rs("sum_kre"))
response.write "Saldo: " & s

/theSurfer
Avatar billede thesurfer Nybegynder
25. februar 2006 - 23:50 #28
Hvis det ikke virker, må jeg sq lige lave en database, og selv teste det..

/theSurfer
Avatar billede kimborg Nybegynder
26. februar 2006 - 01:00 #29
select sum(Indskud) as sum_ind, sum(Debit) as sum_debit, sum(Kredit) as sum_kredit from Regnskab"

Skulle være:

select sum(Indskud) as sum_ind, sum(Debit) as sum_deb, sum(Kredit) as sum_kre from Regnskab"

Men nu virker det, dog ville det være rart, hvis saldo havde 2 decimaler, kan det lad sig gøre??

Husk lige at smide et svar..
Avatar billede thesurfer Nybegynder
26. februar 2006 - 13:53 #30
Har du husket at sætte AntalDecimaler til 2, i MS Access?
I "Feltstørrelse", prøv at eksperimentere med "Dobbelt reelt tal" og "Decimal".. men jeg tror at det bare er længden af det..
Helttal er normalt "ikke kommatal".

- Svar

/theSurfer
Avatar billede kimborg Nybegynder
26. februar 2006 - 15:30 #31
Jeg bruger Mysql og datatypen er "decimal(6,2)" og det står rigtigt nok i db'en, men udtrækket er kun med en decimal og i saldo er der ingen decimal...
Avatar billede thesurfer Nybegynder
26. februar 2006 - 16:12 #32
"decimal(6,2)" siger mig ikke noget.. Jeg gætter på, at værdien er 6 tegn lang, og med 2 decimaler..

Men jeg kan ikke lige se, hvorfor det ikke virker..

/theSurfer
Avatar billede thesurfer Nybegynder
26. februar 2006 - 16:13 #33
..normalt bruger man typen "double" til decimaltal..

/theSurfer
Avatar billede kimborg Nybegynder
26. februar 2006 - 16:33 #34
Hvis jeg bruger typen double, kan jeg ikke få den til at vise mere end 1 decimal.

Har ændret linjen.

s = CLng(rs("sum_ind")) + CLng(rs("sum_deb")) + CLng(rs("sum_kre"))

til:

s = FormatNumber(rs("sum_ind") + rs("sum_deb") - rs("sum_kre"),2)

Og nu får jeg det med 2 decimaler, men formatet er eks: 1,597.50 og det skulle jo være: 1.597,50

Nogler ideér?
Avatar billede thesurfer Nybegynder
26. februar 2006 - 18:07 #35
Ja:

s = replace(s, ",", "k")
s = replace(s, ".", ",")
s = replace(s, "k", ".")

og så udskriver du s: response.write s

:-)

/theSurfer
Avatar billede kimborg Nybegynder
26. februar 2006 - 19:22 #36
perfekt, tak.
Avatar billede thesurfer Nybegynder
26. februar 2006 - 19:27 #37
Det var så lidt :-)
Takker for points :-)

/theSurfer
Avatar billede kimborg Nybegynder
26. februar 2006 - 19:30 #38
Velbekomme, de er velfortjent.

Lukker og slukker...
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