Avatar billede Slettet bruger
07. februar 2003 - 13:04 Der er 15 kommentarer og
1 løsning

Læg tal sammen fra database

Hej Eksperter
Jeg har en almindelig Acces database som jeg gerne vil have hentet tal fra og lagt sammen. Asp koden skal lægge tallene fra forespørgslen sammen og præsentere dem i et i en tabel.
Er der nogen der kender koden til det.
Liri
Avatar billede roo104 Nybegynder
07. februar 2003 - 13:10 #1
Den nemmeste måde er nok at gøre det i selve sql kaldet, fx:
select sum(kolonnenavn) from tabenlavn;
Avatar billede roo104 Nybegynder
07. februar 2003 - 13:15 #2
Eller i ASP
SQL = "SELECT SUM(kolonnenavn) AS sum FROM tabenlavn;"
set RS = conn.execute( SQL )

Så vil RS("sum") indeholde summen af kolonnen.
Avatar billede Slettet bruger
07. februar 2003 - 13:24 #3
Jeg får denne fejl:
Resultat af din søgning


Microsoft JScript runtime error '800a138f'

Object expected

/log/soegning_antal_copy.asp, line 54

Kan du se hvor det går galt i koden:
<%@ language="JScript" %>
<!--#INCLUDE FILE = "global.asp" -->
<!--$Id: soegning.asp,v 1.3 1999/06/09 14:17:31 mily Exp $-->
<html>

<head>
<title>Søgning i Log</title>
<meta name="Microsoft Theme" content="tdctdkmayflower 011, default">
<meta name="Microsoft Border" content="none">
</head>

<body topmargin="0" leftmargin="0">
<%
var soeg_sumofsumofantalLogo = new String(Request.Querystring("sumofsumofantalLogo"))

%>

<p align="left"><small><strong>Resultat af din søgning</strong></small></p>

<p><%
var tick = /'/
var tick2 = "''"
soeg_sumofsumofantalLogo = soeg_sumofsumofantalLogo.replace(tick, tick2)

// Opbyg betingelse for søgning
var clauses = new Array()
var count = 0

if (soeg_sumofsumofantalLogo != "") {
    var test = ""
    soeg_sumofsumofantalLogo = Trim(soeg_sumofsumofantalLogo)
    sep = soeg_sumofsumofantalLogo.indexOf(" ")
    while (sep >= 0) {
        if (test != "") { test += " AND " }
        test += "[sumofsumofantalLogo] like '%" + Trim (soeg_sumofsumofantalLogo.substr (0,sep)) + "%')"
        soeg_sumofsumofantalLogo = LTrim(soeg_sumofsumofantalLogo.substr(sep))
        sep = soeg_sumofsumofantalLogo.indexOf(" ")
    }
    if (test != "") { test += " AND " }
    test += "[sumofsumofantalLogo] like '%" + soeg_sumofsumofantalLogo + "%'"
    clauses[clauses.length] = "("+test+")"

}
where_clause = ""
for (i=0; i<clauses.length; i++) {
    where_clause += (i>0 ? " AND " : "") + clauses[i]
}

// Udfør søgning og vis resultatet
//sql = "select sum(sumofsumofantalLogo) from Antal"
SQL = "SELECT SUM(sumofsumofantalLogo) AS sum FROM Antal"

if (clauses.length > 0) {
    sql += " where " + where_clause
}


// Response.Write("<tt>" + sql + "</tt>")

var res = DB.Execute(sql)
%> <% if (res.eof) { %> </p>

<p align="left"><small>Der blev ikke fundet noget emne i Loggen der matcher dine
søgekrav.</small><br>
</p>

<p><% } else { %> </p>
<div align="center"><center>

<table border="1" width="584" height="61" cellspacing="0"
style="background-color: rgb(255,255,255)" align="left" bgcolor="#C0C0C0">
  <tr>
    <th class="sogeres" width="63" height="28" align="center" valign="top" bgcolor="#C0C0C0"><p
    align="left"><small><font face="Arial">Dato</font></small></th>
    <th class="sogeres" width="128" height="28" align="left" valign="top" bgcolor="#C0C0C0"><small><font
    face="Arial">Navn</font></small></th>
  </tr>
<% while (! res.EOF ) { %>
  <tr>
    <td class="dbcell" width="63" height="25"
    style="background-color: rgb(255,255,255); color: rgb(0,0,0)" align="center" valign="top"><p
    align="left"><%=res("sumofsumofantalLogo")%> </td>
    <td class="dbcell" width="128" height="25"
    style="background-color: rgb(255,255,255); color: rgb(0,0,0)" align="left" valign="top"><p
    align="left"><%=res("sumofsumofantal") %></td>
<%            res.MoveNext()
                  }
%>
  </tr>
</table>
</center></div>


<p>&nbsp;</p>

<p><%    }
    res.Close() %> </p>

