Newsgroup: it.comp.lang.visual-basic
Titolo: Calcolo Codice Fiscale

Salve,
 sto creando un semplice database di gestione pratiche e volevo
inserire una macro per il calcolo del "codice fiscale" qualcuno sa
dirmi dove trovare il "codice necessario" (scusate il gioco di
parole)?
Grazie
Ciao

 ha scritto nel messaggio
news:1179068422.0...@k79g2000hse.googlegroups.com...

Tu intendi "Verificare" il Codice Fiscale non "Calcolare"... vero...?
Oppure vuoi fare concorrenza all'organo preposto per la'ssegnazione dei C.F.
Visti che ti devi appoggiare ad un Database ti allego un demo sviluppato in
VBA
che è convertibile in VB6 in modo semplicissimo, se può servirti....
http://www.alessandrobaraldi.it/DettaglioFaq.asp?IdFAQ=266
-- 
@Alex (Alessandro Baraldi)
---------------------------------------------------------------------------
http://www.sitocomune.com/
http://www.alessandrobaraldi.it
---------------------------------------------------------------------------

 ---------------------------------------------------------------------------
Perfetto :)
comunque nel mio piccolo, visto che è sostanzialmente solo di
riferimento, posso dire di essere io ad attribuire il codice... wow mi
sto facendo prendere dalle manie di grandezza ;)
scherzi a parte ti ringrazio sia per il codice che per la
puntualizzazione.
Ciao

Perfetto :)
comunque nel mio piccolo, visto che è sostanzialmente solo di
riferimento, posso dire di essere io ad attribuire il codice... wow mi
sto facendo prendere dalle manie di grandezza ;)
scherzi a parte ti ringrazio sia per il codice che per la
puntualizzazione.
Ciao
Direi che non è una puntualizzazione ma una legge...
Diciamo che coloro ai quali tu attribuisci un C.F. devono già averlo
altrimenti non attribuisci molto...



Ovvio... se quello che attribuisco dovesse avere valenza globale
in realta, perlomeno per quello che mi riguarda, il "codice
fiscale" (virgolettato) ha valenza solo locale quindi sono io ad
attribuirlo, diciamo come codice pratica, poi quando lo passo
all'incaricato che dovrà siglare il documento in cui il "codice
pratica" viene identificato con il codice fiscale (non virgolettato,
questo E' quello attribuito dalla stato) scatta il problema della
verifica di omogeneità tra le due attribuzioni...
insomma non attribuisco "IL" c.f. ma certo posso attribuire il mio
"c.f."
Ciao
PS: tabella comuni opportunamente archiviata, decisamente utile :) ma
esiste la possibilità di avere un link per verificare gli eventuali
aggiornamenti? e sopratutto qualcuno sa dove reperire una tabella
simile per le qualifiche istat?
grazie ancora

 simile per le qualifiche istat?
In ogni caso tieni presente che il codice fiscale che "crea" il tuo
programma è un codice fiscale con la sintassi corretta, ma non è detto che
sia quello della persona.
C'era un esempio con nonno e nipote con nome simile, a cui veniva
attribuito lo stesso codice fiscale, in quei casi viene assegnato a mano.
Quindi se poi fai una fattura a quel cod_fiscale, sappi che non è detto che
sia corretto.
http://www.regione.toscana.it/ius/ns-tabelle/?MIval=VisualizzaFile.html
Qui fra le prime voci trovi i cod.comuni aggiornati
-- 
DBMS Firebird
VB6 + Ado

 attribuito lo stesso codice fiscale, in quei casi viene assegnato a mano.
Sono i casi di Omocodia. Più che tra nonno e nipote (dove la nacita del 
nipote dovrebbe avvenire esattamente 100 anni dopo la nascita del nonno, 
  nello stesso giorno e con lo stesso nome), queste cose avvengono 
spesso nelle grandi città.
Ad esempio a Napoli vi è un'alta probabilità che nascano due Gennaro 
Esposito nello stesso giorno.
In tal caso và gestita l'omocodia dando la possibilità di forzare il 
codice fiscale.
Nicola

 spesso nelle grandi città.
Capito tnx.
Lo dico sempre ai clienti che il codice fiscale che calcola il programma
serve "per proporlo", ma spesso lo usano comunque quando il cliente non lo
ha con se...



Proporlo, o al massimo fare un Check di massima in caso di errori
grossolani...
L'idea di generarlo l'hanno in molti...
@Alex

 L'idea di generarlo l'hanno in molti...
Beh, nei miei programmi il codice lo faccio generare se l'utente non lo 
ha con sè. Ovviamente c'è sempre l'opzione di inserimento manuale, ma 
quasi nessuno la usa (se non nei casi di omocodia).
Cosa ci trovi di male in questa procedura?
bye

