Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it L'avatar di ubbicom
    Registrato dal
    Mar 2004
    Messaggi
    1,407

    Costruire stringa particolare in ASP

    Ciao, avrei bisogno di un aiuto a risolvere un problema ASP.

    Tramite questa pagina ASP dovrei ottenere questa stringa:
    codice:
    Risultato: Totale registrati 5000; 3200 Femmine; 1800 Maschi.
    Ma non ci riesco, perchè se scrivo:
    codice:
    response.write strquanti & ";" & strsesso
    La pagina va in errore sulla stessa riga:
    Tipo di errore:
    Errore di run-time di Microsoft VBScript (0x800A000D)
    Tipo non corrispondente
    Mentre se scrivo:
    codice:
    response.write strquanti & ";"
    Ottengo: 3200;1800;
    Cioè solamente i parziali per sesso.

    Cosa sbaglio?
    Grazie in anticipo.

    codice:
    <%
    
    Session.LCID = 1040
    
    Set objconn = Server.CreateObject("ADODB.Connection")
    objconn.Open "DRIVER={MySQL ODBC 5.1 Driver};SERVER=.........;"
    
    
    SQL = "SELECT Nome FROM `tbl_online` LIMIT 1;"
    Set objRec = objconn.execute(SQL)
    strnome = objRec("Nome")
    
    SQL = "SELECT SQL_CALC_FOUND_ROWS "
    SQL = SQL & " COUNT(*) As `quanti`, "
    SQL = SQL & " CASE WHEN Sesso='F' THEN CONCAT(COUNT(*),' ','Femmine') "
    SQL = SQL & " ELSE CONCAT(COUNT(*),' ','Maschi') END `sesso` "
    SQL = SQL & " FROM "
    SQL = SQL & " `tbl_online` "
    SQL = SQL & " WHERE "
    SQL = SQL & " 1 "
    SQL = SQL & " GROUP BY "
    SQL = SQL & " `Sesso`;"
    
    Set rs = Server.CreateObject("ADODB.RecordSet")
    rs.Open SQL, objconn
    
    If not rs.eof then
    
    SQL = "SELECT FOUND_ROWS() tot;"
    Set objRs = objconn.execute(SQL)
    strtot = objRs("tot")
    
    Do while not rs.eof
    strquanti = cInt(rs("quanti"))
    strsesso = rs("sesso")
             
    response.write strquanti & ";" & strsesso
    
    rs.movenext
    Loop
         
    objRs.close
    set objRs = nothing
    
    End if
    
    rs.close
    set rs = nothing
    
    set objRec = nothing
    
    objconn.Close
    set objconn = nothing
    %>

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Prova la query in MySQL per vedere se funziona.

    Roby

  3. #3
    Utente di HTML.it L'avatar di ubbicom
    Registrato dal
    Mar 2004
    Messaggi
    1,407
    Originariamente inviato da Roby_72
    Prova la query in MySQL per vedere se funziona.

    Roby
    grazie, la query provata in mysql funziona correttamente, ecco:
    codice:
    mysql> SELECT SQL_CALC_FOUND_ROWS
    	COUNT(*)AS `quanti`,
    	CASE
    WHEN Sesso = 'F' THEN
    	CONCAT(COUNT(*), ' ', 'Femmine')
    ELSE
    	CONCAT(COUNT(*), ' ', 'Maschi')
    END `sesso`
    FROM
    	`tbl_online`
    WHERE
    	1
    GROUP BY
    	`Sesso` WITH ROLLUP;
    
    
    
    +---------+--------------+
    | quanti  | sesso        |
    +---------+--------------+
    |    3200 | 3200 Femmine |
    |    1800 | 1800 Maschi  |
    |    5000 | 5000 Maschi  |
    +---------+--------------+
    3 rows in set

  4. #4
    perché non la costruisci già in mysql? in fondo ti basta aggiungere un ";" ....

  5. #5
    Utente di HTML.it L'avatar di ubbicom
    Registrato dal
    Mar 2004
    Messaggi
    1,407
    Originariamente inviato da optime
    perché non la costruisci già in mysql? in fondo ti basta aggiungere un ";" ....
    Grazie ho provato ma non riesco a capire come mettere la stringa tutta su un'unica riga :S
    codice:
    mysql> SELECT SQL_CALC_FOUND_ROWS quanti, CONCAT(quanti,' ',SUBSTRING_INDEX(s,' ',-1))
    FROM
    (
    SELECT
    	COUNT(*)AS QUANTI,
    	CASE
    WHEN Sesso = 'F' THEN
    	CONCAT(COUNT(*), ' ', 'Femmine')
    WHEN Sesso = 'M' THEN
    	CONCAT(COUNT(*), ' ', 'Maschi')
    ELSE
    	CONCAT(COUNT(*), ' ', 'Totale')
    END s
    FROM
    	`tbl_online`
    WHERE
    	1
    GROUP BY
    	`Sesso` WITH ROLLUP) x;
    +--------+----------------+
    | quanti | CONCAT(quanti) |
    +--------+----------------+
    |    161 | 161 Femmine    |
    |     58 | 58  Maschi     |
    |    219 | 219 Totale     |
    +--------+----------------+
    3 rows in set

  6. #6
    dai....


    CONCAT(COUNT(*), '; ', 'Femmine')

  7. #7
    Utente di HTML.it L'avatar di ubbicom
    Registrato dal
    Mar 2004
    Messaggi
    1,407
    Si ho già provato ma ecco l'output:
    codice:
    ???????s??????s?‹?‹???
    Codice ASP:
    codice:
    <%
    
    Session.LCID = 1040
    
    Set objconn = Server.CreateObject("ADODB.Connection")
    objconn.Open "DRIVER={MySQL ODBC 5.1 Driver};SERVER=localhost;...;"
    
    SQL = " SELECT CONCAT(`quanti`,' ',SUBSTRING_INDEX(s,';',-1)) `risultato` "
    SQL = SQL & " FROM "
    SQL = SQL & " ( "
    SQL = SQL & " SELECT "
    SQL = SQL & " 	COUNT(*) AS `quanti`, "
    SQL = SQL & " 	CASE "
    SQL = SQL & " WHEN Sexo = 'F' THEN "
    SQL = SQL & " 	CONCAT(COUNT(*), ' ', 'Femmine') "
    SQL = SQL & " WHEN Sexo = 'M' THEN "
    SQL = SQL & " 	CONCAT(COUNT(*), ' ', 'Maschi') "
    SQL = SQL & " ELSE "
    SQL = SQL & " 	CONCAT(COUNT(*), ' ', 'Totale') "
    SQL = SQL & " END s "
    SQL = SQL & " FROM "
    SQL = SQL & " `tbl_online` "
    SQL = SQL & " WHERE "
    SQL = SQL & " 1 "
    SQL = SQL & " GROUP BY "
    SQL = SQL & " 	`Sesso` WITH ROLLUP) x; "
    
    Set rs = Server.CreateObject("ADODB.RecordSet")
    rs.Open SQL, objconn
    
    If not rs.eof then
    Do while not rs.eof
    
    response.write rs("risultato")
    
    rs.movenext
    Loop
         
    objRs.close
    set objRs = nothing
    
    End if
    
    rs.close
    set rs = nothing
    
    set objRec = nothing
    
    objconn.Close
    set objconn = nothing
    %>

  8. #8
    Utente di HTML.it L'avatar di ubbicom
    Registrato dal
    Mar 2004
    Messaggi
    1,407
    La soluzione è questa funzionante in mysql:
    codice:
    SELECT CONCAT(COUNT(*)
                 , ', '
                 , SUM(sesso = 'F')
                 , ' femmine, '
                 , SUM(sesso = 'M')
                 , ' maschi'
                 ) x 
      FROM tbl_online;
    +----------------------------+
    | x                          |
    +----------------------------+
    | 219, 161 femmine, 58 maschi|
    +----------------------------+
    Pubblicata in ASP la stessa query restituisce una stringa di tutti punti interrogativi.

    Perchè???

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.