29. januar 2006 - 17:23
Der er
20 kommentarer og 1 løsning
læg tal sammen
Hejsa. Jeg vil gerne ha lavet et script som ligger tal sammen og viser procent!.. Jeg har en database som ser således ud: DB.mdb /type/ [Vmax][Maxpower][Bilgalleri][sogemaskiner] 1 1 1 1 hver gang nogen fx vælger vmax bliver der tilføjet et 1 tal! Jeg skal så ha lavet et script som ligger alle 1'erne sammen i Vmax kategorien, alle i maxpower kategorien osv. Det skal også være en funktion der regner ud af hvor mange procent Vmax udgør iforhold til de andre og omvendt.. Håber i forstår På forhånd tak
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
29. januar 2006 - 20:12
#1
Noget i denne stil? sql = "SELECT Sum(Vmax) AS VmaxSum, Sum(Maxpower) AS MaxpowerSum, Sum(Bilgalleri) AS BilgalleriSum, Sum(sogemaskiner) AS sogemaskinerSum FROM [type]" Set rs = Conn.Execute(sql) VmaxSum = CInt(rs("VmaxSum")) MaxpowerSum = CInt(rs("MaxpowerSum")) BilgalleriSum = CInt(rs("BilgalleriSum")) sogemaskinerSum = CInt(rs("sogemaskinerSum")) totalSum = VmaxSum + MaxpowerSum + BilgalleriSum + sogemaskinerSum Response.Write "Vmax: Antal:" & VmaxSum & ", Procent: " & (VmaxSum * 100.0/totalSum) & "%<br>" Response.Write "Maxpower: Antal:" & MaxpowerSum & ", Procent: " & (MaxpowerSum * 100.0/totalSum) & "%<br>" Response.Write "Bilgalleri: Antal:" & BilgalleriSum & ", Procent: " & (BilgalleriSum * 100.0/totalSum) & "%<br>" Response.Write "sogemaskinerSum: Antal:" & sogemaskinerSum & ", Procent: " & (sogemaskinerSum * 100.0/totalSum) & "%"
29. januar 2006 - 20:15
#2
nielle > tror du har fat i noget af det rigtige.. jeg er ikke en haj til ASP.. så måske du ville gøre så koden var lige til at smide op på serveren og køre ?
29. januar 2006 - 20:37
#3
Uden at kende mere til dit system, og hvordan det er sat op, så er det lidt af et skud i tåen... Men prøv da dette: <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%> <% ConnStr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("DB.mdb") Dim Conn Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open ConnStr sql = "SELECT Sum(Vmax) AS VmaxSum, Sum(Maxpower) AS MaxpowerSum, Sum(Bilgalleri) AS BilgalleriSum, Sum(sogemaskiner) AS sogemaskinerSum FROM [type]" Set rs = Conn.Execute(sql) VmaxSum = CInt(rs("VmaxSum")) MaxpowerSum = CInt(rs("MaxpowerSum")) BilgalleriSum = CInt(rs("BilgalleriSum")) sogemaskinerSum = CInt(rs("sogemaskinerSum")) totalSum = VmaxSum + MaxpowerSum + BilgalleriSum + sogemaskinerSum Response.Write "Vmax: Antal:" & VmaxSum & ", Procent: " & (VmaxSum * 100.0/totalSum) & "%<br>" Response.Write "Maxpower: Antal:" & MaxpowerSum & ", Procent: " & (MaxpowerSum * 100.0/totalSum) & "%<br>" Response.Write "Bilgalleri: Antal:" & BilgalleriSum & ", Procent: " & (BilgalleriSum * 100.0/totalSum) & "%<br>" Response.Write "sogemaskinerSum: Antal:" & sogemaskinerSum & ", Procent: " & (sogemaskinerSum * 100.0/totalSum) & "%" rs.Close Set rs = Nothing Conn.Close Set Conn = Nothing %>
29. januar 2006 - 20:57
#4
Hejsa. jeg får en fejl? Microsoft OLE DB Provider for ODBC Drivers error '80040e07' [Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression. /dtj/stat.asp, line 10 Jeg har været inde og tilføjet 2 mere.. <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%> <% ConnStr = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("db.mdb") Dim Conn Set Conn = Server.CreateObject("ADODB.Connection") Conn.Open ConnStr sql = "SELECT Sum(Vmax) AS VmaxSum, Sum(MAXpower) AS MAXpowerSum, Sum(Bilgalleri) AS BilgalleriSum, Sum(Bilbasen) AS BilbasenSum, Sum(Autoatlas) AS AutoatlasSum, Sum(sogemaskine) AS sogemaskineSum FROM [type]" Set rs = Conn.Execute(sql) VmaxSum = CInt(rs("VmaxSum")) MAXpowerSum = CInt(rs("MAXpowerSum")) BilgalleriSum = CInt(rs("BilgalleriSum")) BilbasenSum = CInt(rs("BilbasenSum")) AutoatlasSum = CInt(rs("AutoatlasSum")) sogemaskineSum = CInt(rs("sogemaskineSum")) totalSum = VmaxSum + MAXpowerSum + BilgalleriSum + BilbasenSum + AutoatlasSum + sogemaskineSum Response.Write "Vmax: Antal:" & VmaxSum & ", Procent: " & (VmaxSum * 100.0/totalSum) & "%<br>" Response.Write "MAXpower: Antal:" & MAXpowerSum & ", Procent: " & (MAXpowerSum * 100.0/totalSum) & "%<br>" Response.Write "Bilgalleri: Antal:" & BilgalleriSum & ", Procent: " & (BilgalleriSum * 100.0/totalSum) & "%<br>" Response.Write "Bilbasen: Antal:" & BilbasenSum & ", Procent: " & (BilbasenSum * 100.0/totalSum) & "%<br>" Response.Write "Autoatlas: Antal:" & AutoatlasSum & ", Procent: " & (AutoatlasSum * 100.0/totalSum) & "%<br>" Response.Write "sogemaskineSum: Antal:" & sogemaskineSum & ", Procent: " & (sogemaskineSum * 100.0/totalSum) & "%" rs.Close Set rs = Nothing Conn.Close Set Conn = Nothing %> Hvis du har brug for databasen må du sige til..
29. januar 2006 - 21:06
#6
Hmm, jeg kan desværre ikke åbne din database... Spørgsmål: 1) Hvad hedder tabellen som dine data ligger i? 2) Hvilken datatype har du brugt for dine felter Vmax, MAXpower, Bilgalleri, osv?
29. januar 2006 - 21:15
#7
Jeg skriver det lige helt præcis :-) Database navn : db.mdb type [Id][MAXpower][Vmax][Bilgalleri][Bilbasen][Autoatlas][Sogemaskine] Sådan ser databasen ud, mere du vil vide ?
29. januar 2006 - 21:22
#8
1) Et "type" navnet på tabellen? 2) Er f.eks. feltet MAXpower et talfelt, eller et tekstfelt, eller noget helt andet?
29. januar 2006 - 22:00
#9
hmm jeg har ikke defineret nogen felt type for nogen af dem? skal jeg sætte dem alle til talfelt eller ?
29. januar 2006 - 22:06
#10
Hvis du ikke selv har defineret nogen type på felterne så er de tekst-felter - det er nemlig den automatiske type. Det stemmer også overens med fejlbeskeden - man kan nemlig ikke tage Sum() på en tekst. Ja, det bedste ville være hvis du ændre dem fra at være af typen "Tekst" til "Tal". Men tag lige en sikkerhedskopi af databasen før at du gør det.
30. januar 2006 - 16:31
#11
Hejsa. NU har jeg ændret til tal! og nu virker det.. nu har jeg bare det problem at den kode jeg bruger til at "skrive" med ikke virker her er koden : <% '---- CursorTypeEnum Values ---- Const adOpenForwardOnly = 0 Const adOpenKeyser = 1 Const adOpenDynamic = 2 Const adOpenStatic = 3 '---- LockTypeEnum Values ---- Const adLockReadOnly = 1 Const adLockPessimistic = 2 Const adLockOptimistic = 3 Const adLockBatchOptimistic = 4 response.buffer = true con= "Provider=Microsoft.Jet.OleDB.4.0; Data Source=" & Server.MapPath("db.mdb") if request.querystring = "write" then sql = "SELECT * FROM type WHERE (id=0) " set rs = server.createobject ("adodb.recordset") rs.locktype = adlockoptimistic rs.cursortype = adopendynamic rs.open sql, con rs.addnew rs ("Vmax") = trim(request.form("formVmax")) rs ("MAXpower") = trim(request.form("formMAXpower")) rs ("Bilgalleri") = trim(request.form("formBilgalleri")) rs ("Autoatlas") = trim(request.form("formAutoatlas")) rs ("Sogemaskine") = trim(request.form("formSogemaskine")) rs ("Andet") = trim(request.form("formAndet")) rs.update rs.close set rs = nothing %> Jeg får denne fejl: Provider error '80020005' Type mismatch. /dtj/popup.asp, line 27 det svare til linien med rs ("MAXpower") = trim(request.form("formMAXpower")) Men den virkede fint før så tror ikke den fejler nok.. På forhånd tak
30. januar 2006 - 16:36
#12
Ret alle dine strenge til heltal før at du indsætter dem. Det gør du f.eks. ved at ændre: rs ("Vmax") = trim(request.form("formVmax")) - til: rs("Vmax") = CInt(trim(request.form("formVmax"))) - og på samme måde for dens "søskene".
30. januar 2006 - 16:43
#13
Nej, det er nok desværre ikke gjordt med det. Problemet er at nu da felterne er talfelre så kan man ikke indsætte den tomme streng sådan som du hidtil har gjort det. I stedet skal du indsætte 0 (eller helt lade være med at indsætte noget). For at indsætte 0, skal sådan en linje som: rs ("Vmax") = trim(request.form("formVmax")) - ændres til: Vmax = Trim(Request.Form("formVmax")) If Vmax = "" Then Vmax = 0 rs("Vmax") = Vmax - og tilsvarende for de andre.
30. januar 2006 - 16:49
#14
okay jeg prøver lige lidt senere.. og lige en sidste lille ting.. når den viser procent viser den alt for mange decimaler med ? bare den viser fx 11,2% vil det være fint.. ikke 11,6666667% ;-) PÅ forhånd tak
30. januar 2006 - 16:55
#15
Funktionen Round() skulle kunne klare den: Response.Write "Vmax: Antal:" & VmaxSum & ", Procent: " & Round(VmaxSum * 100.0/totalSum, 1) & "%<br>" 1-tallet angiver at der rundes af til 1 decimal.
06. februar 2006 - 18:20
#16
Har du fået afprøvet det?
20. februar 2006 - 18:59
#17
??
10. juni 2006 - 16:35
#18
virker.. smider i ikke lige et svar så i kan få point??
10. juni 2006 - 19:56
#19
Svar :^)
19. juni 2006 - 17:57
#20
Det er vist rent taktisk kun mig som har kommenteret på denne her ;^)
19. juni 2006 - 19:46
#21
Tak for point :^)
Kurser inden for grundlæggende programmering