Προς το περιεχόμενο

Έλεγχος-επικύρωση ΑΦΜ


tharch

Προτεινόμενες αναρτήσεις

Δημοσ.

Θέλω να φτιάξω έναν πίνακα στο Excel στον οποίο θα υπάρχει μια στήλη όπου θα καταχωρούνται ΑΦΜ (αριθμός φορολογικού μητρώου).

Ξέρει κάποιος πώς μπορεί να γίνεται έλεγχος αν το ΑΦΜ που πληκτρολογήθηκε είναι έγκυρο;

Υπάρχει συνάρτηση στο Excel που κάνει τέτοιο έλεγχο ή χρειάζεται κάτι άλλο και τι είναι αυτό;

 

Ευχαριστώ

Θόδωρος

Δημοσ.

Σου στέλνω την function που χρησιμοποιώ εγώ σε project της VB.

Και στο Excel πρέπει να παίζει λογικά. Της περνάς όρισμα ένα ΑΦΜ

και σου επιστρέφει True ή False.

>

Public Function IsAfm(afm As String) As Boolean

Dim afm_dig1 As Byte, afm_dig2 As Byte, afm_dig3 As Byte, _
   afm_dig4 As Byte, afm_dig5 As Byte, afm_dig6 As Byte, _
   afm_dig7 As Byte, afm_dig8 As Byte, afm_dig9 As Byte
Dim v_mod As Byte
 
 afm_dig1 = CByte(Mid$(afm, 1, 1))
 afm_dig2 = CByte(Mid$(afm, 2, 1))
 afm_dig3 = CByte(Mid$(afm, 3, 1))
 afm_dig4 = CByte(Mid$(afm, 4, 1))
 afm_dig5 = CByte(Mid$(afm, 5, 1))
 afm_dig6 = CByte(Mid$(afm, 6, 1))
 afm_dig7 = CByte(Mid$(afm, 7, 1))
 afm_dig8 = CByte(Mid$(afm, 8, 1))
 afm_dig9 = CByte(Mid$(afm, 9, 1))
 
 v_mod = (afm_dig1 * 256 + afm_dig2 * 128 + afm_dig3 * 64 + _
          afm_dig4 * 32 + afm_dig5 * 16 + afm_dig6 * 8 + _
          afm_dig7 * 4 + afm_dig8 * 2) Mod 11
 
 If v_mod = 10 Then
   v_mod = 0
 End If
 
 If v_mod <> afm_dig9 Then
   IsAfm = False
 Else
   IsAfm = True
 End If
   
End Function

Δημοσ.

patrickdrd, πως ακριβώς μπορούμε να εισάγουμε μια τέτοια συνάρτηση στο excel? Γιατί εγώ το έκανα αναλυτικά χρησιμοποιώντας κελιά. :shock:

Thanks :D

Δημοσ.

Βρήκα τρόπο μέσω του Visual Basic Editor και Insert Module αλλά αυτό θα πρέπει να το κάνω σε κάθε βιβλίο. (τουλάχιστον έτσι νομίζω) Δεν υπάρχει τρόπος να μείνει μόνιμα στη μνήμη? Θα προτιμούσα κι όλας να μπορούσα να την εγκαταστήσω στην κατηγορία οικονομικές και όχι user defined.

Δημοσ.

Με το Excel τα πράγματα πήγαν μια χαρά. Στο ένα κελί (π.χ. στο Α2) πληκτρολογεί ο χρήστης το ΑΦΜ και σε κάποιο άλλο (π.χ. στο διπλανό) υπάρχει η συνάρτηση που κάνει τον έλεγχο και εμφανίζει το ανάλογο μήνυμα

 

=IF(RIGHT(MOD((MID(A2;1;1)*256+MID(A2;2;1)*128+MID(A2;3;1)*64+MID(A2;4;1)*32+MID(A2;5;1)*16+MID(A2;6;1)*8+MID(A2;7;1)*4+MID(A2;8;1)*2);11);1)=MID(A2;9;1);"swsto";"lathos"

 

 

Το μεγάλο (...) ερώτημα: στην access πώς μπορούμε να φτιάξουμε έναν κανόνα επικύρωσης για να κάνουμε παρόμοια δουλειά (επικύρωση ΑΦΜ);

 

Ευχαριστώ

Θόδωρος

Δημοσ.

Ευχαριστώ όσους ασχολήθηκαν με το θέμα.

Το παίδεψα λίγο κι εγώ (για να πω την αλήθεια έβγαλα τα μάτια μου με τις παρενθέσεις) και τελικά βρήκα "συνάρτηση" που να δουλεύει ως κανόνας επικύρωσης ΑΦΜ στην Access.

 

Ο κανόνας επικύρωσης έχει ως εξής:

 

Mid([afm];9;1)=Right((((Mid([afm];1;1)*256)+(Mid([afm];2;1)*128)+(Mid([afm];3;1)*64)+(Mid([afm];4;1)*32)+(Mid([afm];5;1)*16)+(Mid([afm];6;1)*8)+(Mid([afm];7;1)*4)+(Mid([afm];8;1)*2)) Mod 11);1) Or Is Null

 

Το afm είναι το "προγραμματιστικό" όνομα του πλαισίου κειμένου στο οποίο εισάγεται το ΑΦΜ.

Η αναφορά στο πλαίσιο κειμένου γίνεται με το όνομά του γραμμένο μέσα σε αγκύλες ([afm]).

ΠΡΟΣΟΧΗ: τέτοια "αυτοαναφορά" δεν μπορεί να γίνει σε κατάσταση σχεδιασμού πίνακα, γι' αυτό ΤΟΝ ΚΑΝΟΝΑ ΕΠΙΚΥΡΩΣΗΣ ΤΟΝ ΕΙΣΑΓΟΥΜΕ ΣΤΗ ΦΟΡΜΑ ΚΙ ΟΧΙ ΣΤΟΝ ΠΙΝΑΚΑ.

Το Or Is Null στο τέλος του κανόνα δίνει τη δυνατότητα να αφήσουμε το πεδίο του ΑΦΜ κενό.

(Ζητώ συγγνώμη απ' όσους τα βρίσκουν πολύ παιδαριώδη όσα γράφω, αλλά μπορεί να τα διαβάσουν και κάποιοι άσχετοι όπως εγώ).

Αρχειοθετημένο

Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.

  • Δημιουργία νέου...