Newsgroup: it.comp.lang.visual-basic
Titolo: formato data

ciao a tutti,
vi espongo il mio problema:
ho una casella TEXT dove l'utente inserisce una data e non riesco a capire
come posso fare scrivere solo i numeri senza la "/".
Ad esempio se scrivo una data 21/12/2007, non esiste un modo perchè l'utente
scriva solo i numei senza la "/" ?
Ho provato a definire il formato del 'campo' sia nel database access, sia
nelle proprietà del campo 'text', tuttavia non succede nulla ed è necessario
scrivere sempre la "/" .
Qualcuno che ha già affrontato il problema può aiutarmi???


Usa un DateTimePicker o una MaskedEditBox impostandogli la proprietà Mask a 
"00/00/0000"
Ciao 


gestisci uno degli eventi Key e butta via tutti i segni tranne i numeri; 
cosi oltre alla barra ti eviti anche le lettere
-- 
Greg 

Alfonso ha scritto:

Io ho fatto così (il Text Box  nel quale inserire la data si chiama
txtDatFat):
Private Sub txtDatFat_LostFocus()
  ' Trasforma nel formato "dd/mm/yyyy"
  txtDatFat = StrToDate(txtDatFat)
End Sub
Public Function StrToDate(Data1 As String) As String
  ' Trasforma una data nel formato dd/mm/yyyy
  ' Trasformo eventuali "-" in "/"
  Data1 = Replace(Data1, "-", "/")
  StrToDate = Data1
  If Mid$(Data1, 3, 1) <> "/" Then
    Select Case Len(Data1)
      Case 6
        If Right$(Data1, 2) >= "30" Then
          StrToDate = Left$(Data1, 2) & "/" & Mid$(Data1, 3, 2) & "/
19" & Right$(Data1, 2)
        Else
          StrToDate = Left$(Data1, 2) & "/" & Mid$(Data1, 3, 2) & "/
20" & Right$(Data1, 2)
        End If
      Case 8
        StrToDate = Left$(Data1, 2) & "/" & Mid$(Data1, 3, 2) & "/" &
Right$(Data1, 4)
    End Select
  End If
End Function
In questo modo puoi inserire la data di oggi semplicemente digitando
280607 (un anno maggiore o uguale a 30 viene considerato del 1900)
Ciao
Nedi

Grazie a tutti per l'attenzione!
Mi metto subito all'opera! 

Alfonso ha scritto:


Io ho creato una funzione che accetta valori da 1 a 8 caratteri del tipo
X - conversione in 0X/MM/AAAA dove MM e AAAA sono il mese e l'anno
corrente 
XX - convers. in XX/MM/AAAA dove MM e AAAA sono il mese e l'anno corrente 
XXXX  conversione in XX/XX/AAAA dove AAAA sono il mese e l'anno corrente 
e varie altre conversioni della data. In particolare se la data non è una
data valida il campo viene azzerato oppure compare il messaggio di data
non corretta.
Anche se sembra molto smanettatat la uso sempre in tutti i miei programmi
e va che è una meraviglia.
la funzione da caricare nell'evento TEXT_lostfocus e' la seguente:
Public Function TestData(d As String, Optional Fl As Integer = 1) As String
   ' FL =1 Visualizza il messaggio di Errore di formato data altrimenti lo
salta
   '
   ' Ritorna una data nella forma GG/MM/AAAA a partire da una possibile
   ' data D in formato stringa verificando che sia valida, altrimenti la
data D viene annullata
   ' la data D la si può inserire nei formati seguenti
   ' G, GG - Giorno su 1 o due cifre (+ mese e anno correnti in automatico)
   ' GMM, GGMM - Giorno su 1 o due cifre e mese (+ anno corrente in
automatico)
   ' e poi nei formati GGMMAA, GGMMAAAA, GG/MM/AA, GG/MM/AAAA
 
   ' il giorno deve esistere - ovvero D>0
   If Val(d) > 0 Then
      Select Case Len(d)
         Case 1, 2
            ' 1 o 2 caratteri: G o GG + mese e anno corrente
            ' Aggiungo lo 0 in caso di giorno con 1 cifra
            d = Format(d, "0#") + Format(Date, "/mm/yyyy")
         Case 3
            ' 3 caratteri: GMM + anno corrente
            If Left$(d, 1) = "0" Then
               ' Formato 0GM per esempio 054 cioè 05/04/aaaa
               ' lo converto nella forma GGMM
               d = Left$(d, 2) + "0" + Right$(d, 1)
            End If
            If Mid$(d, 2, 1) = "/" Or Mid$(d, 2, 1) = "-" Or Mid$(d, 2, 1)
= "." Then
               ' 4 caratteri:(G/M, G-M, G.M) + anno corrente
               d = "0" + Left$(d, 1) + "/0" + Right$(d, 1) + Format(Date,
"/yyyy")
            Else
               'Formato GMM oppure GGMM e aggiungo l'anno corrente
               ' aggiungo lo 0 in caso di 3 cifre
               d = Format(d, "0#/##") + Format(Date, "/yyyy")
            End If
         Case 4
            ' 4 caratteri: (G/MM, G-MM, 
G.MM
) (gg/m, GG-m, GG.m)+ anno
corrente
            If Mid$(d, 2, 1) = "/" Or Mid$(d, 2, 1) = "-" Or Mid$(d, 2, 1)
= "." Then
               ' 4 caratteri:(G/MM, G-MM, 
G.MM
) + anno corrente
               d = "0" + Left$(d, 1) + "/" + Right$(d, 2) + Format(Date,
"/yyyy")
            ElseIf Mid$(d, 3, 1) = "/" Or Mid$(d, 3, 1) = "-" Or Mid$(d,
3, 1) = "." Then
               ' 4 caratteri: (GG/M, GG-M, GG.M) + anno corrente
               Mid$(d, 3, 1) = "0"
               d = Format(d, "0#/0#") + Format(Date, "/yyyy")
            Else
               ' Formato GGMM e aggiungo l'anno corrente
               d = Format(d, "##/##") + Format(Date, "/yyyy")
            End If
         Case 5
            ' Formato GG/MM oppure GG-MM oppure 
GG.MM
 e aggiungo l'anno
corrente
            If Mid$(d, 3, 1) = "/" Or Mid$(d, 3, 1) = "-" Or Mid$(d, 3, 1)
= "." Then d = Format(d, "0#/##") + Format(Date, "/yyyy")
         Case 6
            ' 6 caratteri possibile formato GGMMAA
            d = Format(d, "##/##/##")
         Case 8 And Val(Right$(d, 4)) > 1000
            ' 8 caratteri possibile formato GGMMAAAA
            d = Format(d, "##/##/####")
         Case 8 And Val(Mid$(d, 3, 1)) = 0 And Val(Mid$(d, 6, 1)) = 0
            ' 8 caratteri nel formato ggXmmXaa - dove X un qualunque
carattere
            d = Left$(d, 2) + "/" + Mid$(d, 4, 2) + "/" + Right$(d, 2)
         Case 10 And Val(Mid$(d, 6, 1)) = 0
            '10 caratteri nel formato ggXmmXaaaa - dove X un qualunque
carattere
            d = Left$(d, 2) + "/" + Mid$(d, 4, 2) + "/" + Right$(d, 4)
         Case Else
            d = "--" ' forzo l'inserimento a una data non valida
      End Select
   Else
      d = "--" ' forzo l'inserimento a una data non valida
   End If
   ' a questo punto la data è sempre nel formato GG/MM/AAAA o GG/MM/AA
 
   ' Verifico che sia una data valida
   If IsDate(d) Then
      ' pone la data nel formato GG/MM/AAAA - vedi conf. Data di Windows
      d = Format(d, "short date")
   Else
      If Fl = 1 Then
        MsgBox "Inserire la data nei formati disponibili" + vbCrLf + _
        "G, GG, GMM, GGMM, GGMMAA, GGMMAAAA, GG/MM/AA GG/MM/AAAA" + vbCrLf
+ _
        "La data immessa ( " & d & " ) viene annullata, in quanto
illecita!", vbCritical, "Immissione non corretta"
      End If
      ' data non corretta, annullo il suo valore
      d = ""
   End If
   TestData = d
End Function
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it