Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 33
  1. #1
    Utente di HTML.it L'avatar di diegoctn
    Registrato dal
    May 2001
    Messaggi
    2,118

    Problema stupidino in Sql, count e group.

    Scusate ragazzi ho un problema, in pratica da sempre. Vi spiego:

    TABELLA RICHIESTE
    reparto | articolo | data
    A x1 15/04/2005
    A x2 15/04/2005
    A x3 15/04/2005
    A x1 22/03/2005
    A x6 22/03/2005
    B x5 25/03/2005
    B x7 25/03/2005
    C x1 15/03/2005
    C x1 16/04/2005

    Mi serve sapere quante richieste ha fatto A, quante B e quante C. In access faccio:
    Q1="Select reparto, data from T1 group by data, reparto"
    Q2="Select count(reparto), reparto as qt from Q2 group by reparto"

    e mi da
    QT | reparto
    2 A
    1 B
    2 C

    Ora , da sempre, non riesco a farlo in asp.

    Data la prima quesry:

    codice:
    Q1="Select preparto, data from T1 group by data, reparto"
    cosa dovrei fare? Ho fatto la ricerca ma non trovo nulla.

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Devi aprire la connessione e il recordset ed estrarre le info.

    Roby

  3. #3
    Q1="Select reparto, data from T1 group by data, reparto"
    Q2="Select count(reparto), reparto as qt from (" & Q2 & ") group by reparto"

  4. #4
    Utente di HTML.it L'avatar di diegoctn
    Registrato dal
    May 2001
    Messaggi
    2,118
    Son sicuro che sbaglio ad aprire e chiudere il rs. Mi ci date un occhio?


    codice:
    <%
    strconn="Driver={Microsoft Access Driver (*.mdb)}; 
    
    dbq="&Server.MapPath("magazzino.mdb") 
    set Conn=Server.CreateObject("ADODB.Connection") 
    Conn.open strconn 
    Squ2="Select presidio, datainvio from magaz order by 
    
    presidio, datainvio"
    set rs=server.createobject("adodb.recordset") 
    rs.open Squ2,Conn
    Squ3=""Select count(presidio) as qt, presidio from 
    
    ("&Squ2&") group by magaz"
    rs.open Squ3,Conn
    Do until Rs.eof=True 
    valore=rs("qt")
    Response.write valore
    rs.movenext
    loop
    rs.close
    set rs=Nothing
    conn.close
    set conn=Nothing
    %>
    ADODB.Recordset (0x800A0E79)
    L'operazione non è consentita se l'oggetto è aperto.
    /xxx.asp, line 9

  5. #5
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Se fai due query devi aprire due recordset diversi.

    Roby

  6. #6
    Utente di HTML.it L'avatar di diegoctn
    Registrato dal
    May 2001
    Messaggi
    2,118
    Scusate la mia ignoranza, davvero:

    codice:
    <%
    strconn="Driver={Microsoft Access Driver (*.mdb)}; dbq="&Server.MapPath("magazzino.mdb") 
    set Conn=Server.CreateObject("ADODB.Connection") 
    Conn.open strconn 
    Squ2="Select presidio, datainvio from magaz order by presidio, datainvio"
    set rs=server.createobject("adodb.recordset") 
    rs.open Squ2,Conn
    Squ3="Select count(presidio) as qt, presidio from ("&Squ2&") group by presidio"
    set rs2=server.createobject("adodb.recordset") 
    rs2.open Squ3,Conn
    Do until Rs2.eof=True 
    valore=rs("qt")
    %>
    <table><tr><td><%response write rs("qt")%></td></tr></table> 
    <%
    rs.movenext
    loop
    rs.close
    set rs=Nothing
    rs2.close
    set rs2=nothing
    
    conn.close
    set conn=Nothing
    %>
    Errore di compilazione di Microsoft VBScript (0x800A0401)
    Prevista fine istruzione
    /xxx.asp, line 16, column 15

  7. #7
    dovresti scrivere response.write (col punto) oppure
    codice:
    <table><tr><td><%=rs("qt")%></td></tr></table>
    ciao
    Sem nasù per patì, patèm!

  8. #8
    Utente di HTML.it L'avatar di diegoctn
    Registrato dal
    May 2001
    Messaggi
    2,118
    Si, in effetti una svista. Ma adesso mi dice che non riesce a trovare l'oggetto corrispondente.

    rs("qt")


  9. #9
    Tu stai facendo un ciclo su rs2, ma poi dentro al ciclo usi rs("qt") e rs.movenext. Dovresti usare rs2. Non entro nel merito della bontà dell'algoritmo, ma solo della sintassi

    ciao
    Sem nasù per patì, patèm!

  10. #10
    però attento, la stringa con cui apri rs2 è sbagliata. tu concateni due stringhe , e otterresti

    Select count(presidio) as qt, presidio from (Select presidio, datainvio from magaz order by presidio, datainvio) group by presidio

    che se la copi in access vedrai ti darà errore

    Tu dovrresti aprire un recordset, recuperare i risultati che ti servono ed utilizzarli per la query del secondo recordset (mi sfugge il legame tra i due, ma ti ripeto a livello di sintassi è sbagliata così com'è adesso).

    ciao


    consiglio:
    prova a farlo in visualbasci, così è più comodo il debug ela segnalazione di eventuali errori, poi quando funziona lo trasporti in asp (cambiando poco o niente)
    Sem nasù per patì, patèm!

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.