|
| HOMEPAGE | INDICE FORUM | REGOLAMENTO | ::. | NEI PREFERITI | .:: | RSS Forum | RSS News | NEWS web | NEWS software | |
| PUBBLICITA' | | | ARTICOLI | WIN XP | VISTA | WIN 7 | REGISTRI | SOFTWARE | MANUALI | RECENSIONI | LINUX | HUMOR | HARDWARE | DOWNLOAD | | | CERCA nel FORUM » | |
01-08-2001, 18.24.28 | #1 |
Junior Member
Registrato: 26-03-2001
Messaggi: 129
|
Come faccio a fare apparire una msgbox quando l'utente inserisce dei dati sbagliati? Praticamente in un campo "data" se l'utente digita del testo deve apparire una finestra ke avverte ke l'utente ha digitato sbagliando! Grazie |
09-08-2001, 16.33.50 | #2 |
Newbie
Registrato: 19-02-2001
Messaggi: 31
|
Non ricordo esattamente il nome della funzione ma ce ne deve essere una che fa tutto ciò, cioè se tu gli passi un testo, lui restituisce true se si può considerare una data, altrimenti false.
Si dovrebbe chiamare IsDate() o qualcosa del genere. Ciao Emiliano |
09-08-2001, 19.44.07 | #3 |
Junior Member
Registrato: 15-05-2001
Loc.: Padova
Messaggi: 58
|
isdate () Restituisce un valore Boolean che indica se è possibile o meno convertire un'espressione in data
|
09-08-2001, 19.45.55 | #4 |
Junior Member
Registrato: 15-05-2001
Loc.: Padova
Messaggi: 58
|
x pina io credo che tu ti debba fare una funzione di controllo caratteri se mi dici come vuoi venga impostato la data ti posso aiutare
|
14-08-2001, 15.20.03 | #5 |
Junior Member
Registrato: 15-05-2001
Loc.: Padova
Messaggi: 58
|
prova a inserire questo codice in un modulo
Function delete(Stringa As String, Posizione As Integer) As String ' questa funzione cancella un carattere If Posizione = 0 Then del = "" delete = del Exit Function End If If Len(Stringa) = 0 Then del = "" delete = del Exit Function End If lunghezza = Len(Stringa) If Posizione = lunghezza Then ccc = Mid(Stringa, 1, lunghezza - 1) del = ccc delete = del Exit Function End If If Posizione < lunghezza Then ccc = Mid(Stringa, 1, Posizione - 1) vvv = Mid(Stringa, Posizione + 1) del = ccc + vvv delete = del Exit Function End If If Posizione > lunghezza Then del = -1 delete = del Exit Function End If delete = del End Function Function ControlloData(Stringa As String, Posizione As Integer, Char As String) As Integer 'questa funzione controlla che nel campo testo venga scritta una data, dato un separatore ' per questa funzione è necessario sul form ci sia un'oggetto textbox e seguente routine di evento 'Private Sub [nomeOggetto]_Change() 'Dim data As String 'Dim pos As Integer ' data = [nomeOggetto].Text ' pos = [nomeOggetto].SelStart ' cntr = ControlloData(data, pos, "/") ' If cntr = -1 Then ' data = delete(data, pos) ' [nomeOggetto].Text = data ' [nomeOggetto].SelStart = pos ' End If ' 'End Sub controllo = 0 On Error GoTo Hell If Len(Stringa) > o Then carattere = Mid(Stringa, Posizione, 1) If Posizione = 0 Then controllo = -1 'cursore sul primo carattere caratteri ammessi 0,1,2,3 ElseIf Posizione = 1 Then If Asc(carattere) > 47 And Asc(carattere) < 52 Then controllo = 0 Else controllo = -1 End If 'cursore sul secondo carattere caratteri ammessi 0,1,2,3,4,5,6,7,8,9, ElseIf Posizione = 2 Then If Asc(carattere) > 47 And Asc(carattere) < 58 Then controllo = 0 Else controllo = -1 End If 'cursore sul terzo carattere l'unico carattere ammesso è quello designato da Char ElseIf Posizione = 3 Then If Asc(carattere) = Asc(Char) Then controllo = 0 Else controllo = -1 End If 'cursore sul quarto carattere caratteri ammessi 0,1 ElseIf Posizione = 4 Then If Asc(carattere) > 47 And Asc(carattere) < 50 Then controllo = 0 Else controllo = -1 End If 'cursore sul quinto carattere caratteri ammessi 0,1,2,3,4,5,6,7,8,9 ElseIf Posizione = 5 Then If Asc(carattere) > 47 And Asc(carattere) < 58 Then controllo = 0 Else controllo = -1 End If 'cursore sul sesto carattere l'unico carattere ammesso è quello designato da Char ElseIf Posizione = 6 Then If Asc(carattere) = Asc(Char) Then controllo = 0 Else controllo = -1 End If 'cursore sul settimo carattere caratteri ammessi 0,1,2,3,4,5,6,7,8,9 ElseIf Posizione = 7 Then If Asc(carattere) > 47 And Asc(carattere) < 58 Then controllo = 0 Else controllo = -1 End If 'cursore sul ottavo carattere caratteri ammessi 0,1,2,3,4,5,6,7,8,9 ElseIf Posizione = 8 Then If Asc(carattere) > 47 And Asc(carattere) < 58 Then controllo = 0 Else controllo = -1 End If 'cursore sul nono carattere caratteri ammessi 0,1,2,3,4,5,6,7,8,9 ElseIf Posizione = 9 Then If Asc(carattere) > 47 And Asc(carattere) < 58 Then controllo = 0 Else controllo = -1 End If 'cursore sul decimo carattere caratteri ammessi 0,1,2,3,4,5,6,7,8,9 ElseIf Posizione = 10 Then If Asc(carattere) > 47 And Asc(carattere) < 58 Then controllo = 0 Else controllo = -1 End If End If End If ControlloData = controllo Hell: controllo = -1 cotrollodata = controllo Exit Sub End Sub speriamo vada bene |
21-08-2001, 17.30.41 | #6 |
Newbie
Registrato: 20-06-2001
Loc.: Alma Mater Tergeste
Messaggi: 49
|
dunque, oltre al metodo di xegallo, io sfrutto questo sistema:
1) limitiamo il numero di caratteri immissibili nella textbox. Per la data ci bastano al massimo 10 caratteri tutti numerici con in più il separatore "/". Per questo si può benissimo utilizzare una funzione da richiamare poi nell'evento "Keypress" della TextBox. Ecco la funzione: Function ChkInput(vKeyAscii As Integer) Dim StringD As String StringD = "1234567890/" If vKeyAscii = 8 Then ChkInput = vKeyAscii: Exit Function 'è il tasto di delete If InStr(StringD, Chr(vKeyAscii)) = 0 Then vKeyAscii = 0 'Non è presente nell'insieme quindi l'azzero End If ChkInput = vKeyAscii End Function Adesso crea l'evento KeyPress ed inserisci il richiamo alla funzione in questo modo: Private Sub TxtBox_KeyPress(KeyAscii As Integer) KeyAscii = ChkInput(KeyAscii, "N") End Sub In questo modo, noterai che se provi a scrivere un carattere non compreso nella stringa "1234567890/", non viene scritto nella TextBox. Adesso per controllare se la data è corretta puoi eseguire il controllo nel momento dell'evento "LostFocus" della TextBox: Private Sub TxtBox_LostFocus() If TxtBox.Text = "" Then TxtBox.Text = Date: Exit Sub 'se il campo è vuoto inserisco la data odierna (opzionale) If Len(TxtBox.Text) < 10 Or Not IsDate(TxtBox.Text) Then 'qui eseguo il controllo sulla lunghezza e sul formato della date MsgBox "Inserire una data nel formato 'gg/mm/aaaa'", vbInformation, "Data non valida" TxtBox.Text = "" TxtBox.SetFocus Exit Sub End If TxtBox.Text = DateValue(TxtBox.Text) 'questa funzione ordina la data in base alle impostazioni di sistema. Es.: se scrivo "10/20/2001" con le impostazioni dper la data di sistema su "gg/mm/aaaa", la funzione "DateValue" sistemerà la data in "20/10/2001" Spero di esserti stato utile
___________________________________
Sono Mentecatto nel profondo! :::Presidente del F.I.S.Ma.Chio. (Federazione Internazionale per la Salvaguardia della Mazza Chiodata)!::: MSN: lufo53@hotmail.com |
Utenti attualmente attivi che stanno leggendo questa discussione: 1 (0 utenti e 1 ospiti) | |
Strumenti discussione | |
|
|