> Cosa ci trovi di male in questa procedura?
Mi rispondo da solo... tu per "proporre" intendi quello che io intendo 
per "generare"...

 per "generare"...
Si infatti è solo una diversa interpretazione del medesimo modo
operativo,
direi infatti che concordo pienamente con quanto hai sostenuto.


 direi infatti che concordo pienamente con quanto hai sostenuto.
E domani come fate a sapere se il codice inserito è il vostro o quello del 
cliente?
E se usate il vostro codice cosa mettete sui documenti?
A me proporre un codice fiscale (e salvarlo) pare una vera cavolata.
Ciao 

 Ciao
Non mi pare si sia detto questo.... almeno per quanto mi riguarda.
Il C.F. deve essere quello del Cliente o utente... se non l'ha serve
un'altra forma di Indice Univoco, qualsiasi
forma di calcolo come dicevo inizialmente non è valida, se non per un
controllo di massima....
Che mi sono perso in quanto detto... ? Non era lo stesso concetto espresso
prima...?
Ultimamente sono "volatile"...


 A me proporre un codice fiscale (e salvarlo) pare una vera cavolata.
Ti assicuro che ho dei clienti che hanno a che fare col pubblico, ed avere
il codice fiscale automatico gli aiuta.
Cioè il programma lo calcola, loro lo ricontrollano col cliente e apparte 1
volta su 10mila sarà lo stesso.
Dato che il cliente a volte non si porta dietro il cod.fisc, e che qualcosa
devono mettere, intanto lasciano quello calcolato, poi ri-faranno la
verifica (tutto questo per i nuovi clienti, per quelli vecchi lo richiamo
da un'anagrafica).
Ora comunque con i nuovi tesserini sanitari, basta un lettore di barcode
che scrive tutto automatico (e nel mio programma vengono caricati tutti i
dati anagrafici se la persona è già stata inserita precedentemente).
Il problema è che *il cliente stesso ti chiede questa funzionalità*.
Da parte dello sviluppatore (mia), quando gli ho detto che quel codice
fiscale non è quello vero, ma solo proposto sono a posto.
Io ti parlo di aziende che prendono anche 100 persone al giorno, che cmq di
norma hanno il codfisc o ci sono già state, ma nei rari casi meglio fargli
assegnare un cod.fisc errato e farlo ricorreggere in un secondo momento
(mai capitato cmq in anni che usano questi sw).
La cosa importante credo sia avvertire il cliente su cosa è quel cod.fisc,
poi se lo gestiranno da soli.


Andrea [Work] ha scritto:
[CUT]
Quoto in pieno il discorso di Andrea, ed aggiungo che sul mio gestionale 
per ottici è una funzione fondamentale.
Ogni giorno un ottico può inserire più di 100 clienti (dipende dalla 
grandezza e dall'ubicazione del punto vendita, ovviamente) e il calcolo 
del codice fiscale è una funzione richiestissima.
Nel caso di omocodia, la persona avvertirà l'ottico del problema (e 
credetemi, lo fanno, perchè sanno di essere dei "casi particolari").
Poi io mi spingo all'estremo, tanto da "suggerire" all'ottico i dati del 
cliente man man o che li digita, con le varie funzioni di completamento 
automatico.
Da quanto ho notato questo migliora i tempi di inserimento (che nel 90% 
dei casi avvengono davanti al cliente) del 50% e diminuisce 
drasticamente gli errori di digitazione.
bye

 automatico.
Potresti specificare in cosa consiste?
Io nelle mie procedure, ho un archivio anagrafico (con chiave codfisc).
Il cliente puň digitare il codfisc (o leggerlo con la pistola), e
automaticamente carica tutti i dati anagrafici presenti.
Se poi vengono fatte delle variazioni sulla scheda corrente(telefono, via,
ecc), al termine viene richiesto se aggiornare l'anagrafica, in modo che le
volte successive sia tutto aggiornato.
In questo modo se una persona va lě la seconda volta, ad esempio gli da il
tesserino sanitario, e in 1 secondo hanno tutti i dati anagrafici, e si
dovranno occupare solo di immettere i dati relativi alla scheda.


 Potresti specificare in cosa consiste?
Chiarisco. La cosa non ha nulla a che fare con il codice a barre... in 
effetti stavo andando leggermente OT.
Semplicemente che molti campi di una scheda cliente (ma anche di un 
prodotto, di una scheda refrattiva, o in fattura) vengono compilati 
tramite autocomplete.
In un certo luogo c'č una buona probabilitą che tanta gente abbia lo 
stesso cognome.
Io estraggo una lista di cognomi di persone gią inserite e, durante il 
completamento, suggerisco i nomi possibili che soddisfano i caratteri 
gią inseriti.
(Es. inizio a scrivere "O" e mi appare "Ottomano").
Questo ragionamento l'ho esteso a tantissimi campi, tale per cui 
l'inserimento dei dati diventa velocissimo.
Il calcolo del codice a barre (all'inserimento di un nuovo cliente) fa 
parte di questa logica... velocizzare al massimo l'inserimento dati, 
tenendo presente che c'č una fila di persone che aspetta di essere servita.
bye

 (Es. inizio a scrivere "O" e mi appare "Ottomano").
Questo l'ho trovato comodo per le combo_box, in cui tramite una api o
sendkeys (mi pare) ho attivato l'autocomplete.
Sapresti darmi qualche indicazione se č possibile farlo in VB6 con delle
normali TextBox? Presumo sia necessario avere un array o roba simile con
l'elenco delle scelte :)
Tnx


 l'elenco delle scelte :)
Eccoti servito! Io uso proprio le textbox! ^_^
Questo va in un modulo bas
****** INIZIO MODULO ******
Global isense() As String
Global Fpath As String
Global Ipath As String
Function adrecord(nrec As String)
ReDim Preserve isense(UBound(isense()) + 1)
isense(UBound(isense())) = nrec
End Function
Public Function searchforrecord(rec As String, ccase As Boolean)
Dim frec As Boolean
Dim x As Long
If ccase Then rec = UCase(rec)
arrayb = UBound(isense())
lenrec = Len(rec)
For x = 0 To arrayb
nrec = Left(isense(x), lenrec)
If ccase Then nrec = UCase(nrec)
If rec = nrec Then
     frec = True
     rec = isense(x)
     Exit For
End If
Next
If frec Then
     searchforrecord = rec
Else
     searchforrecord = vbNullString
End If
End Function
Public Sub Createisense(Query As String, DBFile As String)
     Dim x As Double
     Dim y As String
     Dim z As String
     Dim Datab As Database, Tabella As Recordset
     Set Datab = OpenDatabase(DBFile, False, False)
     Set Tabella = Datab.OpenRecordset(Query)
     If Not Tabella.EOF Then
         ReDim isense(1)
         Tabella.MoveFirst
         Do While Not Tabella.EOF
             ReDim Preserve isense(x)
             If Not IsNull(Tabella!Risultato) Then
                 isense(x) = Tabella!Risultato
                 x = x + 1
             End If
             Tabella.MoveNext
         Loop
     End If
End Sub
Public Function isensecheck(ByVal x As Double) As String
If x >= LBound(isense()) And x <= UBound(isense()) Then
     isensecheck = isense(x)
Else
     isensecheck = ""
End If
End Function
****** FINE MODULO ******
Ora, prendiamo il caso che tu abbia una serie di textbox chiamate 
txtFields e che tu voglia attivare la funzione sulla txtFields(1), che 
nel mio caso corrisponde al cognome.
Venno gestiti i seguenti eventi:
Private Sub txtFields_GotFocus(Index As Integer)
     If Index = 1 Then
         Call Createisense("Select Distinct Cognome As Risultato From 
ElencoClienti Order By Cognome", directory + "\db2.mdb")
     End If
End Sub
Private Sub txtFields_KeyPress(Index As Integer, KeyAscii As Integer)
If Index = 1 Then
     'serve per Autocomplete Textbox
     If KeyAscii = 8 Then
         back = True
     End If
     If KeyAscii <> 13 And KeyAscii <> 8 Then back = False
End If
End Sub
Private Sub txtFields_Change(Index As Integer)
     Dim iStart As Long
     Dim x As String
     If (Index = 1) And InChiusura = False Then
         iStart = txtFields(Index).SelStart
         If txtFields(Index).Text = "" Or back Then Exit Sub
         x = searchforrecord(txtFields(Index).Text, True)
         If x <> vbNullString Then
             txtFields(Index).Text = x
             txtFields(Index).SelStart = iStart
             txtFields(Index).SelLength = Len(txtFields(Index).Text) - 
iStart
         End If
     End If
End Sub
In quest'ultimo evento uso una variabile booleana chiamata InChiusura 
che mi evita alcuni problemi sulla textbox collegata ad un data control.
Per la cronaca, InChiusura diventa True quando scateno il Form_QueryUnload.
Nel form va anche dichiarata la variabile "back" (boolean)
E questo è tutto... magari sembrerà incasinato ma i pezzi di codice alla 
fine sono sempre gli stessi.
bye

 Eccoti servito! Io uso proprio le textbox! ^_^
Ora ho millanta roba in mezzo, appena posso ci dò un occhio e lo provo :)
Tnx per ora :)
