Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116

    Come validare una data ora divisa in due textbox?

    In un campo di Access di tipo DataOra debbo inserire per l'appunto un data con ora.
    Nella maschera ho due campi Textbox, uno per la data ed uno per l'ora
    :master: vorrei sapere come validare separatamente i due campi per la data e per l'ora e come riconporli in una stringa valida Data-ora da inserire nel database

    Grazie
    Pietro

  2. #2
    Una volta preso il valore e inserito in un oggetto DateTime, puoi usare questa modo per inserire la data e l'ora nei due textbox:
    codice:
    DateTime dt=DateTime.Now; // qui è solo un esempio sulla data attuale
    TextBox3.Text=dt.ToString("dd/MM/yyyy");
    TextBox4.Text=dt.ToString("HH:mm:ss");
    
    //
    // Qui riprendo i due textbox e li inserisco in un nuovo oggetto datetime.
    //
    DateTime dt2=DateTime.Parse(TextBox3.Text+" "+TextBox4.Text);
    Label2.Text=dt2.ToString();
    A riguardo la validazione puoi fare:
    codice:
    <asp:CompareValidator id="CompareValidator1" runat="server" ControlToValidate="TextBox3" ErrorMessage="CompareValidator"
    					Type="Date" Operator="DataTypeCheck"></asp:CompareValidator>
    <asp:CompareValidator id="CompareValidator2" runat="server" ControlToValidate="TextBox4" ErrorMessage="CompareValidator"
    					Type="Date" Operator="DataTypeCheck"></asp:CompareValidator>
    Ciao
    AZ [Microsoft - .NET MVP]
    Mia Home page: http://ciclismo.sitiasp.it
    Asp.Net community: http://www.aspitalia.com
    Il mio blog: http://blogs.aspitalia.com/az

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Ha dirti la verità ho provato ma non sono riuscito a farlo funzionare
    codice:
    		<form id="Form1" method="post" runat="server">
    			
    
    Data:
    				<asp:TextBox id="TextBox3" runat="server"></asp:TextBox><asp:CompareValidator id="CompareValidator1" runat="server" ControlToValidate="TextBox3" ErrorMessage="La data non è valida"
    					Type="Date" Operator="DataTypeCheck"></asp:CompareValidator></P>
    			
    
    Ora:
    				<asp:TextBox id="TextBox4" runat="server"></asp:TextBox><asp:CompareValidator id="CompareValidator2" runat="server" ControlToValidate="TextBox4" ErrorMessage="L'ora non è valida"
    					Type="Date" Operator="DataTypeCheck"></asp:CompareValidator></P>
    			
    
    
    				<asp:Label id="Label2" runat="server"></asp:Label></P>
    			
    
    
    				<asp:Button id="Button1" runat="server" Text="Button"></asp:Button></P>
    		</form>
    e nell'evento load:
    codice:
            Dim dt As DateTime = DateTime.Now ' qui è solo un esempio sulla data attuale
            TextBox3.Text = dt.ToString("dd/MM/yyyy")
            TextBox4.Text = dt.ToString("HH:mm:ss")
            Dim dt2 As DateTime = DateTime.Parse(TextBox3.Text + " " + TextBox4.Text)
            Label2.Text = dt2.ToString()
    Io pensavo di risolvere, convalidando la data (senza ora) nel modo tradizionale, come hai suggerito tu, e il campo ora, con una espressione regolare, per poi ricombinare il tutto in una DataOra valida nel server.
    Comunque, mi sembra strano che un validatore di DataOra convalidi solo una data semplice e non una dataora stile Access, oppure una sola ora, almeno che non mi sfugga proprio qualcosa

    Pietro

  4. #4
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419
    Se ho capito quello che volevi fare, questa pagina dovrebbe andarti bene.
    codice:
    <%@ Page Language="vb"%>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
    <script runat=server>
    Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs)
        Dim dt As DateTime = DateTime.Now ' qui è solo un esempio sulla data attuale
        If Not Page.IsPostBack Then
            TextBox3.Text = dt.ToString("dd/MM/yyyy")
            TextBox4.Text = dt.Hour.ToString & ":" & dt.Minute.ToString & ":" & dt.Second.ToString
        End If
        Validate()
        If Page.IsValid Then
            Dim dt2 As DateTime = DateTime.Parse(TextBox3.Text + " " + TextBox4.Text)
            Label2.Text = dt2.ToString()
        End If
    End Sub
    </script>
    <HTML>
    	<HEAD>
    		<title>ora</title>
    		<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
    		<meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
    		<meta name="vs_defaultClientScript" content="JavaScript">
    		<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
    	</HEAD>
    	<body MS_POSITIONING="GridLayout">
    		<form id="Form1" method="post" runat="server">
    			
    
    Data:
    				<asp:TextBox id="TextBox3" runat="server"></asp:TextBox><asp:CompareValidator id="CompareValidator1" runat="server" ControlToValidate="TextBox3" ErrorMessage="La data non è valida"
    					Type="Date" Operator="DataTypeCheck"></asp:CompareValidator></P>
    			
    
    Ora:
    				<asp:TextBox id="TextBox4" runat="server"></asp:TextBox>
    				<asp:RegularExpressionValidator id="RegularExpressionValidator1" runat="server" ErrorMessage="L'ora non è valida"
    					ControlToValidate="TextBox4" ValidationExpression="([0-1][0-9]|2[0-3]):[0-5][0-9]:[0-5][0-9]"></asp:RegularExpressionValidator></P>
    			
    
    
    				<asp:Label id="Label2" runat="server"></asp:Label></P>
    			
    
    
    				<asp:Button id="Button1" runat="server" Text="Button"></asp:Button></P>
    		</form>
    	</body>
    </HTML>

    Legnetto

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da Legnetto
    Se ho capito quello che volevi fare, questa pagina dovrebbe andarti bene.
    codice:
    ***

    Legnetto
    In effetti è esattamente quello che pensavo di fare
    Comunque sono perplesso che il controllo <asp:CompareValidator non sappia validare una DataOra o una sola Ora. :master: Ho come l'impressione che sia io che non sappia utilizzarlo

    Ciao
    Pietro

  6. #6
    Il comparevalidator come ti ho segnalato verifica la data e l'ora, ma anche una delle due divise.

    Ed è per questo motivo che per visualizzare l'ora devi usare la sintassi:
    codice:
    TextBox4.Text = dt.ToString("HH:mm:ss")
    Che utilizzerà le impostazioni della culture del server per la visualizzazione corretta.

    Se vuoi effettuare il controllo più mirato, puoi usare le regexlib:
    http://www.regexlib.com/Search.aspx?k=time

    Ciao
    AZ [Microsoft - .NET MVP]
    Mia Home page: http://ciclismo.sitiasp.it
    Asp.Net community: http://www.aspitalia.com
    Il mio blog: http://blogs.aspitalia.com/az

  7. #7
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419
    Originariamente inviato da pietro09
    In effetti è esattamente quello che pensavo di fare
    Comunque sono perplesso che il controllo <asp:CompareValidator non sappia validare una DataOra o una sola Ora. :master: Ho come l'impressione che sia io che non sappia utilizzarlo

    Ciao
    Come ho ripetuto più volte non sono un drago in javascript, però controllando il file.js (WebUIValidation che fa funzionare i controlli di validazione) ho visto le verifiche solo per la data senza quelle per l'ora.
    Credo che non sia un tuo problema ma, che non sia proprio possibile con i controlli nativi.
    Provate a verificare anche voi per confermare o smentire quanto ho appena detto.
    Ciao ad entrambi.
    Legnetto

  8. #8
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da AndreaZani
    Il comparevalidator come ti ho segnalato verifica la data e l'ora, ma anche una delle due divise.

    Ed è per questo motivo che per visualizzare l'ora devi usare la sintassi:
    codice:
    TextBox4.Text = dt.ToString("HH:mm:ss")
    Che utilizzerà le impostazioni della culture del server per la visualizzazione corretta.

    Se vuoi effettuare il controllo più mirato, puoi usare le regexlib:
    http://www.regexlib.com/Search.aspx?k=time

    Ciao
    Scusami ma forse son più fuso di quanto pensassi.
    Allora ho:
    codice:
    <asp:TextBox id="TextBox_data" runat="server"/>
    e un
    codice:
    <asp:CompareValidator id="CompareValidator1" runat="server" ErrorMessage="Non è una data valida" ControlToValidate="TextBox_data" Operator="DataTypeCheck" Type="Date"></asp:CompareValidator>
    Riesco a validare solo la data semplice e non la Data + ora o la ora solamente. Dove sbaglio?

    Pietro

  9. #9
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da Legnetto
    Come ho ripetuto più volte non sono un drago in javascript, però controllando il file.js (WebUIValidation che fa funzionare i controlli di validazione) ho visto le verifiche solo per la data senza quelle per l'ora.
    Credo che non sia un tuo problema ma, che non sia proprio possibile con i controlli nativi.
    Provate a verificare anche voi per confermare o smentire quanto ho appena detto.
    Ciao ad entrambi.
    Legnetto
    Non sarai un drago in javascript, ma hai fatto la cosa più intelligente andando a guardare il codice nativo: 30 e lode

    Pietro

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.