Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1
    Utente di HTML.it L'avatar di fulbox
    Registrato dal
    Apr 2001
    Messaggi
    80

    controllo campi numerici

    Ho un Db Access con due campi numerici dove inserisco dei valori iniziali, vorrei fare un controllo su questi campi, lo script è il seguente


    <%
    CString = "DBQ=" & Server.Mappath("_db/valori.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};"
    Set OBJdbConnection = server.CreateObject("adodb.connection")
    OBJdbConnection.open Cstring
    Set RS = Server.CreateObject("ADODB.Recordset")
    RS.Open "SELECT * from valori", OBJdbConnection,2,3
    RS.AddNew
    RS("ultimo_valore") = Request.Form("ultimo_valore")
    RS("valore_iniziale") = Request.Form("valore_iniziale")
    RS.Update
    if Request.Form("valore_iniziale") > Request.Form("ultimo_valore") then
    response.redirect("index.asp")
    end if
    response.Write("Valore minore di quello iniziale")
    RS.Close
    set RS=Nothing
    set OBJdbConnection=Nothing
    %>

    in pratica vorrei che il database si aggiornasse solo se il valore inserito sia maggiore di quello iniziale.
    Vi ringrazio anticipatamente

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Inserito da chi e dove?
    Nel tuo scipt prima aggiorni e poi controlli...

    Roby

  3. #3
    Utente di HTML.it L'avatar di fulbox
    Registrato dal
    Apr 2001
    Messaggi
    80
    cioè l'utente inserirà un valore ad (es. 800) tramite una form questo numero sarà aggiunto al database solo se è maggiore di quello inserito da me come default (es. 900), cioè il confronto dovrà avvenire sui numeri inseriti spero di essere stato chiaro
    ho semplificato il Db creando un solo campo di tipo numerico e non due anche perchè non mi serviva a niente avere due campi :master:

    <%
    valore=request.Form("valore")
    CString = "DBQ=" & Server.Mappath("_db/valore.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};"
    Set OBJdbConnection = server.CreateObject("adodb.connection")
    OBJdbConnection.open Cstring
    Set RS = Server.CreateObject("ADODB.Recordset")
    RS.Open "SELECT * from offerte", OBJdbConnection,2,3

    if (RS("valore")) > valore then

    RS.AddNew
    RS("valore") = Request.Form("valore")
    RS.Update
    RS.Close

    response.redirect("index.asp")
    else
    response.Write("valore inferiore a quello iniziale")
    end if
    set RS=Nothing
    set OBJdbConnection=Nothing
    %>

  4. #4
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    codice:
    <% 
    valore = trim(request.Form("valore") )
    CString = "DBQ=" & Server.Mappath("_db/valore.mdb") & ";Driver={Microsoft Access Driver (*.mdb)};" 
    Set OBJdbConnection = server.CreateObject("adodb.connection") 
    OBJdbConnection.open Cstring 
    Set RS = Server.CreateObject("ADODB.Recordset") 
    RS.Open "SELECT MAX(valore) AS max_valore from offerte", OBJdbConnection,
    if (RS("max_valore")) < valore then 
    
    RS.AddNew 
    RS("valore") = valore
    RS.Update 
    RS.Close 
    
    response.redirect("index.asp") 
    else 
    response.Write("valore inferiore a quello iniziale") 
    end if 
    set RS=Nothing 
    set OBJdbConnection=Nothing 
    %>
    Roby

  5. #5
    Utente di HTML.it L'avatar di fulbox
    Registrato dal
    Apr 2001
    Messaggi
    80
    mi stai dicendo ri creare due campi nel db uno valore e l'altro max_valore e poi fare il confronto tra i due? considerando come max_valore quello inserito da me come default e valore quello che inseriranno gli utenti giusto??? :master:

  6. #6
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Il punto è che il campo non necessariamente, mi sembra di capire, conrterrà un solo valore.
    Tu inserisci solo il primo ma poi gli altri seguono se superiori al tuo o se superiori a tutti quelli già inseriti?
    Se ci sono più valori tu sai sempre che il tuo è il primo dell'elenco?

    Roby

  7. #7
    Utente di HTML.it L'avatar di fulbox
    Registrato dal
    Apr 2001
    Messaggi
    80
    Forse mi sono spiegato male, , allora vediamo se riesco ad essere più chiaro, io inserisco un valore come default, il primo utente che vorrà inserire un valore lo potrà fare solo se è maggiore di quello inserito da me, un secondo utente lo potrà fare solo se il valore che inserirà è maggiore di quello inserito dall'utente precedente e così via....
    speriamo che questa volta riesco a farmi capire...
    Grazie per la pazienza

  8. #8
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Allora avevo capito bene.
    Va bene l'esempio che ti ho fatto prima.

    Roby

  9. #9
    Utente di HTML.it L'avatar di fulbox
    Registrato dal
    Apr 2001
    Messaggi
    80
    Allora questa è al pagina della form....

    <%
    ConnectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("_db/valori.mdb")
    Set conn = Server.CreateObject("ADODB.Connection")
    Conn.open ConnectString
    sql = "SELECT MAX(max_valore) AS max_valore FROM valori"
    Set rsLinks = Server.CreateObject("ADODB.Recordset")
    rsLinks.Open sql, conn,3,3
    %>

    <form action="process_valori.asp" method="post" name="valori">
    <%=rsLinks("max_valore")%>
    <input name="max_valore" type="text">
    <input name="button" type="submit" value="ok">
    </form>

    Tutto funziona bene.... mi stampa a video il record con valore più alto poi inserisco un altro valore maggiore di quello stampato a viedo e mando la form alla pagina process_valori.asp


    <%
    max_valore = request.Form("max_valore")

    ConnectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("_db/offerte.mdb")
    Set conn = Server.CreateObject("ADODB.Connection")
    Conn.open ConnectString
    sql = "SELECT max_valore FROM valori"
    Set RS = Server.CreateObject("ADODB.Recordset")
    RS.Open sql, conn,2,3

    if RS("max_valore") < max_valore then


    RS.AddNew
    RS("max_valore") = max_valore
    RS.Update
    RS.Close

    response.redirect("index.asp")
    else
    response.Write("valore inferiore a quello iniziale")

    end if
    set RS=Nothing
    set OBJdbConnection=Nothing
    %>

    mi inserisce i valori indipendentemente dalla condizione che pongo, siano essi maggiori o minori....dove sbaglio????

  10. #10
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Nella prima SQL se hai un campo che si chiama mx_valore non puoi fare una aggregazione chiamandola con il nome del campo... mettici un po' di fantasia.
    Esempio:
    codice:
    sql = "SELECT MAX(max_valore) AS valore_massimo  FROM valori"
    Rifaccio tutto:
    pagina form
    codice:
    <% 
    ConnectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("_db/valori.mdb") 
    Set conn = Server.CreateObject("ADODB.Connection") 
    Conn.open ConnectString 
    sql = "SELECT MAX(max_valore) AS valore_massimo FROM valori" 
    Set rsLinks = Server.CreateObject("ADODB.Recordset") 
    rsLinks.Open sql, conn,3,3 
    %> 
    <form action="process_valori.asp" method="post" name="valori"> 
    <%=rsLinks("valore_massimo")%> 
    <input name="valore_digitato" type="text" /> 
    <input name="valore_massimo" value="<%=rsLinks("valore_massimo")%>" type="hidden" />  
    <input name="button" type="submit" value="ok"> 
    </form> 
    ...
    ...

    Seconda pagina, ti basta il recupero dei due valori evitandoti una select inutile. Se quaello digitato è maggiore di quello passato in hidden (il valore_massimo) allora fai la INSERT INTO:

    codice:
    <% 
    valore_massimo = trim(request.Form("valore_massimo"))
    valore_digitato = trim(request.Form("valore_digitato")) 
    
    if valore_digitato > valore_massimo then
    ConnectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("_db/offerte.mdb") 
    Set conn = Server.CreateObject("ADODB.Connection") 
    Conn.open ConnectString 
    sql = "INSERT INTO valori (max_valore) VALUES ("& valore_digitato &")" 
    conn.Execute(sql)
    
    set OBJdbConnection=Nothing 
    response.redirect("index.asp") 
    else 
    response.Write("valore inferiore a quello iniziale") 
    end if 
    %>

    Roby

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.