• 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.