Räkna procent ACCESS ASP

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • climber
    Medlem
    • 2012-08-07
    • 16

    #1

    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]

    och denna kod räknar ut hur många gånger spelaren har slutat med ett resultat mellan 18 och 29 poäng
    [KOD]
    <% Set AntalB = Conn.Execute("SELECT COUNT(TOTAL) AS AntalBla FROM tbl_res WHERE (TOTAL) BETWEEN 18 AND 29 AND PlayerId= '"& strpID &"'") %>
    [/KOD]

    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
    [KOD]
    <% SET PB = Conn.Execute("SELECT COUNT(AntalBla) / COUNT(antal) * 100.0 AS PBla WHERE PlayerId= '"& strpID &"'") %>
    [/KOD]

    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
  • voigtann1
    Forumvärd
    • 2001-06-14
    • 8810

    #2
    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 &"'") %>[/kod]annars kan du ju göra det när du presentera innehållet.
    "det går inte att lära en gammal norrlänning byta namn på irc" - gammalt kinesiskt uttryck

    Comment

    • climber
      Medlem
      • 2012-08-07
      • 16

      #3
      Hej voigtann1,

      hur menar du att jag kan göra det när jag presenterar innehållet?

      Comment

      • voigtann1
        Forumvärd
        • 2001-06-14
        • 8810

        #4
        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]och när du loopar ut innehållet så använder du ASP för beräkningen:
        [kod]<%= (PB("x") / PB("Y"))* 100 %>[/kod]
        "det går inte att lära en gammal norrlänning byta namn på irc" - gammalt kinesiskt uttryck

        Comment

        • climber
          Medlem
          • 2012-08-07
          • 16

          #5
          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.

          Comment

          • voigtann1
            Forumvärd
            • 2001-06-14
            • 8810

            #6
            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

            Comment

            • climber
              Medlem
              • 2012-08-07
              • 16

              #7
              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?

              Comment

              • voigtann1
                Forumvärd
                • 2001-06-14
                • 8810

                #8
                Get help with your questions about Microsoft Access with our how-to articles, training videos, and support content.
                "det går inte att lära en gammal norrlänning byta namn på irc" - gammalt kinesiskt uttryck

                Comment

                • civilpolisen
                  Medlem
                  • 2009-12-10
                  • 816

                  #9
                  [kod]<% SET PB = Conn.Execute("SELECT (COUNT(AntalBla) / COUNT(antal) * 100) AS PBla WHERE PlayerId= '"& strpID &"'") %>[/kod]


                  [kod]<% SET PB = Conn.Execute("SELECT (COUNT(AntalBla) / COUNT(antal) * 100) AS PBla FROM [tbl_res] WHERE PlayerId= '"& strpID &"'") %>[/kod]
                  - Vad hette La Liga då det begav sig?
                  - Då Liga.

                  Comment

                  • voigtann1
                    Forumvärd
                    • 2001-06-14
                    • 8810

                    #10
                    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

                    Comment

                    • civilpolisen
                      Medlem
                      • 2009-12-10
                      • 816

                      #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 &"'") %>[/kod]
                      Last edited by voigtann1; 2012-08-15, 07:23. Reason: Låt oss använda kod-blocket med då.
                      - Vad hette La Liga då det begav sig?
                      - Då Liga.

                      Comment

                      • climber
                        Medlem
                        • 2012-08-07
                        • 16

                        #12
                        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 %>
                        [/KOD]

                        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 (%>)?

                        Comment

                        • voigtann1
                          Forumvärd
                          • 2001-06-14
                          • 8810

                          #13
                          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

                          Comment

                          • climber
                            Medlem
                            • 2012-08-07
                            • 16

                            #14
                            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

                            Comment

                            • civilpolisen
                              Medlem
                              • 2009-12-10
                              • 816

                              #15
                              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.

                              Code:
                              <%
                              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.

                              Comment

                              Working...