- Home
- Categorie
- Coding e Sistemistica
- Altri linguaggi per il web
- inserimento non ammesso dopo un certa data
-
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 Ciao
-
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?
-
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.
-
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.
-
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
-
Nono ho capito spiegati melgio, quando dovrebbe essere fatto il redirect?
-
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
-
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
-
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
-
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"?
-
Mi pare tu stia sulla strada giusta se ricordo bene a memoria ti manca solo il datareader.
Con questo tu dichiari il DataReaderDim 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.
-
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
-
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
-
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!!!
-
ah ok perfetto, quindi va riempito al momento della dichiarazione il datareader.