Καλώς ορίσατε στο dotNETZone.gr - Σύνδεση | Εγγραφή | Βοήθεια
σε

 

Αρχική σελίδα Ιστολόγια Συζητήσεις Εκθέσεις Φωτογραφιών Αρχειοθήκες

Programming and More

Δεν μου αρέσει να κλέβω τις ιδέες των άλλων, αλλά λατρεύω να με βοηθούν και και να βοηθάω.

Έλεγχος εγκυρότητας ΑΦΜ σε T-SQL

ο αλγόριθμός του cgeo για τον έλεγχο εγκυρότητας ΑΦΜ γραμμένος σε T-SQL. Τον αρχικό σε VB μπορείτε να τον βρείτε εδώ 

-- returns 1 if valid, 0 if not valid
create  function checkAFM(@vatId nchar(9)) returns bit
as
begin

declare @i int
declare @sum int
declare @residual int
declare @lastdigit int
declare @isValid bit

set @sum = 0
set @i = 0

while @i < 8
 begin
  set @sum = @sum + power(2,(8 - @i))* cast(substring(@vatId,@i+1,1) as int)
  set @i = @i + 1
 end

set @residual = @sum % 11
if @residual = 10
  set @lastdigit = 0
 else
  set @lastdigit = @residual

if @lastdigit = cast(substring(@vatId,9,1) as int)
  set @isValid = 1
 else
  set @isValid = 0

return @isValid
end

Έχουν δημοσιευτεί Τρίτη, 25 Ιουλίου 2006 11:58 πμ από το μέλος agmarios

Ενημέρωση για Σχόλια

Αν θα θέλατε να λαμβάνετε ένα e-mail όταν γίνονται ανανεώσεις στο περιεχόμενο αυτής της δημοσίευσης, παρακαλούμε γίνετε συνδρομητής εδώ

Παραμείνετε ενήμεροι στα τελευταία σχόλια με την χρήση του αγαπημένου σας RSS Aggregator και συνδρομή στη Τροφοδοσία RSS με σχόλια

Σχόλια:

 

Anonymous έγραψε:

select dbo.checkAFM('23456 0')
select dbo.checkAFM('23456')

Ισως πρεπει να τροποποιηθει λιγο...και να προστεθει ελεγχος της εισαγωγης του χρηστη.
Αυγούστου 1, 2006 5:32 μμ
 

Anonymous έγραψε:

-- returns 1 if valid, 0 if not valid
ALTER function checkAFM_m(@vatId varchar(9)) RETURNS BIT
AS
BEGIN
DECLARE @sum int,
@isValid bit

--Initialize variables
SELECT @sum = 0, @isValid = 0

--check @vatID length
IF LEN(@vatId) <> 9
RETURN @isValid

WHILE LEN(@vatId) > 1
BEGIN
SELECT @sum = @sum + POWER(2, LEN(@vatId)-1)* LEFT(@vatId, 1), @vatID = RIGHT(@vatId, LEN(@vatId)-1)
END

--check if user submitted '000000000'
IF @sum = 0
RETURN @isValid

SET @sum = (@sum % 11)%10

SELECT @isValid = 1
WHERE @sum = CAST(@vatID AS tinyint)

RETURN @isValid
END
Αυγούστου 1, 2006 5:58 μμ
 

Anonymous έγραψε:

--additional
--check @vatID length -- and type
IF LEN(@vatId) <> 9 OR ISNUMERIC(@vatId) = 0
RETURN @isValid
Αυγούστου 1, 2006 6:21 μμ

Ποιά είναι η άποψή σας για την παραπάνω δημοσίευση;

(απαιτούμενο)
(προαιρετικό)
(απαιτούμενο)
ÅéóÜãåôå ôïí êùäéêü:
CAPTCHA Image
Καταχώρηση
Με χρήση του Community Server (Commercial Edition), από την Telligent Systems