Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    29

    recupero campo da databse in base a scelta select

    buongiorno a tutti, ho realizzato una pagina html popolata da diverse select.
    Attraverso le select l'utente compie delle scelte e alla fine cliccando un pulsante dovrebbe ottenere come risultato 2 campi del record di database (access) identificato dalle scelte effettuate.

    Esempio:

    Tabella_db:
    - id
    - quantità
    - formato
    - colore
    - tipologia
    - lavorazione
    - prezzo netto
    - prezzo lordo

    Select (popolate con gli stessi dati dei campi del db) inserite nella pagina:
    - sel_quantita
    -- 100
    -- 200
    -- 300
    - sel_formato
    -- 20x20mm
    -- 30x30mm
    -- 40x40mm
    - sel_colore
    -- bianco
    -- rosso
    -- giallo
    - sel_tipologia
    -- .........
    - sel_lavorazione
    -- .........

    Alla fine delle select dovrei inserire un pulsante che, una volta cliccato, estrapoli gli ultimi 2 campi (prezzo netto e prezzo lordo) del record di db identificati dalla scelta effettuata mediante le select, ed inserisca i relativi valori in 2 campi distinti al di sotto del pulsante.

    QUindi, se ad esempio il record è così composto:
    1,100,30x30mm,giallo,tipo,lavoraz,€100,€120

    e l'utente sceglie quelle opzioni dalle select, il sistema dovrebbe dare come risultato:
    - € 100
    - € 120

    Spero di essere stato abbastanza chiaro.

    E' possibile gestire il tutto attraverso ASP e Access?
    Potreste gentilmente indicarmi un'esempio concreto?

    Vi ringrazio in anticipo per il vostro cortese e prezioso aiuto.

  2. #2
    Allora, io farei così:
    per il campo colore (che credo sia di tipo testo) farei una select (combobox) di nome strSel_colore, mentre per il campo quantita (che credo sia di tipo numerico), la select (combobox) numSel_qualita. In pratica ogni select (combobox) ha come nome lo stesso nome del campo della tabella al quale è riferito con il prefisso strSel_ se si tratta di campo di tipo testo o meno, oppure numSel_ se si tratta di campo di tipo numerico.
    A questo punto la query è semplice da realizzare dinamicamente:
    codice:
    ' inizializzo la stringa sql
    sql = "SELECT * FROM nomeTabella WHERE 1 = 1"
    
    for each item in request.form ' la form deve essere con method="post"
      if left(item,7) = "strSel_" then ' intercetto i campi che iniziano per strSel_
        campo = replace(item,"strSel_","") ' tolgo dal nome campo form il suffisso strSql_
        valore = request.form(item) ' memorizzo il valore passato
        ' se il valore c'è allora concateno campo = valore nella stringa sql
        if len(valore) > 0 then  sql = sql & " AND " & campo = '" & valore & "'"
      elseIf left(item,7) = "numSel_" then ' idem come sopra per i campi che iniziano per numSql_
        campo = replace(item,"numSel_","")  ' idem come sopra...
        valore = request.form(item) ' idem come sopra...
        ' idem come sopra con l'aggiunta del controllo che il valore sia davvero numerico
        ' altrimenti la query potrebbe andare in errore
        if len(valore) > and isNumeric(valore) then sql = sql & " AND " & campo = " & valore 
      end if
    next
    
    ' aggiungo alla stringa sql l'eventuale ordinamento dei risultati...
    sql = sql & " ORDER BY campoX ASC"
    
    ' per testare a video stampiamo sulla pagina la stringa sql...
    response.write sql

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    29
    ma, in questo modo non stampo a video tutto il record?
    a me interessa stampare solo gli ultimi 2 campi del record individuato dalle scelte effettuate con le select ed inserire i valori dei 2 campi in due righe diverse.

    Scusa ma non sono molto pratico e, pur apprezzando il tuo aiuto, credo di non averne capito il senso.

  4. #4
    codice:
    ' inizializzo la stringa sql
    sql = "SELECT [prezzo netto] AS PN, [prezzo lordo] AS PL FROM nomeTabella WHERE 1 = 1"
    
    for each item in request.form ' la form deve essere con method="post"
      if left(item,7) = "strSel_" then ' intercetto i campi che iniziano per strSel_
        campo = replace(item,"strSel_","") ' tolgo dal nome campo form il suffisso strSql_
        valore = request.form(item) ' memorizzo il valore passato
        ' se il valore c'è allora concateno campo = valore nella stringa sql
        if len(valore) > 0 then  sql = sql & " AND [" & campo & "] = '" & valore & "'"
      elseIf left(item,7) = "numSel_" then ' idem come sopra per i campi che iniziano per numSql_
        campo = replace(item,"numSel_","")  ' idem come sopra...
        valore = request.form(item) ' idem come sopra...
        ' idem come sopra con l'aggiunta del controllo che il valore sia davvero numerico
        ' altrimenti la query potrebbe andare in errore
        if len(valore) > and isNumeric(valore) then sql = sql & " AND [" & campo & "] = " & valore 
      end if
    next
    
    ' aggiungo alla stringa sql l'ordinamento per ID Ascendente
    sql = sql & " ORDER BY [ID] ASC"
    
    set conn = server.createObject("ADODB.Connection")
    conn.open connString ' ovviamente al posto di connString devi mettere la tua stringa di connessione...
    
    set rs = conn.execute(sql)
    
    if not rs.eof then
      for i = 1 to 2
        if not rs.eof then
          response.write rs("PN") & " " & rs("PL") & "
    "
        else
          exit for
        end if
      rs.moveNext
      next
    else
      response.write "Nessun risultato disponibile"
    end if
    
    rs.close
    set rs = nothing
    
    conn.close
    set conn = nothing
    Non ho altro modo per fartelo comprendere.

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2007
    Messaggi
    29
    ok, rileggendo tutto il codice mi sembra di capire la maggior parte delle istruzioni...

    che istruzione devo dare al pulsante oltre al method POST?
    devo racchiudere tutto il codice che mi hai indicato in una funzione che viene richiamata al click del pulsante?

  6. #6
    Il pulsante, basta un semplice submit.
    Il codice che ti ho scritto è quello della pagina che metterai nell'action della form.
    Nella pagina con la form devi solo avere l'accortezza di dare i name alle varie select con il criterio che ti ho esposto prima.
    Ad esempio, per il campo colore (che suppongo sul db sia di tipo testo) fai una select con name="strSel_colore", mentre per il campo quantita (che suppongo sul db sia di tipo numerico) fai una select con name="numSel_quantita".
    Il criterio sta nel prefisso numSel_nomeCampo per i campi di tipo numerico e strSel_nomeCampo per i campi di tipo testo o memo.

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.