<p>&nbsp;</p>


<p>&nbsp;</p>
</body>
<% DB.Close() %>
</html>
Avatar billede roo104 Nybegynder
07. februar 2003 - 13:32 #4
ok lidt svært at overskue, men ved ikke om acces kender AS, så måske du skal bruge:
SQL = "SELECT SUM(kolonnenavn) sum FROM tabenlavn;"

sumofsumofantalLogo er en eksisterende kolonne i databasen ik ?
Avatar billede Slettet bruger
07. februar 2003 - 13:39 #5
Jo, det er det. Det virker ikke, jeg får stadig denne fejl

Microsoft JScript runtime error '800a138f'

Object expected

/log/soegning_antal.asp, line 32
Avatar billede roo104 Nybegynder
07. februar 2003 - 13:43 #6
Kan ikke huske hvordan ASP takler sql og SQL, du har det nemlig med stort det ene sted.

Hvilken linje er #32 ?
Avatar billede Slettet bruger
07. februar 2003 - 14:22 #7
Nu har jeg prøvet noget andet, fordi jeg havde fået rodet så meget rundt i den anden fil.nu får jeg denne fejl:
ADODB.Recordset error '800a0cc1'

Item cannot be found in the collection corresponding to the requested name or ordinal.

/log/test.asp, line 34

Koden ser nu sådan ud:
<% @LANGUAGE = VBScript %>
<%
Option Explicit
Response.Expires = 0

Dim objConn, objRS, strQ
Dim strConnection

Set objConn = Server.CreateObject("ADODB.Connection")
strConnection = "Data Source=Log;"
strConnection = strConnection & "User ID=sa;Password=;"
objConn.Open strConnection

Set objRS = Server.CreateObject("ADODB.Recordset")
Set objRS.ActiveConnection = objConn
'strQ = "SELECT * FROM AntalFore"
strQ = "SELECT SUM(AntalLogo) AS sum FROM AntalFore;"


objRS.Open strQ

%>
<html>

<head>
<title></title>
</head>

<body>

<p><br>
<%
While Not objRS.EOF
  Response.Write objRS("AntalLogo") & ": " & objRS("Antal")
 
  objRS.MoveNext
Wend

objRS.close
objConn.close
Set objRS = Nothing
Set objConn = Nothing
%></p>
</body>
</html>
Avatar billede roo104 Nybegynder
07. februar 2003 - 14:25 #8
objRS("AntalLogo") og objRS("AntalLogo") er jo ikke blevet oprettet.
du har kun objRS("sum")
Avatar billede Slettet bruger
07. februar 2003 - 14:27 #9
Kan du uddybe det lidt?
Avatar billede roo104 Nybegynder
07. februar 2003 - 14:29 #10
objRS("sum") indeholder kun 1 tal, altså summen af logo'er kunne jeg forestille mig, hvis du vil ha objRS("AntalLogo") og objRS("Antal") skal du lave endnu en select sætning.

select AntalLogo, Antal from AntalFore;
Avatar billede Slettet bruger
07. februar 2003 - 14:33 #11
Jeg indrømmer at jeg er nybegynder, og jeg kan ikke få det til at virke, så jeg opgiver, men ellers tak for hjælpen
Avatar billede roo104 Nybegynder
07. februar 2003 - 14:38 #12
ok..
hvis du har en tabel kaldet AntalFore
id | AntalLogo | Antal
----------------------
1  |    2    |  1
2  |    3    |  6
3  |    9    |  3
----------------------

Hvis du ønsker at lægge alle tal i kolonnen AntalLogo, så kan du bruge denne sætning:
SELECT SUM(AntalLogo) AS sum FROM AntalFore;
Den sætning vil så give dig tallet 14, som kommer til at ligge i objRS("sum")

Håber du kan forstå det lidt bedre nu
Avatar billede Slettet bruger
07. februar 2003 - 14:48 #13
Jeg har jo ikke noget i koden der hedder objRS("sum")
Avatar billede roo104 Nybegynder
07. februar 2003 - 14:53 #14
nej, men hvis du vil f.eks vil udskrive summen, kan du:
While Not objRS.EOF
Response.Write objRS("sum")
 
  objRS.MoveNext
Wend

objRS.close
objConn.close
Set objRS = Nothing
Set objConn = Nothing

Jeg ved ikke helt om du bare kan skrive, Response.Write objRS("sum") uden at ha det i en løkke.

AS sum i sql sætningen er et alias for SUM(AntalLogo)
Avatar billede Slettet bruger
07. februar 2003 - 14:59 #15
Yes,nu virker det. Tak for din tålmodighed.
Hilsen Linda
Avatar billede roo104 Nybegynder
07. februar 2003 - 15:02 #16
Det var så lidt
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