stavo svolgendo questo piccolo esercizio preso da internet su access 2003 non mi da problemi mentre su access 2007 si potreste aiutarmi a capire cosa c'e' che non va?
vi ringrazio anticipatamente
vostro affezzionato dario(new entry)
vi ringrazio anticipatamente
vostro affezzionato dario(new entry)
Codice:
Option Compare Database
Option Explicit
Public DB As Database
Public COMUNI As Recordset
Private Sub cmdElabora_Click()
Dim ctl As Control
For Each ctl In Me.Controls
If ctl.Tag = "x" Then
If IsNull(ctl) Or ctl = "" Then
MsgBox "Il campo " & Mid$(ctl.Name, 4) & " non può essere vuoto!"
Exit Sub
End If
End If
Next ctl
Me.txtCodiceFiscale = CalcoloCodFis(Me.txtCognome, Me.txtNome, CVDate(Me.txtDataNascita), Me.cboSesso, Trim(Me.txtCodiceComune))
End Sub
Private Sub cmdEsci_Click()
DoCmd.Close acForm, Me.Name
End Sub
Private Sub Comando18_Click()
Me.txtCodiceComune = ""
Me.txtCodiceFiscale = ""
Me.txtCognome = ""
Me.txtComune = ""
Me.txtDataNascita = ""
Me.txtNome = ""
Me.txtProvincia = ""
Me.txtCognome.SetFocus
End Sub
Private Sub Corpo_Click()
End Sub
Private Sub Form_Load()
On Error GoTo ErrFas
Set DB = CurrentDb
Set COMUNI = DB.OpenRecordset("Comunifis")
COMUNI.Index = "COMUNI2L"
Exit Sub
ErrFas:
MsgBox ("FasMsg: " & Err.Number & " " & Err.Description)
Err.Clear
End Sub
Private Function CalcoloCodFis(ByVal Cognome$, ByVal Nome$, DataNascita As Date, Sesso$, Provincia$) As String
'Necessita la presenza di 7 textbox con i seguenti nomi:
'TxtCodFis, TxtCognome, TxtNome, TxtNatoAnno,
'TxtNatoMese, TxtNatoGiorno, TxtSesso.
'TxtSesso deve essere uguale a "F" oppure ad "M"
Dim Temp As String
Dim Vocali As String
Dim Consonanti As String
Dim I As Integer
Dim AppoNum As Long
Dim TempNum As Long
Dim TxtCodFis As String
TxtCodFis = ""
'
' RICAVO IL COGNOME (123)
'
Cognome$ = StrConv(Cognome$, vbUpperCase)
Vocali = ""
Consonanti = ""
For I = 1 To Len(Cognome$)
If InStr("AEIOU", Mid(Cognome$, I, 1)) Then
Vocali = Vocali + Mid(Cognome$, I, 1)
ElseIf InStr("BCDFGHJKLMNPQRSTVWXYZ", Mid(Cognome$, I, 1)) Then
Consonanti = Consonanti + Mid(Cognome$, I, 1)
Else
' E' uno spazio, un apostrfo o altro che non va considerato
End If
If Len(Consonanti) = 3 Then Exit For
Next
If Len(Consonanti) < 3 Then Consonanti = Consonanti + Left(Vocali, 3 - Len(Consonanti))
If Len(Consonanti) < 3 Then Consonanti = Consonanti + String(3 - Len(Consonanti), "X")
TxtCodFis = Consonanti
'
' RICAVO IL NOME (456)
'
Nome$ = StrConv(Nome$, vbUpperCase)
Vocali = ""
Consonanti = ""
For I = 1 To Len(Nome$)
If InStr("AEIOU", Mid(Nome$, I, 1)) Then
Vocali = Vocali + Mid(Nome$, I, 1)
ElseIf InStr("BCDFGHJKLMNPQRSTVWXYZ", Mid(Nome$, I, 1)) Then
Consonanti = Consonanti + Mid(Nome$, I, 1)
Else
' E' uno spazio, un apostrfo o altro che non va considerato
End If
Next I
If Len(Consonanti) >= 4 Then
' isolo la prima, terza e quarta consonante
Consonanti = Left$(Consonanti, 1) & Mid$(Consonanti, 3, 2)
ElseIf Len(Consonanti) = 3 Then
' Va bene cosi'
Else
' Aggiungo le vocali
Consonanti = Left$(Consonanti & Vocali, 3)
' se non basta, aggiungo le X
If Len(Consonanti) < 3 Then Consonanti = Left$(Consonanti & "XXX", 3)
End If
TxtCodFis = TxtCodFis & Consonanti
'
'Anno di nascita (78)
'
TxtCodFis = TxtCodFis + Right(Format$(Year(DataNascita), "0000"), 2)
'
'Mese di nascita(9)
'
TxtCodFis = TxtCodFis & Mid$("ABCDEHLMPRST", Month(DataNascita), 1)
'
'Giorno di nascita(0A)
'
If UCase(Sesso$) = "F" Then
TxtCodFis = TxtCodFis & Format$(Day(DataNascita) + 40, "00")
Else
TxtCodFis = TxtCodFis & Format$(Day(DataNascita), "00")
End If
'
'Località di nascita (BCDE)
'
TxtCodFis = TxtCodFis & Provincia$
'
'Ultima lettera (F)
'
'Controllo caratteri pari
TempNum = 0
I = 1
Do
' I DISPARI
AppoNum = InStr("B1A0KKPPLLC2QQD3RRE4VVOOSSF5TTG6UUH7MMI8NNJ9WWZZYYXX", Mid(TxtCodFis, I, 1))
TempNum = TempNum + ((AppoNum - 1) And &H7FFE) / 2
I = I + 1
If I > 15 Then Exit Do
' I PARI
AppoNum = InStr("A0B1C2D3E4F5G6H7I8J9KKLLMMNNOOPPQQRRSSTTUUVVWWXXYYZZ", Mid(TxtCodFis, I, 1))
TempNum = TempNum + ((AppoNum - 1) And &H7FFE) / 2
I = I + 1
Loop
TempNum = TempNum Mod 26
TxtCodFis = TxtCodFis & Mid$("ABCDEFGHIJKLMNOPQRSTUVWXYZ", TempNum + 1, 1)
' Ecco qui il codice bello finito
CalcoloCodFis = TxtCodFis
End Function
Private Sub Form_Unload(Cancel As Integer)
'COMUNI.Close
'Set DB = Nothing
'DoCmd.Quit acQuitSaveNone
End Sub
Private Sub txtCognome_Click()
End Sub
Private Sub txtCognome_KeyPress(KeyAscii As Integer)
Dim strCarattere As String
strCarattere = Chr(KeyAscii)
KeyAscii = Asc(UCase(strCarattere))
End Sub
Private Sub txtComune_Change()
Dim S As String
Dim T As String
Dim Colore As Long
On Error GoTo ErrFas
Colore = 0
T = Trim(Nz(Me.txtComune.Text, ""))
If T = "" Then
Me.txtComune.Tag = T
Exit Sub
End If
If Len(T) = 1 Then S = T
COMUNI.Seek ">=", T
If Not COMUNI.EOF And Not COMUNI.NoMatch Then
If UCase(T) = UCase(Mid(COMUNI!COMU_DESCR, 1, Len(T))) Then
If Len(T) > Len(Me.txtComune.Tag) Then
Me.txtComune = COMUNI!COMU_DESCR
Me.txtComune.SelStart = Len(T)
Me.txtComune.SelLength = Len(Me.txtComune) - (Len(T))
Me.txtProvincia = COMUNI!COMU_PROV
Me.txtCodiceComune = COMUNI!COMU_COD
End If
Else
If Me.txtComune.ForeColor = 0 Then MsgBox "Comune non in elenco"
Colore = &H80&
Me.txtProvincia = ""
Me.txtCodiceComune = ""
Me.txtComune.SetFocus
End If
End If
If Me.txtComune.ForeColor <> Colore Then Me.txtComune.ForeColor = Colore
Me.txtComune.Tag = T
Exit Sub
ErrFas:
MsgBox ("FasMsg: " & Err.Number & " " & Err.Description)
Err.Clear
End Sub
Private Sub txtNome_KeyPress(KeyAscii As Integer)
Dim strCarattere As String
strCarattere = Chr(KeyAscii)
KeyAscii = Asc(UCase(strCarattere))
End Sub
Ultima modifica di un moderatore: