Discussione:
verifica formato campo
(troppo vecchio per rispondere)
Akery
2024-07-04 07:11:47 UTC
Permalink
Buongiorno,

importo dei dati da un file excel, uno di questi dati è il codice
fiscale che non sempre è digitato correttamente. Chiedo se esiste un
modo per verificare la correttezza formale cioè se l'immissione
corrisponde al formato AAAAAA00A00A000A e con lunghezza di 16 caratteri.

Saluti
Akery
BFS
2024-07-04 08:36:39 UTC
Permalink
Post by Akery
Buongiorno,
importo dei dati da un file excel, uno di questi dati è il codice
fiscale che non sempre è digitato correttamente. Chiedo se esiste un
modo per verificare la correttezza formale cioè se l'immissione
corrisponde al formato AAAAAA00A00A000A e con lunghezza di 16 caratteri.
Saluti
Akery
Questa routine ti controlla che il codice sia esatto (per persone fisiche)

Public Function CheckCodFiscale(CFis As String) As Boolean
'Autore: Federico Luciani
'Accetta: CFis = Codice fiscale da verificare
'Restituisce: true se il Codice fiscale è corretto
'Modificata da Giovani Menga
CheckCodFiscale = ((Len(CFis) = 16) Or Len(CFis) = 0)
Dim I As Byte
Dim strDis As String, strPar As String
Dim SumTot As Integer
strDis = "BAKPLCQDREVOSFTGUHMINJWZYX10---2-3-4---5-6-7-8-9"
strPar = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
For I = 1 To 15
SumTot = SumTot - ((InStr(strPar, Mid$(CFis, I, 1)) - 1) Mod
26) * (I Mod 2 = 0) - ((InStr(strDis, Mid$(CFis, I, 1)) - 1) Mod 26) *
(I Mod 2 = 1)
Next
CheckCodFiscale = (Mid$(strPar, (SumTot Mod 26) + 1, 1) =
UCase$(Right(CFis, 1)))
End Function


se invece ti basta solo verificare che corrisponda a AAAAAA00A00A000A
ti basta fare un ciclo, leggere un carattere alla volta e testarlo con
isnumeric

BFS
Akery
2024-07-04 12:43:14 UTC
Permalink
Post by BFS
Post by Akery
Buongiorno,
importo dei dati da un file excel, uno di questi dati è il codice
fiscale che non sempre è digitato correttamente. Chiedo se esiste un
modo per verificare la correttezza formale cioè se l'immissione
corrisponde al formato AAAAAA00A00A000A e con lunghezza di 16 caratteri.
Saluti
Akery
Questa routine ti controlla che il codice sia esatto (per persone fisiche)
Public Function CheckCodFiscale(CFis As String) As Boolean
    'Autore: Federico Luciani
    'Accetta: CFis = Codice fiscale da verificare
    'Restituisce: true se il Codice fiscale è corretto
    'Modificata da Giovani Menga
    CheckCodFiscale = ((Len(CFis) = 16) Or Len(CFis) = 0)
    Dim I As Byte
    Dim strDis As String, strPar As String
    Dim SumTot As Integer
    strDis = "BAKPLCQDREVOSFTGUHMINJWZYX10---2-3-4---5-6-7-8-9"
    strPar = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
    For I = 1 To 15
        SumTot = SumTot - ((InStr(strPar, Mid$(CFis, I, 1)) - 1) Mod
26) * (I Mod 2 = 0) - ((InStr(strDis, Mid$(CFis, I, 1)) - 1) Mod 26) *
(I Mod 2 = 1)
    Next
    CheckCodFiscale = (Mid$(strPar, (SumTot Mod 26) + 1, 1) =
UCase$(Right(CFis, 1)))
End Function
se invece ti basta solo verificare che corrisponda a AAAAAA00A00A000A
ti basta fare un ciclo, leggere un carattere alla volta e testarlo con
isnumeric
BFS
mi basta verificare solo che formalmente sia corretto. Provo la tua
routine e cerco come funziona isnumeric e vi do aggiornamenti

Grazie
Akery
2024-07-04 13:15:40 UTC
Permalink
Post by BFS
Public Function CheckCodFiscale(CFis As String) As Boolean
     'Autore: Federico Luciani
     'Accetta: CFis = Codice fiscale da verificare
     'Restituisce: true se il Codice fiscale è corretto
     'Modificata da Giovani Menga
     CheckCodFiscale = ((Len(CFis) = 16) Or Len(CFis) = 0)
     Dim I As Byte
     Dim strDis As String, strPar As String
     Dim SumTot As Integer
     strDis = "BAKPLCQDREVOSFTGUHMINJWZYX10---2-3-4---5-6-7-8-9"
     strPar = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
     For I = 1 To 15
         SumTot = SumTot - ((InStr(strPar, Mid$(CFis, I, 1)) - 1) Mod
26) * (I Mod 2 = 0) - ((InStr(strDis, Mid$(CFis, I, 1)) - 1) Mod 26) *
(I Mod 2 = 1)
     Next
     CheckCodFiscale = (Mid$(strPar, (SumTot Mod 26) + 1, 1) =
UCase$(Right(CFis, 1)))
End Function
grazie! questa routine è esattamente quello che volevo
Ammammata
2024-07-05 10:48:53 UTC
Permalink
Il giorno Thu 04 Jul 2024 09:11:47a, *Akery* ha inviato su
Post by Akery
Chiedo se esiste un
modo per verificare la correttezza formale cioè se l'immissione
corrisponde al formato AAAAAA00A00A000A e con lunghezza di 16
caratteri.
quindi non gestisci i casi di omocodìa, giusto?
--
/-\ /\/\ /\/\ /-\ /\/\ /\/\ /-\ T /-\
-=- -=- -=- -=- -=- -=- -=- -=- - -=-
........... [ al lavoro ] ...........
Akery
2024-07-06 07:20:37 UTC
Permalink
Post by Ammammata
Il giorno Thu 04 Jul 2024 09:11:47a, *Akery* ha inviato su
Post by Akery
Chiedo se esiste un
modo per verificare la correttezza formale cioè se l'immissione
corrisponde al formato AAAAAA00A00A000A e con lunghezza di 16
caratteri.
quindi non gestisci i casi di omocodìa, giusto?
no, mi è capitato solo una volta in 6 anni

Continua a leggere su narkive:
Loading...