webForumDet fria alternativet

Två räknefrågor

ASP

16 svar · 516 visningar · startad av magnusfeldth

Medlem sedan jan. 20034 480 inlägg
Frågan#1

Jag har två kolumner i en tabell, vi kan kalla dem "NumberOfVotes" och "Votes". Hur skall jag skriva för att få ut kvoten mellan dem? Går det med

<% = recset("Votes") / ("NumberOfVotes") %>

??

Fråga nummer två: Om jag vill sortera ut de top 5 med högst kvot, hur skriver jag då?

Medlem sedan mars 20025 907 inlägg
#2
<% = recset("Votes") / recset("NumberOfVotes") %>
Medlem sedan jan. 20034 480 inlägg
#3

tjohoo jag hade rätt! vad glad jag blir!

och på fråga nummer två svarar ni?

Medlem sedan mars 20025 907 inlägg
#4

Det får du lösa i sql-satsen.

select top 5 Votes,NumberOfVotes,(Votes+0.0)/(NumberOfVotes + 0.0) as medel from tabell order by medel desc

Behöver jag säga att jag hittade svaret genom att söka bland LarsG's tidigare inlägg

Medlem sedan jan. 20034 480 inlägg
#5

På den första frågan, hur skriver jag för att bara visa två gällande siffror? ex 5,0 eller 4,8??

Medlem sedan mars 20015 287 inlägg
#6

magnusfeldth skrev:

tjohoo jag hade rätt! vad glad jag blir!
...

Åfan! ;)

Medlem sedan mars 20025 907 inlägg
#7
<% = round(recset("Votes") / recset("NumberOfVotes"),1) %>
Medlem sedan jan. 20034 480 inlägg
#8

problem med satsen:

Set Connect = Server.CreateObject("ADODB.Connection") 
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" &Server.MapPath("addemalmbergadmin/tubsockan.mdb")

SQL2 = "select top 5 rekom,rekomvotes,(rekom+0.0)/(rekomvotes + 0.0) as medel from sockrates order by medel desc" 
set RecSet = connect.execute(SQL2) <------- rad 38

felmess:

Microsoft OLE DB Provider for ODBC Drivers error '80040e10' 
[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1. 

/rekommenderas.asp, line 38
Medlem sedan juni 200032 967 inlägg
#9

Om man använder Access kan man inte sortera genom att ange namnet på sitt i frågan skapade fält, utan måste ange ordningsnumret, dvs 3 istället.

mvh

Medlem sedan jan. 20032 285 inlägg
#10
SQL2 = "select top 5 rekom,rekomvotes,(rekom+0.0)/(rekomvotes + 0.0) as medel from sockrates order by 3 desc"

/red Tusan, @nders! ;)

Medlem sedan jan. 20034 480 inlägg
#11

still trouble:

ADODB.Recordset error '800a0cc1' 
Item cannot be found in the collection corresponding to the requested name or ordinal. 

/rekommenderas.asp, line 41

den verkar inte ta emot mina andra kolumner ex rubrik, kategori, id och ingress...?

Medlem sedan juni 200032 967 inlägg
#12

magnusfeldth skrev:

den verkar inte ta emot mina andra kolumner ex rubrik, kategori, id och ingress...?

Nej, du hämtar ju bara rekom, rekomvotes och medel?

Medlem sedan jan. 20034 480 inlägg
#13

ska jag skriva:

SQL2 = "select top 5 id, rubrik, kategori, id, ingress, rekom,rekomvotes,(rekom+0.0)/(rekomvotes + 0.0) as medel from sockrates order by 3 desc"

för att få med dem? eller gör den att även dessa räknas in i "medel"?

Medlem sedan juni 200032 967 inlägg
#14

Vadå räknas in i medel?

Du kan ju alltid testa frågan istället för att fråga oss om den fungerar.

Du bör dock inte ha med id två gånger i select-listan.

Medlem sedan jan. 20034 480 inlägg
#15

"Du kan ju alltid testa frågan istället för att fråga oss om den fungerar. "
- jo, men jag är pendlande student. Hemma i föräldrahemmet har jag bara bredband på en dator och av någon anledning gillar inte adsl-modemet min lap-top som jag jobbar på. Sålunda är jag fast vid uppringt internet vid webredigering och måste ringa upp, publicera websiten, kolla, stänga ner, fråga vad jag gjort för fel eftersom jag har xp home och inte någon webserver på datorn... så därför är jag lite besvärlig och frågar innan jag gör fel...
:-)

Medlem sedan jan. 20034 480 inlägg
#16

nånting måste vara fel, den visar 6 poster och inte 5 som den ska, samt att ordningen inte är korrekt...

<%
Dim Color
      Color = ""
 Set Connect = Server.CreateObject("ADODB.Connection") 
Connect.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" &Server.MapPath("addemalmbergadmin/tubsockan.mdb")

SQL2 = "select top 5 id, rubrik, kategori, ingress, rekom,rekomvotes,(rekom+0.0)/(rekomvotes+0.0) as medel from sockrates order by 3" 
set RecSet = connect.execute(SQL2)
Do Until RecSet.EOF

If RecSet ("Kategori") = 1 Then
Color = "#9FA989"
ElseIf RecSet ("Kategori") = 2 Then
Color = "#9FA989"
ElseIf RecSet ("Kategori") = 3 Then
Color = "#788068"
End If 
 %>

              <tr>
                <td width="8" valign="top">
                <img border="0" src="images/1x1transparant.gif" width="8" height="1"></td>
                <td width="5" valign="top" bgcolor="<% =color %>">
                <img border="0" src="images/5x5transparant.gif"></td>
                <td width="1" valign="top">
                <img border="0" src="images/1x1transparant.gif"></td>
                <td width="320" valign="top"><h4><b><a href="../sidval.asp?id=<% = RecSet("id") %>"><% = RecSet("Rubrik") %></a></b></h4>
                <h2><% = RecSet("Ingress") %></h2>
</td>
                <td width="36" valign="top">
                <h4 align="center"><b><% = round(recset("rekom") / recset("rekomvotes"),1) %></b></h4>
                </td>
              </tr>
              <tr>
                <td width="370" colspan="5" valign="top">
                <img border="0" src="images/1x1transparant.gif"></td>
              </tr><%
Recset.MoveNext
Loop
Recset.Close
Connect.Close

Set Recset = Nothing
Set Connect = Nothing
%>

se resultatet live: http://www.vitatubsockor.nu/rekommenderas.asp

Medlem sedan jan. 20034 480 inlägg
#17

kom på det själv, ändrade "3" till 5...

256 ms totalt · 4 externa anrop · v20260731065814-full.86ec41c2
122 ms — deklarationer (db)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)