nu vet jag inte men det känns som du behöver paranterser:
<% SET PB = Conn.Execute("SELECT (COUNT(AntalBla) / COUNT(antal) * 100) AS PBla WHERE PlayerId= '"& strpID &"'") %>
annars kan du ju göra det när du presentera innehållet.
26 svar · 2 990 visningar · startad av climber
Hej,
Försöker förstå mig på hur jag ska kunna räkna ut procent.
Följande är givet:
Denna kod räknar ut hur många tävlingar en spelare spelat
<% Set AntalV=Conn.Execute("Select Count(*) As antal From tbl_res Where PlayerId= '"& strpID &"' ") %>
och denna kod räknar ut hur många gånger spelaren har slutat med ett resultat mellan 18 och 29 poäng
<% Set AntalB = Conn.Execute("SELECT COUNT(TOTAL) AS AntalBla FROM tbl_res WHERE (TOTAL) BETWEEN 18 AND 29 AND PlayerId= '"& strpID &"'") %>
Det jag nu vill räkna ut är hur många procent spelaren hamnat i det poängintervallet.
Försökte med följande kod
<% SET PB = Conn.Execute("SELECT COUNT(AntalBla) / COUNT(antal) * 100.0 AS PBla WHERE PlayerId= '"& strpID &"'") %>
men det ger bara följande felmeddelande:
Microsoft JET Database Engine error '80040e14'
The SELECT statement includes a reserved word or an argument name that is misspelled or missing, or the punctuation is incorrect.
Vad gör jag för fel? (förmodligen något generalfel men jag är ca 2 veckor gammal i ASP djungeln)
All feedback tas gladeligen emot :)
nu vet jag inte men det känns som du behöver paranterser:
<% SET PB = Conn.Execute("SELECT (COUNT(AntalBla) / COUNT(antal) * 100) AS PBla WHERE PlayerId= '"& strpID &"'") %>
annars kan du ju göra det när du presentera innehållet.
du sätter AntalBla och Antal till alias och använder dom när du presentera:
<% SET PB = Conn.Execute("SELECT COUNT(AntalBla) as X, Count(antal) as Y WHERE PlayerId= '"& strpID &"'") %>
och när du loopar ut innehållet så använder du ASP för beräkningen:
<%= (PB("x") / PB("Y"))* 100 %>
provade det du skrev ovan men fick fortfarande felmeddelandet:
Microsoft JET Database Engine error '80040e14'
The SELECT statement includes a reserved word or an argument name that is misspelled or missing, or the punctuation is incorrect.
Jag fattar inte vad det är jag missar.
Du använder reserverade ord i din SQL fråga använd [] runt de fältnamn du har angett som är ett resarverat ord för access
Vad är ett reserverat ord för Access då? Är det namnen på tabellerna & kolumnerena?
Eller finns det någon lista på ord som är reserverade?
<% SET PB = Conn.Execute("SELECT (COUNT(AntalBla) / COUNT(antal) * 100) AS PBla WHERE PlayerId= '"& strpID &"'") %>
<% SET PB = Conn.Execute("SELECT (COUNT(AntalBla) / COUNT(antal) * 100) AS PBla [B]FROM [tbl_res][/B] WHERE PlayerId= '"& strpID &"'") %>
ah, inte en form med i sql frågan... men ordet som är reserverad är förmodligen antal och verkligen inte tbl_res ;)
Nej, det tror jag inte heller!
Men låt oss vara tydliga, för omväxlings skull!
<% SET PB = Conn.Execute("SELECT (COUNT([AntalBla]) / COUNT([antal]) * 100) AS PBla FROM [tbl_res] WHERE PlayerId= '"& strpID &"'") %>
Hej,
jag löste det på följande sätt:
<%
Set percentBla = Conn.Execute("SELECT COUNT(TOTAL) AS PBX FROM tbl_res WHERE (TOTAL) BETWEEN 18 AND 29 AND PlayerId= '"& strpID &"'")
%>
<%
Set totVarv = Conn.Execute("SELECT COUNT(*) As PBY From tbl_res Where PlayerId= '"& strpID &"' ")
%>
<%= ROUND(percentBla("PBX") / totVarv("PBY"),3)* 100 %>
La detta i en separat fil. Sedan så includar jag den filen i sidan den ska visas på.
Hmm går det kanske att ha båda Set raderna inom samma (<%) och (%>)?
ja, du kan ha allt inne i en och samma <% %> (inte <%=%>, men du kan köra response.write på den raden istället) men är detta verkligen det du vill göra? Att räkna antal rader eller är det en summa du är ute efter? Hur ser tabellerna ut och har du några exempel värden och datan du vill presenterad?
Det jag vill är att få ut hur många procent en spelare nått resultatet 18-29 av totala antalet minigolf rundor.
Detta får jag fram genom att först räkna ut (percentBla) hur många gånger spelaren nått resultat mellan 18 och 29.
Sedan så räknar jag ut hur många rundor (totVarv) spelaren spelat.
Därefter kommer uträkningen.
Hoppas det blev lite lättare att förstå vad jag ville uppnå med denna förklaring :p
Ska du ha samma sak på många sidor?
Då kan du inkludera koden från en annan sida. Annars, lägg bara koden på sidan där den ska visas. Det är enklast för dig i dag och i framtiden.
<%
Set percentBla = Conn.Execute("SELECT COUNT(TOTAL) AS PBX FROM tbl_res "_
& " WHERE (TOTAL) BETWEEN 18 AND 29 AND PlayerId= '"& strpID &"'")
Set totVarv = Conn.Execute("SELECT COUNT(*) As PBY From tbl_res " _
& " Where PlayerId= '"& strpID &"' ")
response.write ROUND(percentBla("PBX") / totVarv("PBY"),3)* 100
%>
***
Sen kan du studera skillnaden mellan INCLUDE FILE och INCLUDE VIRTUAL:
INCLUDE FILE="procent.asp"
INCLUDE VIRTUAL="/includes/procent.asp"
FILE = samma katalog / struktur.
VIRTUAL = från rooten, kan flytta runt i hierarkin hur som helst.
En sidfot är ett exempel på en fil som är vettig att ha samma på alla sidor på en sajt.
INCLUDE VIRTUAL="footer.asp"
Tack för tipset på INCLUDE VIRTUAL det hade jag ingen aning om att det fanns ens :)
Kom på en följdfråga som jag inte riktigt hittat något svar på,
Jag har 18 fält i databasen som heter AMT1 AMT2 osv till AMT18.
Om jag nu vill räkna ut hur många gånger spelaren har klarat banorna (AMT) på ett slag och spara detta i ett alias för att sedan kunna räkna ut hur många procent ettor spelaren har haft på antalet banor/hål han spelat, hur skriver jag då koden för detta?
Lyckas inte hitta något som ens liknar vad jag vill göra här :q
Alla tankar, Idéer ock kodexempel mottages med varm hand :)
Mitt tips är att göra om din databas struktur där du har:
playerId courseId score
och för varje barna så skapa du en ny post med poäng... på så sätt isollera du dig inte till 18 (gissa att detta kan ha med golf att göra?) att kolla fält för fält är långt ifrån optimalt.
Helt riktigt att det har med golf att göra, mer exakt bangolf.
Det jag jobbar på är klubbens statistiksida där dom skriver in resultat bana för bana.
Detta gör dom för att kunna list top 10 per bana (efter snitt) så därför är det nödvändigt att ha en post för varje bana.
Ja, men du kan ha banan som en tabell med info, du ha en tabell för spelare, sen har du en tabell som kopplar spelare och banan med antal poäng på just den banan. Så hade jag gjort för att få en struktur som är lätt att bygga vidare på.
Kolla hur sql Join frågor så kan du få en idé vad jag menar