Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente di HTML.it L'avatar di Luca1317
    Registrato dal
    Dec 2001
    Messaggi
    1,258

    Select che visualizza 2 volte un valore

    Ho una select che pesca i record dal database e li visualizza...il problema è che visualizza, insieme agli altri, 2 record identici, so perchè lo fa ma non so come evitarlo.

    Potete testare lo script a questo LINK

    Il codice è:
    codice:
    <%
    Dim Conn
    Set Conn=Server.CreateObject("ADODB.Connection")
    Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="& server.MapPath("prova.mdb")
    
    Dim cod
    cod=Request.Querystring("cod")
    Dim SQL,Rec
    SQL="SELECT * FROM caricoart WHERE id="&cod                                                     
    Set rec = Server.CreateObject("ADODB.Recordset")
    Set Rec=Conn.Execute(SQL)
    		  
    		  ValoreTipoDocumento=rec("tipodocumento")
    %>
    <select name="TipoDocumento" size="1" id="TipoDocumento">
    <option value="<% =(ValoreTipoDocumento) %>"><% =(ValoreTipoDocumento)%></option>
    <%
    'Scrivo la mia query sql
    sql = "SELECT * FROM TipoDocumento"
    
    'E creo il recordset
    Set RecTipoDocumento = Server.CreateObject ("ADODB.Recordset")
    RecTipoDocumento.Open sql, Conn, 3, 3
    do while not RecTipoDocumento.eof 
    
    valore=RecTipoDocumento("TipoDocumento")
    nome=RecTipoDocumento("TipoDocumento") 
    
    response.write("<option value=" & nome &">" & valore &"</option>") 
    RecTipoDocumento.movenext 
    loop
    %>
    </select>
      
    <%
    'Chiudo e setto a nothing Rec, RecTipoDocumento e Conn
    rec.close
    Set rec = nothing 
    
    RecTipoDocumento.close
    Set RecTipoDocumento = nothing 
    
    conn.Close 
    Set conn = nothing 
    %>

  2. #2
    Moderatore di CMS L'avatar di kalosjo
    Registrato dal
    Jul 2001
    residenza
    In culo alla luna
    Messaggi
    1,999
    codice:
    <%
    Dim Conn
    Set Conn=Server.CreateObject("ADODB.Connection")
    Conn.Open "driver={Microsoft Access Driver (*.mdb)};dbq="& server.MapPath("prova.mdb")
    
    Dim cod
    cod=Request.Querystring("cod")
    Dim SQL,Rec
    SQL="SELECT * FROM caricoart WHERE id="&cod                                                     
    Set rec = Server.CreateObject("ADODB.Recordset")
    Set Rec=Conn.Execute(SQL)
    		  
    		  ValoreTipoDocumento=rec("tipodocumento")
    %>
    <select name="TipoDocumento" size="1" id="TipoDocumento">
    <option value="<% =(ValoreTipoDocumento) %>"><% =(ValoreTipoDocumento)%></option>
    <%
    'Scrivo la mia query sql
    sql = "SELECT * FROM TipoDocumento where tipodocumento<>" & ValoreTipoDocumento
    
    'E creo il recordset
    Set RecTipoDocumento = Server.CreateObject ("ADODB.Recordset")
    RecTipoDocumento.Open sql, Conn, 3, 3
    do while not RecTipoDocumento.eof 
    
    valore=RecTipoDocumento("TipoDocumento")
    nome=RecTipoDocumento("TipoDocumento") 
    
    response.write("<option value=" & nome &">" & valore &"</option>") 
    RecTipoDocumento.movenext 
    loop
    %>
    </select>
      
    <%
    'Chiudo e setto a nothing Rec, RecTipoDocumento e Conn
    rec.close
    Set rec = nothing 
    
    RecTipoDocumento.close
    Set RecTipoDocumento = nothing 
    
    conn.Close 
    Set conn = nothing 
    %>
    Scusate i puntini di sospensione...... La verità è che non ho argomenti....

  3. #3
    Utente di HTML.it L'avatar di Luca1317
    Registrato dal
    Dec 2001
    Messaggi
    1,258
    ho sostituito la riga
    sql = "SELECT * FROM TipoDocumento"
    a quella che mi hai suggerito
    sql = "SELECT * FROM TipoDocumento where tipodocumento<>" & ValoreTipoDocumento


    ma mi da un errore alla riga: RecTipoDocumento.Open sql, Conn, 3, 3

    l'errore è:
    Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
    [Microsoft][Driver ODBC Microsoft Access] Parametri insufficienti. Previsto 1.


  4. #4
    ma perchè ci sono due query al db per popolare quella select?

    provato a fare un group by tipodocumento?
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  5. #5
    Utente di HTML.it L'avatar di Luca1317
    Registrato dal
    Dec 2001
    Messaggi
    1,258
    perchè la pagina è un edit.asp e la prima query:

    SQL="SELECT * FROM caricoart WHERE id="&cod

    col successivo:

    ValoreTipoDocumento=rec("tipodocumento")

    mi serve per pescare il valore relazionato all'id del record

    mentre la seconda query:

    sql = "SELECT * FROM TipoDocumento"

    mi serve per pescare tutti i record di quel campo in quella tabella.

    So che non è proprio corretto fare in questo modo, ma nei modi in cui ci ho provato questo è l'unico che funzioni

    Dici che facendo il group funziona? potresti scrivermi il comando sql preciso? non l'ho mai usato

  6. #6
    Moderatore di CMS L'avatar di kalosjo
    Registrato dal
    Jul 2001
    residenza
    In culo alla luna
    Messaggi
    1,999
    Originariamente inviato da Luca1317
    ho sostituito la riga
    sql = "SELECT * FROM TipoDocumento"
    a quella che mi hai suggerito
    sql = "SELECT * FROM TipoDocumento where tipodocumento<>" & ValoreTipoDocumento


    ma mi da un errore alla riga: RecTipoDocumento.Open sql, Conn, 3, 3

    l'errore è:
    Microsoft OLE DB Provider for ODBC Drivers (0x80040E10)
    [Microsoft][Driver ODBC Microsoft Access] Parametri insufficienti. Previsto 1.

    E' ovvio che io ho messo un nome di campo a caso (tipodocumento)
    Devi mettere il nome vero
    Oppure è di tipo testo e allora deve essere

    codice:
    sql = "SELECT * FROM TipoDocumento where tipodocumento<>'" & ValoreTipoDocumento & "'"
    Scusate i puntini di sospensione...... La verità è che non ho argomenti....

  7. #7
    Utente di HTML.it L'avatar di Luca1317
    Registrato dal
    Dec 2001
    Messaggi
    1,258
    Originariamente inviato da kalosjo
    E' ovvio che io ho messo un nome di campo a caso (tipodocumento)
    no no...è proprio quello il campo ci hai beccato


    il campo è di tipo testo...ora provo col tuo suggerimento, grazie

  8. #8
    Utente di HTML.it L'avatar di Luca1317
    Registrato dal
    Dec 2001
    Messaggi
    1,258
    funziona perfettamente...grazie 1000

  9. #9
    Utente di HTML.it L'avatar di Luca1317
    Registrato dal
    Dec 2001
    Messaggi
    1,258
    Ho lo stesso problema nel campo fornitore che, a differenza degli altri, ha un'sql diversa...i valori che popoleranno la select devono essere tutti fornitori

    TipoCliente è un campo nella cartella Rubrica che può essere CLIENTE o FORNITORE

    La select così com'è funziona ma riporta 2 piccoli problemi:

    1) compaiono nella select 2 valori identici (lo stesso problema che abbiamo risolto nei precedenti mess)

    2) quando vado a salvare un valore, per via del replace, viene scritto nel database sotto forma di fornitore%20numero%20quattro

    codice:
    <select name="fornitore" id="fornitore" >
                                  <%
    'Scrivo la mia query sql
    sql = "SELECT * FROM Rubrica WHERE TipoCliente='FORNITORE' order by ID DESC"
    
    'E creo il recordset
    Set RecselectFornitore = Server.CreateObject ("ADODB.Recordset")
    RecselectFornitore.Open sql, Conn, 3, 3
    do while not RecselectFornitore.eof 
    
    valore=RecselectFornitore("nome")
    nome=RecselectFornitore("nome") 
    
    
    nome = Replace(nome ," ","%20")
    
    response.write("<option value=" & nome &">" & valore &"</option>") 
    RecselectFornitore.movenext 
    loop %>
    <option value="<%=replace(rec("fornitore")&"","""","&#34;")%>" selected="selected"><%=replace(rec("fornitore")&"","""","&#34;")%></option>
    </select>

  10. #10
    Utente di HTML.it L'avatar di Luca1317
    Registrato dal
    Dec 2001
    Messaggi
    1,258
    Originariamente inviato da luca1317
    ho sostituito la riga
    sql = "SELECT * FROM TipoDocumento"
    con la riga
    sql = "SELECT * FROM TipoDocumento where tipodocumento<>'" & ValoreTipoDocumento & "'"

    se invece dovessi sostituire questa sql un po più complessa?
    codice:
    sql = "SELECT * FROM Rubrica WHERE TipoCliente='FORNITORE' "

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 © 2026 vBulletin Solutions, Inc. All rights reserved.