Newsgroup: it.comp.appl.access
Titolo: per Sanzio55 CodiceFiscale

Scusami, ma inserendo la tua routine di calcolo del codice fiscale, durante
la compilazione del modulo, mi segnala che molte variabili non sono
definite, es. ok$, L, i, vocale, consonante, ch, vc, w$, mese$, giorno$,
mes, ecc.
ed anche una matrice.
Domanda: manca qualcosa nella routine o sono io che ho sbagliato qualcosa
????
Grazie Mille.
Riporto il codice da te pubblicato:
Io Utilizzo la seguente funzione cod$ alla quale passo come variabili il
cognome (co$), il nome (no$), il codice della citta' (cy$) prelevato da una
combo che a sua volta e' "alimentata" dalla tabella comuni scaricabile dal
sito comune di ICAA, e il sesso (sx$)
'************INGRESSO FUNZIONE*****************
Function cod$(co$, no$, cy$, nt$, sx$)
co$ = UCase$(co$)
no$ = UCase$(no$)
cy$ = UCase$(cy$)
sx$ = UCase$(sx$)
'--------- ELABORAZIONE COGNOME -------------
nominativo co$, 1 ' quest'ultimo: 1 è un flag che indica che sto passando il
cognome
'--------- ELABORAZIONE NOME -------------
nominativo no$, 0  ' quest'ultimo: 0 è un flag che indica che sto passando
il nome
'--------- ELABORAZIONE DATA -------------
codata nt$, sx$
'----------------- ELABORA LETTERA DI CONTROLLO-------------------
ok$=co$ + no$ + nt$ + cy$
miocontrollo ok$
'-----------------------------------------------------------
cod$ = co$ + no$ + nt$ + cy$ + ok$
End Function
'*************************************************************
Sub nominativo(a$, flag)
  noaccenti a$ ' trasforma le vocali accentate in vocali non accentate
  L = Len(a$)
  For i = 1 To L  'ciclo di scansione che separa le vocali dalle consonanti
    ch = Mid(a$, i, 1)
    vc = InStr("AEIOU", ch)
    If vc Then
        vocale = vocale + ch
        Else If ch >= "A" AND ch <= "Z" then consonante = consonante + ch
    EndIf  ' cosi' vengono eliminati anche gli spazi ed eventuali apostrofi
  Next
  Select Case Len(consonante)
    Case Is > 3
      If flag Then a$ = Left(consonante, 3) Else a$ = Left(consonante, 1)+
Mid(consonante, 3, 2)
    Case Is = 3
      a$ = consonante
    Case Is < 3
      a$ = Left(consonante + vocale + "XXX", 3)
  End Select
End Sub
Sub noaccenti(a$)   '(modifica lettre accentate)
    w$ = "": L = Len(a$)
    For i = 1 To L
        ch$ = Mid$(a$, i, 1)
        If ch$ >= "À" And ch$ <= "Å" Then ch$ = "A"
        If ch$ >= "È" And ch$ <= "Ë" Then ch$ = "E"
        If ch$ >= "Ì" And ch$ <= "Ï" Then ch$ = "I"
        If ch$ >= "Ò" And ch$ <= "Ö" Then ch$ = "O"
        If ch$ >= "Ù" And ch$ <= "Ü" Then ch$ = "U"
        w$ = w$ + ch$
    Next
a$ = w$
End Sub
Sub codata(d$, s$)
    If s$ = "M" Then s1 = 0 Else s1 = 40
    ReDim mese$(12)
    mese$(1) = "A": mese$(7) = "L"
    mese$(2) = "B": mese$(8) = "M"
    mese$(3) = "C": mese$(9) = "P"
    mese$(4) = "D": mese$(10) = "R"
    mese$(5) = "E": mese$(11) = "S"
    mese$(6) = "H": mese$(12) = "T"
    anno$ = Right$(d$, 2)
    gior = Val(Left$(d$, 2))
    gior = gior + s1: giorno$ = Format$(gior, "00")
    mes = Val(Mid$(d$, 4, 2))
    d$ = anno$ & mese$(mes) & giorno$
End Sub
Sub miocontrollo(ok$)
    ReDim d(26)
    d(0) = 1: d(1) = 0: d(2) = 5: d(3) = 7
    d(4) = 9: d(5) = 13: d(6) = 15: d(7) = 17
    d(8) = 19: d(9) = 21: d(10) = 2: d(11) = 4
    d(12) = 18: d(13) = 20: d(14) = 11: d(15) = 3
    d(16) = 6: d(17) = 8: d(18) = 12: d(19) = 14
    d(20) = 16: d(21) = 10: d(22) = 22: d(23) = 25
    d(24) = 24: d(25) = 23
' calcolo lettera di controllo
For i = 1 To 15
    If i \ 2 = i / 2 Then pari = True Else pari = False
    ch = Asc(Mid(ok, i, 1))
    v = ch + 65 * (ch > 64 And ch < 91) + 48 * (ch > 47 And ch < 58)
    If pari Then tot = tot + v Else tot = tot + d(v)
Next
ok = Chr(tot Mod 26 + 65)
End Sub
Cosi' io calcolo il codice fiscale
Buon lavoro, ciao
Santini

 ????
Scusami se rispondo in ritardo
Ne' manca qualcosa, ne' sbagli. Io ho imparato a programmare cosi' (leggi
Commodore 64) senza dichiarare le variabili.
Loooo soooo! E' sbagliato, non sono un programmatore professionista e so che
le variabili devono essere dichiarate a priori, ma le cattive abitudini sono
dure da correggere. Per piacere non mi cazziate, mi cazzeggio da solo ;-)
Per risolvere il problema puoi o dichiarare le variabili .... un lavoraccio;
oppure vai al menu Strumenti/Opzioni fai clic sulla cartella Modulo e nel
gruppo "Opzioni di codifica" togli il segno di spunta da "Richiedi
dichiarazioni di variabili" e tutto dovrebbe andare liscio.
Grazie per avermi dato la soddisfazione
--
Cordiali saluti
Nunzio Santini