• User

    inserimento non ammesso dopo un certa data

    Salve,
    sto scrivendo una pagina aspx per l'inserimento dati in una tabella sql server ma ho la necessità che l'operazione sia possibile fino ad una data precisa. Quest'ultima dovrebbe essere una variabile (configurata di volta in volta); non riesco a venirne a capo, vi ringrazio in anticipo. Saluti


  • Super User

    mmm non ti sei spiegato benissimo. Che vuol dire fino a una data precisa?


  • User

    Innanzitutto ti ringrazio per avermi risposto. Provo a spiegarmi meglio: ho la necessità di poter far effettuare, a chi entra sul mio sito, un inserimento dati attraverso pagina aspx su sql server, ma tale inserimento deve essere possibile fino ad una data precisa. Es. fino al giorno 30 dicembre è possibile prenotare il veglione di capodanno alle ore 00,01 del 31 dicembre non è più possibile! Tutto ciò non mi serve una sola volta ma la data deve rappresentare una variabile. Spero di non aver fatto più confusione di prima :giggle: Ciao


  • Super User

    Beh se tu ad esempio sai che non puoi prenotare per il giorno x dopo il giorno x - 5 (quindi ad esempio per il 30 puoi prenotare fino al 25), nella pagina che inserisce controlli che datatime.now() sia minore di DataPrenotazione - 5 (nel caso che siano 5 giorni)
    Ho capito bene?


  • User

    si proprio così. In effetti ho fatto delle ricerche sia per ottenere uno script a livello sql server per disabilitare l'immissione di dati al verificarsi della condizione, sia scipt aspnet per non permettere l'inserimento disabilitando per esempio il pulsante "submit" al verificarsi della data, ma nulla.


  • Super User

    Se vuoi disabilitare il submit, puoi usare javascript invece di asp.net, in quel caso è abbastanza semplice, usi l'evento onchange della text box della data (se usi una textbox) validi la data e poi la confronti con la variabile new Date() di javascript. Ti consiglio di usare un calendar per la textbox che sceglie la data.


  • User

    ciao, scusami se torno a disturbarti, ma ho pensato che il problema si potrebbe risolvere con un redirect ad una pagina prestabilita, invece di quella per l'inserimento dei dati, al verificarsi della condizione, cioè la data. Però non so come impostare la condizione, se puoi aiutarmi te ne sarei molto grato, saluti


  • Super User

    Nono ho capito spiegati melgio, quando dovrebbe essere fatto il redirect?


  • User

    all'interno del database sql server, in una tabella, quindi in un campo, inserisco una data. Nella pagina di inserimento dati vorrei che al verificarsi della data inserita nel campo di cui sopra si esegue un redirect ad un altra pagina. Spero di essere stato chiato, comunque grazie, ciao


  • User Attivo

    Secondo me puoi risolvere in questo modo:

    Se ho capito bene hai una tabella offerte dove hai tutti i dati relativi alle offerte, aggiungi un campo datetime o smalldatetime chiamandolo "ultimatum" o come preferisci tu. Quando inserisci una nuova offerta immetti anche la data e l'ora entro la quale puoi prenotare.

    Ora quando il cliente tenta di prenotare nella pagina dovresti prima effettuare una query per recuperare il valore ultimatum, poi lo confronti con la data e l'ora attuale, se ci si trova entro questa data fai procedere alla prenotazione il cliente altrimenti esegui il redirect che volevi.

    Questo è in linea teorica, se hai bisogno di una mano per effettuarlo praticamente (gli script intendo) chiedi pure qui.

    Saluti


  • User

    scusa se non ti ho risposto subito ma è un progetto che "coltivo" nel tempo libero (cioè quasi mai.. ). In effetti è come tu dici. Dovrei confrontare a data odierna con quella contenuta in una tabella (ultimo record inserito) e se la data odierna ha superato quella "di scadenza" fare in modo che non si possa procedere con l'immissione di dati in un altra tabella; magari potrebbe essere più facile fare un redirect ad una pagina di errore. l'istruzione sql per recuperre il dato dalla tabella non è un problema, quello che mi manca è il "confronto". Potrei farlo con If..then... ma con aspnet non ho mai provato in VB mi è facile. Se puoi aiutrmi te ne sarei grato. saluti


  • User

    Sono riuscito ad elaborare il codice.
    Eccolo:

    
    <%@ Page language="VB" debug="true"%>
    <%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Data.SQLClient" %>
    <%@ import namespace="system.datetime" %>
    <script runat="server">
    Sub page_load(obj As object, e As eventargs)
    Dim dtOggi As date
    Dim dtMai As date
    dtMai=#06/11/2008#
    dtOggi=system.datetime.now.ToShortDateString()
    If dtOggi >= dtMai Then Response.Redirect("/html/errore.aspx")
    End sub
    </script>
    
    

    Lo scipt funziona perfettamente, ho solo un problema che non risco a risolvere, come posso fare per recuperare il valore da un campo di una tabella
    ovviamente continuando a scrivere in VB, io ho provato ad aggiungere ```

    Dim cnn As New SQLConnection("DRIVER={SQL SERVER};SERVER=xxxxxxxx;DATABASE=xxxxxx;Uid=xxxx;Pwd=xxxx;")
    Dim objCommand As New SqlCommand("Select datasc from provatempo ORDER by datasc DESC", objConn)
    objCommand.Connection.Open()

     
    che ho messo subito dopo 
     
    

    Dim dtOggi As date

     
    eliminando la riga successiva. Ma non risco ad andare oltre. Come faccio ad assegnare alal variabile dtMai il valore della campo "datasc"?

  • User Attivo

    Mi pare tu stia sulla strada giusta se ricordo bene a memoria ti manca solo il datareader.
    Con questo tu dichiari il DataReader

                                                     
    Dim dr As New SqlDataReader()
    
    ```per riempire il datareader con i dati restituiti dalla query dopo l'istruzione
    objCommand.Connection.Open()
    
    devi inserire questo:
    

    dr = objCommand.ExecuteReader() ' riempie il datareader
    While dr.Read()
    dtOggi = dr("datasc") 'recuperi il valore e lo assegni alla variabile
    ..... 'esegui i controlli che devi eseguire qui
    End While
    dr.close
    ........

    
    Fammi sapere se funziona.

  • User

    Ti ringrazio.
    ho provato con i tuoi consigli
    e ho fatto così

    
    <%@ Page language="VB" debug="true"%>
    <%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Data.SQLClient" %>
    <%@ import namespace="system.datetime" %>
    
    <script runat="server">
    Sub page_load( Source as Object, obj As object, e As eventargs)
    
    Dim dtOggi As date
    dtOggi=system.datetime.now.ToShortDateString()
     Dim cnn As New SQLConnection("DRIVER={SQL SERVER};SERVER=xxxx;DATABASE=xxxxx;Uid=xxxxx;Pwd=xxxxx;")
            Dim objCommand As New SqlCommand("Select datasc from provatempo ORDER by datasc DESC", objConn)
    Dim dr As New SqlDataReader()
    objCommand.Connection.Open()
    dr = objCommand.ExecuteReader() ' riempie il datareader
    While dr.Read()
        dtMai = dr("datasc")  'recuperi il valore e lo assegni alla variabile   
        ..... 'esegui i controlli che devi eseguire qui
    End While
    dr.close
    cnn.close
    If dtOggi >= dtMai Then Response.Redirect("/html/errore.aspx")
    End sub
    </script>
    
    

    ma mi da un errore a questa riga

    
      Dim objCommand As New SqlCommand("Select datasc from provatempo ORDER by datasc DESC", objConn)
    
    

    In effetti non ho bisogno di fare il confronto con record multipli, perchè nella tabella ne avrò uno solo comunque grazie ho capito un altra cosa 🙂

    Saluti


  • User

    ho corretto la riga che ti scrivevo sopra, adesso l'errore è sulla riga del sqldatareader

    
    <%@ Page language="VB" debug="true"%>
    <%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Data.SQLClient" %>
    <%@ import namespace="system.datetime" %>
     
    <script runat="server">
    Sub page_load( Source as Object, obj As object, e As eventargs)
     
    Dim dtOggi As date
    dtOggi=system.datetime.now.ToShortDateString()
     Dim cnn As New SQLConnection("DRIVER={SQL SERVER};SERVER=cvxxxx;DATABASE=xxxx;Uid=xxxx;Pwd=xxxx;")
            Dim objCommand As New SqlCommand("Select datasc from provatempo")
    Dim dr As New SqlDataReader()
    objCommand.Connection.Open()
    dr = objCommand.ExecuteReader() ' riempie il datareader
    While dr.Read()
        dtMai = dr("datasc")  'recuperi il valore e lo assegni alla variabile   
       If dtOggi >= dtMai Then Response.Redirect("/html/errore.aspx")
    End While
    dr.close
    cnn.close
    End sub
    </script>
    
    

    precisamente mi da errore qui:

    
    Dim dr As New SqlDataReader()
    
    

    ciao


  • User

    :wink3:😄 Ho risolto finalmente! Ecco il codice esatto per il funzionamento:

    
    <%@ Page language="VB" debug="true"%>
    <%@ Import Namespace="System.Data" %>
    <%@ Import Namespace="System.Data.SQLClient" %>
    <%@ import namespace="system.datetime" %>
    
    <script runat="server">
    Sub page_load(obj As object, e As eventargs)
    
    Dim DtMai As date
    Dim dtOggi As date
    dtOggi=system.datetime.now.ToShortDateString()
    Dim cnn As New 
    SQLConnection("SERVER=XXXX;DATABASE=XXXX;Uid=XXXX;Pwd=XXXX;")
     
    Dim objCommand As New SqlCommand("Select datasc from provatempo", cnn)
    cnn.open() 
    dim dr as SqlDataReader= objCommand.ExecuteReader()
    While dr.Read()
        dtMai = dr("datasc")  'recuperi il valore e lo assegni alla variabile   
       If dtOggi >= dtMai Then Response.Redirect("/html/errore.aspx")
    End While
    dr.close
    cnn.close
    End sub
    </script>
    
    

    Grazie a tutti per avermi aiutato!!!:sun:


  • User Attivo

    ah ok perfetto, quindi va riempito al momento della dichiarazione il datareader.