Avatar billede bigtrouble Nybegynder
09. december 2002 - 11:48 Der er 23 kommentarer og
1 løsning

lægge tal sammen fra DB

Jeg skal lægge felter fra min db sammen men hvordan?

Hvis en fundet kunde har feks. 3 poster i db'en hvor feltet "pris" indeholder prisen, hvordan lægger jeg så felterne sammen ?
Avatar billede hyperactive Nybegynder
09. december 2002 - 11:50 #1
Må jeg se noget kode???

Det må være noget med....
total = 0
While Not RS.EOF
total = total + RS("pris")
RS.MoveNext
Wend
Avatar billede mortenkjeldberg Nybegynder
09. december 2002 - 11:52 #2
'Du vælger kunden på følgende måde.
set objRS = objConn.Execute("SELECT navn, pris FROM kundetabel WHERE <en eller anden betingelse>")

totalPris = 0
While Not objRS.EOf
  totalPris = totalPris + objRS("pris")
  objRS.MoveNext
Wend

Response.Write totalPris

Det skulle kunne gøre det. Evt. skal der CInt omkring objRS("pris")

/Morten
Avatar billede bigtrouble Nybegynder
09. december 2002 - 11:58 #3
Jeg får en " fejl med dette ?

set objRS = objConn.Execute("SELECT reparb FROM usgdatabase where forhandlernavn='"&request.form("ret"))&"'"
Avatar billede dgivoni Nybegynder
09. december 2002 - 12:00 #4
Du kan ogsaa goere det i selve sql-kaldet...
"Select sum(pris) as prisTotal from tabel" - giver dig f.eks. den samlede pris af alle felterne. Men det er lidt nemmere at hjaelpe, hvis du lige skriver hvordan din db er struktureret.
Avatar billede dgivoni Nybegynder
09. december 2002 - 12:02 #5
bigtrouble du skal lige have flyttet den sidste parentes:
set objRS = objConn.Execute("SELECT reparb FROM usgdatabase where forhandlernavn='"&request.form("ret")&"'")
Avatar billede bigtrouble Nybegynder
09. december 2002 - 12:03 #6
Nej det giver samme fejl .
Avatar billede dgivoni Nybegynder
09. december 2002 - 12:03 #7
men proev denne sql i stedet for:
set objRS = objConn.Execute("SELECT sum(reparb) as total FROM usgdatabase where forhandlernavn='"&request.form("ret")&"'")

den samlede pris har du saa i: objRS("total")
Avatar billede dgivoni Nybegynder
09. december 2002 - 12:04 #8
hvad er fejlmeddelelsen helt praecist?
Avatar billede bigtrouble Nybegynder
09. december 2002 - 12:07 #9
Her er koden med fejl :)

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=c:\websider\service-info.dk\db\usgdatabase.mdb"
Conn.Open DSN
sql="select * from usgdatabase where forhandlernavn='"&request.form("ret")&"'"
set record=conn.execute(sql)
strSQLCount = "SELECT Count(password) FROM usgdatabase where forhandlernavn='"&request.form("ret")&"'"
Set rsCount = Conn.Execute(strSQLCount)
set objRS = objConn.Execute("SELECT reparb FROM usgdatabase where forhandlernavn='"&request.form("ret")&"'")
totalPris = 0
While Not objRS.EOf
  totalPris = totalPris + objRS("pris")
  objRS.MoveNext
Wend
%>

Forhandlernavn hentes og antal poster genereres (sålangt virker det)
Herefter skal jeg hente indholdet af "reparb" fra alle poster og lægge dem sammen, her opstår problemet.
Avatar billede dgivoni Nybegynder
09. december 2002 - 12:08 #10
men faar du ikke en praecis fejlbeskrivelse, noget med hvilken type fejl og hvilken linje? det goer det lidt nemmere at debugge...
Avatar billede bigtrouble Nybegynder
09. december 2002 - 12:09 #11
Begge tilfælde giver denne fejl:

Microsoft VBScript runtime error '800a01a8'

Object required: ''

line 144

Hvor linie 144 er:
set objRS = objConn.Execute("SELECT sum(reparb) as total FROM usgdatabase where forhandlernavn='"&request.form("ret")&"'")
Avatar billede dgivoni Nybegynder
09. december 2002 - 12:10 #12
den loekke du har til sidst skal du have tilpasset til din egen database:
While Not objRS.EOf
  totalPris = totalPris + objRS("reparb")
  objRS.MoveNext
Wend
Avatar billede bigtrouble Nybegynder
09. december 2002 - 12:12 #13
Denne linie bruger jeg ikke nu, her er koden

Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; "
DSN = DSN & "DBQ=c:\websider\service-info.dk\db\usgdatabase.mdb"
Conn.Open DSN
sql="select * from usgdatabase where forhandlernavn='"&request.form("ret")&"'"
set record=conn.execute(sql)
strSQLCount = "SELECT Count(password) FROM usgdatabase where forhandlernavn='"&request.form("ret")&"'"
Set rsCount = Conn.Execute(strSQLCount)
set objRS = objConn.Execute("SELECT sum(reparb) as total FROM usgdatabase where forhandlernavn='"&request.form("ret")&"'")


Linie 144 er denne :
set objRS = objConn.Execute("SELECT sum(reparb) as total FROM usgdatabase where forhandlernavn='"&request.form("ret")&"'")


Hvor der er en fejl
Avatar billede dgivoni Nybegynder
09. december 2002 - 12:13 #14
det lyder som om der ikke er noget i det felt du henter "ret" fra? Har du proevet med at skrive vaerdien ud for lige at tjekke?
Avatar billede dgivoni Nybegynder
09. december 2002 - 12:15 #15
Hvis du saetter en Response.write("vaerdi: " & Request.form("ret")) ind i foer den linje hvor fejlen opstaar og saa udkommenterer fejllinjen med // foran...
Avatar billede bigtrouble Nybegynder
09. december 2002 - 12:15 #16
ahh måske er fejlen at nogle felter i 'reparb' indeholder bogstaver.
før i tiden brugte jeg betegnelsen Kr. foran beløbet men gik væk fra det da det gav probleme.

Jeg prøver lige med en kunde der kun består at tal.
Avatar billede bigtrouble Nybegynder
09. december 2002 - 12:17 #17
næh, nu bruger jeg en kunde der kun har en post, men stadig samme fejl.
Avatar billede dgivoni Nybegynder
09. december 2002 - 12:18 #18
naa, du skal lige have skivet objConn ud med Conn!
Avatar billede dgivoni Nybegynder
09. december 2002 - 12:19 #19
skivet = skiftet
Avatar billede bigtrouble Nybegynder
09. december 2002 - 12:21 #20
jeps, så virker det (hvad var forskellen ?)

Er det muligt at ignorere bogstaver i feltet eller er jeg nød til at ændre det manuelt ?
Avatar billede dgivoni Nybegynder
09. december 2002 - 12:23 #21
forskellen var at du definerer din forbindelse til databasen i Conn-variablen og hvis du bagefter bruger objConn opfatter ASP-fortolkeren det som en ny variabel (et objekt) som den ikke kender noget til og derfor heller ikke kan bruge til at skabe en forbindelse til databasen.

Jeg tror du vil faa en fejl, hvis du har bogstaver i feltet, men du kan jo forsoege :-)
Avatar billede bigtrouble Nybegynder
09. december 2002 - 12:24 #22
PS: Teksten er ALTID KR.
Avatar billede bigtrouble Nybegynder
09. december 2002 - 12:25 #23
Det må være muligt at ignorere teksten KR. men her har du point for dit svar :)
Avatar billede burningice Nybegynder
09. december 2002 - 16:01 #24
bigtrouble>> du kan sørge for kun at hente det antal karakterer fra venstre, som passer med antallet af alle karaktererne minus tre.

noget i retningen af Sum(Left(reparb),Len(reparb)-3))
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