![]() |
|
|
|||||||
| ASP Diskussioner om Active Server Pages, med relaterade scriptspråk (klassisk asp). |
![]() |
|
|
Trådverktyg | Visningsalternativ |
|
|
#1 |
|
Medlem
Registrerad: 2012-08-07
Inlägg: 16
Lösningar: 0 |
Räkna procent ACCESS ASP
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 Kod:
<% Set AntalV=Conn.Execute("Select Count(*) As antal From tbl_res Where PlayerId= '"& strpID &"' ") %>
Kod:
<% Set AntalB = Conn.Execute("SELECT COUNT(TOTAL) AS AntalBla FROM tbl_res WHERE (TOTAL) BETWEEN 18 AND 29 AND PlayerId= '"& strpID &"'") %>
Försökte med följande kod Kod:
<% SET PB = Conn.Execute("SELECT COUNT(AntalBla) / COUNT(antal) * 100.0 AS PBla WHERE PlayerId= '"& strpID &"'") %>
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
|
|
|
|
|
|
#2 |
|
Forumvärd
Registrerad: 2001-06-14
Ort: Helsingborg
Inlägg: 8 495
Lösningar: 535 |
nu vet jag inte men det känns som du behöver paranterser:
Kod:
<% SET PB = Conn.Execute("SELECT (COUNT(AntalBla) / COUNT(antal) * 100) AS PBla WHERE PlayerId= '"& strpID &"'") %>
__________________
"det går inte att lära en gammal norrlänning byta namn på irc" - gammalt kinesiskt uttryck |
|
|
|
|
|
#3 |
|
Medlem
Registrerad: 2012-08-07
Inlägg: 16
Lösningar: 0 |
Hej voigtann1,
hur menar du att jag kan göra det när jag presenterar innehållet? |
|
|
|
|
|
#4 |
|
Forumvärd
Registrerad: 2001-06-14
Ort: Helsingborg
Inlägg: 8 495
Lösningar: 535 |
du sätter AntalBla och Antal till alias och använder dom när du presentera:
Kod:
<% SET PB = Conn.Execute("SELECT COUNT(AntalBla) as X, Count(antal) as Y WHERE PlayerId= '"& strpID &"'") %>
Kod:
<%= (PB("x") / PB("Y"))* 100 %>
__________________
"det går inte att lära en gammal norrlänning byta namn på irc" - gammalt kinesiskt uttryck |
|
|
|
|
|
#5 |
|
Medlem
Registrerad: 2012-08-07
Inlägg: 16
Lösningar: 0 |
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. |
|
|
|
|
|
#6 |
|
Forumvärd
Registrerad: 2001-06-14
Ort: Helsingborg
Inlägg: 8 495
Lösningar: 535 |
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
__________________
"det går inte att lära en gammal norrlänning byta namn på irc" - gammalt kinesiskt uttryck |
|
|
|
|
|
#7 |
|
Medlem
Registrerad: 2012-08-07
Inlägg: 16
Lösningar: 0 |
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? |
|
|
|
|
|
#8 |
|
Forumvärd
Registrerad: 2001-06-14
Ort: Helsingborg
Inlägg: 8 495
Lösningar: 535 |
__________________
"det går inte att lära en gammal norrlänning byta namn på irc" - gammalt kinesiskt uttryck |
|
|
|
|
|
#9 |
|
Medlem
Registrerad: 2009-12-10
Ort: Bangalore
Inlägg: 816
Lösningar: 11 |
Kod:
<% SET PB = Conn.Execute("SELECT (COUNT(AntalBla) / COUNT(antal) * 100) AS PBla WHERE PlayerId= '"& strpID &"'") %>
Kod:
<% SET PB = Conn.Execute("SELECT (COUNT(AntalBla) / COUNT(antal) * 100) AS PBla FROM [tbl_res] WHERE PlayerId= '"& strpID &"'") %>
__________________
- Vad hette La Liga då det begav sig? - Då Liga. |
|
|
|
|
|
#10 |
|
Forumvärd
Registrerad: 2001-06-14
Ort: Helsingborg
Inlägg: 8 495
Lösningar: 535 |
ah, inte en form med i sql frågan... men ordet som är reserverad är förmodligen antal och verkligen inte tbl_res
__________________
"det går inte att lära en gammal norrlänning byta namn på irc" - gammalt kinesiskt uttryck |
|
|
|
|
|
#11 |
|
Medlem
Registrerad: 2009-12-10
Ort: Bangalore
Inlägg: 816
Lösningar: 11 |
Nej, det tror jag inte heller!
Men låt oss vara tydliga, för omväxlings skull! Kod:
<% SET PB = Conn.Execute("SELECT (COUNT([AntalBla]) / COUNT([antal]) * 100) AS PBla FROM [tbl_res] WHERE PlayerId= '"& strpID &"'") %>
__________________
- Vad hette La Liga då det begav sig? - Då Liga. Senast redigerad av voigtann1, 2012-08-15 klockan 07:23 Anledning: Låt oss använda kod-blocket med då. |
|
|
|
|
|
#12 |
|
Medlem
Registrerad: 2012-08-07
Inlägg: 16
Lösningar: 0 |
Hej,
jag löste det på följande sätt: Kod:
<%
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 %>
Hmm går det kanske att ha båda Set raderna inom samma (<%) och (%>)? |
|
|
|
|
|
#13 |
|
Forumvärd
Registrerad: 2001-06-14
Ort: Helsingborg
Inlägg: 8 495
Lösningar: 535 |
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 går inte att lära en gammal norrlänning byta namn på irc" - gammalt kinesiskt uttryck |
|
|
|
|
|
#14 |
|
Medlem
Registrerad: 2012-08-07
Inlägg: 16
Lösningar: 0 |
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
|
|
|
|
|
|
#15 |
|
Medlem
Registrerad: 2009-12-10
Ort: Bangalore
Inlägg: 816
Lösningar: 11 |
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. Kod:
<%
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"
__________________
- Vad hette La Liga då det begav sig? - Då Liga. |
|
|
|
|
|
#16 |
|
Medlem
Registrerad: 2012-08-07
Inlägg: 16
Lösningar: 0 |
Tack för tipset på INCLUDE VIRTUAL det hade jag ingen aning om att det fanns ens
|
|
|
|
|
|
#17 |
|
Medlem
Registrerad: 2012-08-07
Inlägg: 16
Lösningar: 0 |
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 ![]() Alla tankar, Idéer ock kodexempel mottages med varm hand
Senast redigerad av climber, 2012-08-16 klockan 19:28 |
|
|
|
|
|
#18 |
|
Forumvärd
Registrerad: 2001-06-14
Ort: Helsingborg
Inlägg: 8 495
Lösningar: 535 |
Mitt tips är att göra om din databas struktur där du har:
Kod:
playerId courseId score
__________________
"det går inte att lära en gammal norrlänning byta namn på irc" - gammalt kinesiskt uttryck |
|
|
|
|
|
#19 |
|
Medlem
Registrerad: 2012-08-07
Inlägg: 16
Lösningar: 0 |
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. |
|
|
|
|
|
#20 |
|
Forumvärd
Registrerad: 2001-06-14
Ort: Helsingborg
Inlägg: 8 495
Lösningar: 535 |
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
__________________
"det går inte att lära en gammal norrlänning byta namn på irc" - gammalt kinesiskt uttryck |
|
|
|
|
|
#21 |
|
Medlem
Registrerad: 2009-12-10
Ort: Bangalore
Inlägg: 816
Lösningar: 11 |
Detta är roligt!
Bara så vi pratar om samma sak, låt oss reda ut begreppen: Bangolf = minigolf? Bana = hål? OK, spelar ingen roll, förutom att man har inte PAR på minigolf... (vad jag vet i alla fall!!) *** Jag tror att Vogatini menar nåt liknande som detta, men jag kan ha fel. Nu förstår jag att bygga om din databas kanske inte är prioritet nummer ett i skrivande stund, men om du gör en vettig struktur blir sajten MYCKET roligare och intressantare. Som ny på ASP och SQL har du en hel del att sätta dig in i. Särskilt med tanke på att ditt projekt har rätt usel design (upplägg) från början. Jag menar att din vän tänkte ett steg längre än man ofta gör när han väljer att spara ID-nummer som text... Det är ju ingen förmildrande omständighet, så att säga! Egentligen skulle du stänga hela hemsidan och göra om allt det där. Jag är benägen att lägga min röst på att du ska bygga om hela sajten och databasen före jul, i alla fall. Annars får du dra med den där skiten i tidernas evighet och det är ju ÄNNU jobbigare än att ta sig tid att skriva om projektet. *** Hur som haver: [users] intID -- räknare strName [bana / lane / hole] -- välj en av dom intID -- räknare strText intPAR -- om det är aktuellt [game] -- spelomgång intID dteCreated intUserID [score] intID dteCreated intGameID intBanaID *** Nu lade jag till en ytterligare tabell, men du kan få grymt rolig statistik baserat på detta upplägget. Dessutom, du kan med minimal, eller ingen för att vara mer exakt, ansträngning få en superkul hemsida! Du kan få månadens snabbaste spel, senaste 30 dagar, årets bästa + snabbaste omgång med mera. Jag tänker mig att många av dina klubbkompisar har smarta telefoner och laddar in resultatet allt efter hålen de avverkar. *** Det är viktigt att datum verkligen är datum och inte textfält som du lägger in datum i... Så här ska det vara: (klassisk ASP + SQL) text = enkelfjump datum = brädgård siffror + boolean (sant/falskt) = inget SQL = SELECT * WHERE strName = 'Hedenhös' AND dteCreated = #2012-08-17# AND intUserID = 23 AND bolView = TRUE
__________________
- Vad hette La Liga då det begav sig? - Då Liga. |
|
|
|
|
|
#22 |
|
Forumvärd
Registrerad: 2001-06-14
Ort: Helsingborg
Inlägg: 8 495
Lösningar: 535 |
Lite offtopic:
@civilpolisen ett id kan vara en GUID och det är ju inte ett tal och det är unikt
__________________
"det går inte att lära en gammal norrlänning byta namn på irc" - gammalt kinesiskt uttryck |
|
|
|
|
|
#23 |
|
Medlem
Registrerad: 2012-08-07
Inlägg: 16
Lösningar: 0 |
@civilpolisen
Bangolf = Minigolf check Bana = Hål check Att bygga om hela sidan är inte aktuellt för tillfället eftersom föreningen diskuterar om dom ska bygga en wordpress sida istället och då får man fundera på om man ska försöka återskapa detta system i php istället. Det är därför i nuläget enklast att bara försöka hålla detta system flytande. |
|
|
|
|
|
#24 |
|
Medlem
Registrerad: 2012-08-07
Inlägg: 16
Lösningar: 0 |
Om jag vill räkna ihop alla AMT1-AMT18 där värdet är 1, kan man då använda sig av INNER JOIN eller GROUP BY eller hur beter man sig?
Har fortfarande lite svårt att greppa detta ![]() AMT1-AMT18 ligger i tabellen tbl_res. Har försökt på detta sätt utan att lyckas: (OBS: Har kortat ner det till AMT1-AMT4 i exemplet) Kod:
<%
SET EttorB1 = Conn.Execute("SELECT COUNT(*) AS AntalEttorB1 FROM tbl_res WHERE AMT1=1 AND PlayerId='"& strpID &"'")
SET EttorB2 = Conn.Execute("SELECT COUNT(*) AS AntalEttorB2 FROM tbl_res WHERE AMT2=1 AND PlayerId='"& strpID &"'")
SET EttorB3 = Conn.Execute("SELECT COUNT(*) AS AntalEttorB3 FROM tbl_res WHERE AMT3=1 AND PlayerId='"& strpID &"'")
SET EttorB4 = Conn.Execute("SELECT COUNT(*) AS AntalEttorB4 FROM tbl_res WHERE AMT4=1 AND PlayerId='"& strpID &"'")
SET TotEttor = Conn.Execute("SELECT SUM(AntalEttorB1+AntalEttorB2+AntalEttorB3+AntalEttorB4) AS Ettor %>
<%= TotEttor("Ettor") %>
Kod:
<%
SET EttorB1 = Conn.Execute("SELECT COUNT(*) AS AntalEttorB1 FROM tbl_res WHERE AMT1=1 AND PlayerId='"& strpID &"'")
SET EttorB2 = Conn.Execute("SELECT COUNT(*) AS AntalEttorB2 FROM tbl_res WHERE AMT2=1 AND PlayerId='"& strpID &"'")
SET EttorB3 = Conn.Execute("SELECT COUNT(*) AS AntalEttorB3 FROM tbl_res WHERE AMT3=1 AND PlayerId='"& strpID &"'")
SET EttorB4 = Conn.Execute("SELECT COUNT(*) AS AntalEttorB4 FROM tbl_res WHERE AMT4=1 AND PlayerId='"& strpID &"'")
SET TotEttor = Conn.Execute("SELECT SUM(AntalEttorB1+AntalEttorB2+AntalEttorB3+AntalEttorB4) AS Ettor FROM tbl_res WHERE PlayerId='"& strpID &"'")
%>
<%= TotEttor("Ettor") %>
När det gäller INNER JOIN så tror jag mig ha förstått att det gäller när man vill lägga ihop kolumner från olika tabeller och isf är väl det fel metod? Jag kanske är helt åt skogen fel ute när det gäller detta
|
|
|
|
|
|
Markerad som löst av climber #25 | |
|
Forumvärd
Registrerad: 2001-06-14
Ort: Helsingborg
Inlägg: 8 495
Lösningar: 535 |
Citat:
Kod:
<%
Function GetOnce(course, playerId)
GetOnce = Conn.Execute("SELECT COUNT(*) FROM tbl_res WHERE AMT" & course & "=1 AND PlayerId='"& playerId &"'")(0)
End Function
Dim TotalOnce
TotalOnce = GetOnce(1, strpID) + GetOnce(2, strpID) + GetOnce(3, strpID) + GetOnce(4, strpID)
Response.Write TotalOnce
%>
__________________
"det går inte att lära en gammal norrlänning byta namn på irc" - gammalt kinesiskt uttryck |
|
|
|
|
![]() |
| Trådverktyg | |
| Visningsalternativ | |
|
|