Pagina 1 di 7 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 67
  1. #1
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135

    Select dinamiche e query

    Ciao a tutti.

    Ho una tabella access così strutturata:

    codice:
    ID	MATR	    LOC	    NOME_ATTIVITA	      DATA_PIANIFICATA        
    234	80850121     ROMA	    Controlli 	      01/02/2006	        
    235	80850123     ROMA	    Controlli 	      01/03/2006	        
    236	80997182     ROMA	    Controlli 1 	      01/06/2006
    Tramite delle select dinamiche e delle query faccio in modo che selezionando dalla prima select LOC , si popola la seconda select con estrazione del NOME_ATTIVITA , selezionato il NOME_ATTIVITA si popola la terza select MATR .

    Supponiamo di selezionare dalla select LOC il valore "ROMA", la seconda select NOME_ATTIVITA si popola con il valore "Controlli", selezioniamo "Controlli" dalla select NOME_ATTIVITA e la terza select MATR non si popola con la rispettiva MATR .

    Sapete dirmi dove sbaglio? Eccovi il codice:

    codice:
    ' PRIMA QUERY PER PRIMA SELECT LOC
       strSql = "SELECT LOC FROM Tab GROUP BY LOC ORDER BY LOC ASC"
       Set objRs = Server.CreateObject("ADODB.Recordset")
    objRs.Open strSql, Cn, 3, 3
    
    %>
            <select size="1" name="LOC" onChange="window.document.location='PAGE.asp?LOC='+this.options[this.selectedIndex].value+';">
            
    <% LOC_SEL = request.querystring("LOC") %>    
    <option value="<%=LOC_SEL%>"><%=LOC_SEL%></option>
    
    <%
    
    If Not objRs.EOF Then
    Do While Not objRs.EOF
    %>
              <option value= "<% = Trim(objRs("LOC")) %>"><%  = Trim(objRs("LOC")) %></option>
    <%
    objRs.MoveNext
    Loop
    End If
    objRs.Close
    %>
            </select>
    
    
    <%
    LOC = request("LOC")
    
    ' SECONDA QUERY PER SECONDA SELECT NOME_ATTIVITA
    strSql = "SELECT NOME_ATTIVITA FROM Tab WHERE LOC = '"&LOC&"' GROUP BY NOME_ATTIVITA ORDER BY NOME_ATTIVITA ASC"
    objRs.Open strSql, Cn, 3, 3
    %>
            <select name="nome_attivita" onChange="window.document.location='PAGE.asp?nome_attivita='+this.options[this.selectedIndex].value+';">
    
    <% attivita_sel = request.querystring("nome_attivita") %>    
    <option value="<%=attivita_sel%>"><%=attivita_sel%></option>
    
    <%
    If Not objRs.EOF Then
    Do While Not objRs.EOF
    %>
              <option value= "<% = pulisci(left(objRs("NOME_ATTIVITA"),50)) %>"><%  = left(objRs("NOME_ATTIVITA"),50) %></option>
    <%
    objRs.MoveNext
    Loop
    End If
    objRs.Close
    %>
            </select>
    
    
    <%
    
    
    NOME_ATTIVITA = request("NOME_ATTIVITA")
    
    ' TERZA QUERY PER TERZA SELECT MATR
    strSql = "SELECT MATR FROM Tab WHERE NOME_ATTIVITA = '"&NOME_ATTIVITA&"' AND LOC = '"&LOC&"' GROUP BY MATR ORDER BY MATR ASC"
    objRs.Open strSql, Cn, 3, 3
    %>
            <select name="MATR">
       
    
              <option value="0">---</option>
    <%
    If Not objRs.EOF Then
    Do While Not objRs.EOF
    %>
              <option value= "<% = objRs("MATR") %>"><%  = objRs("MATR") %></option>
    <%
    objRs.MoveNext
    Loop
    End If
    objRs.Close
    %>
            </select>
    Lo Stato dà un posto. L’impresa privata dà un lavoro. – Indro Montanelli

  2. #2
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    ciao.

    BEh non si popola , ma ti da errore ?

    L'unica cosa che mi sembra dubbia è:


    3a query
    strSql = "SELECT MATR FROM Tab WHERE NOME_ATTIVITA = '"&NOME_ATTIVITA&"' AND LOC = '"&LOC&"' GROUP BY MATR ORDER BY MATR ASC"

    come fai a recuperare il valore "LOC"?
    in questo caso, se non sbaglio "LOC" NON DOVREBBE AVERE NESSUN VALORE.


  3. #3
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    Nessun errore semplicemente non si popola solo quando ci sono due nomi attività uguali nella stessa località (loc) e quindi non distingue la matricola (matr) suppongo...
    Lo Stato dà un posto. L’impresa privata dà un lavoro. – Indro Montanelli

  4. #4
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    perchè non passi ID invece di passare il nome attivita ?

    strSql = "SELECT MATR FROM Tab WHERE ID = '"&ID&"' "

    cosi avrai sicuramente un record univoco.

    ma non ho capito se ci sono più matricole per attività.

  5. #5
    Utente di HTML.it L'avatar di fraude
    Registrato dal
    Feb 2004
    Messaggi
    2,870
    ...

  6. #6
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    Originariamente inviato da agenti
    perchè non passi ID invece di passare il nome attivita ?

    strSql = "SELECT MATR FROM Tab WHERE ID = '"&ID&"' "

    cosi avrai sicuramente un record univoco.

    ma non ho capito se ci sono più matricole per attività.
    Non passo l'ID perchè la query diventerebbe:

    codice:
    ' SECONDA QUERY PER SECONDA SELECT NOME_ATTIVITA
    strSql = "SELECT ID,  NOME_ATTIVITA FROM Tab WHERE LOC = '"&LOC&"' GROUP BY ID, NOME_ATTIVITA ORDER BY ID, NOME_ATTIVITA ASC"
    Perdendo il raggruppamento del nome_attivita quando è uguale...

    Ci sono più matricole per le stesse attività.
    Lo Stato dà un posto. L’impresa privata dà un lavoro. – Indro Montanelli

  7. #7
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    ho fatto le prove direttamente in access...

    sembra che la terza query funzioni bene....

    ti conviene provare su access o fuori dalla select.

  8. #8
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    Non ho capito, cosa cambierebbe in access?
    Lo Stato dà un posto. L’impresa privata dà un lavoro. – Indro Montanelli

  9. #9
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    Ho provato la query direttamente in access:

    codice:
    SELECT MATR
    FROM Tab
    WHERE NOME_ATTIVITA='Controlli' And LOC='ROMA'
    GROUP BY MATR
    ORDER BY MATR;
    e mi estrae tutte e due i records non distinguendo la MATR:

    codice:
    ID	MATR	    LOC	    NOME_ATTIVITA	      DATA_PIANIFICATA        
    234	80850121     ROMA	    Controlli 	      01/02/2006	        
    235	80850123     ROMA	    Controlli 	      01/03/2006
    Lo Stato dà un posto. L’impresa privata dà un lavoro. – Indro Montanelli

  10. #10
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    ma tu in questa query cosa vuoi ottenere

    1) le MATR in modo univoco ( un solo record )


    2) tutte le matr che appartengono a un nome_attività

    3) qualcos'altro.

    Perdonami ma non è facile capire...

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.