Formula del digito verificador de Rut FM6
Publicado por hugo doorman (2 intervenciones) el 15/02/2008 16:50:44
crea en file maker un campo llamado RUT y un camp llamado DV (ojo que el campo rut esta con minuscula en el siguinte codigo, depende de como lo crees el nombre)
luego en definicion campos escoges DV y lo creas como campo de calculo luego introduce el siguiente codigo:
Case( Length(rut) = 8 ; If(Mod( TextToNum(Middle(NumToText(rut) ; 1 ; 1 )) * 8 +TextToNum(Middle(NumToText(rut) ; 2 ; 1 )) * 9 +
TextToNum(Middle(NumToText(rut) ; 3 ; 1 )) * 4 +TextToNum(Middle(NumToText(rut) ; 4 ; 1 )) * 5 +
TextToNum(Middle(NumToText(rut) ; 5 ; 1 )) * 6 +TextToNum(Middle(NumToText(rut) ; 6 ; 1 )) * 7 +
TextToNum(Middle(NumToText(rut) ; 7 ; 1 )) * 8 +TextToNum(Middle(NumToText(rut) ; 8 ; 1 )) * 9 ; 11 ) = 10 ; "K" ; Mod(
TextToNum(Middle(NumToText(rut) ; 1 ; 1 )) * 8 +TextToNum(Middle(NumToText(rut) ; 2 ; 1 )) * 9 +
TextToNum(Middle(NumToText(rut) ; 3 ; 1 )) * 4 +TextToNum(Middle(NumToText(rut) ; 4 ; 1 )) * 5 +
TextToNum(Middle(NumToText(rut) ; 5 ; 1 )) * 6 +TextToNum(Middle(NumToText(rut) ; 6 ; 1 )) * 7 +
TextToNum(Middle(NumToText(rut) ; 7 ; 1 )) * 8 +TextToNum(Middle(NumToText(rut) ; 8 ; 1 )) * 9 ; 11 ) ) ; Length(rut) = 7 ; If(Mod( TextToNum(Middle(NumToText(rut) ; 1 ; 1 )) * 9 +TextToNum(Middle(NumToText(rut) ; 2 ; 1 )) * 4 +
TextToNum(Middle(NumToText(rut) ; 3 ; 1 )) * 5 +TextToNum(Middle(NumToText(rut) ; 4 ; 1 )) * 6 +
TextToNum(Middle(NumToText(rut) ; 5 ; 1 )) * 7 +TextToNum(Middle(NumToText(rut) ; 6 ; 1 )) * 8 +
TextToNum(Middle(NumToText(rut) ; 7 ; 1 )) * 9 ; 11 ) = 10 ; "K" ; Mod(
TextToNum(Middle(NumToText(rut) ; 1 ; 1 )) * 9 +TextToNum(Middle(NumToText(rut) ; 2 ; 1 )) * 4 +
TextToNum(Middle(NumToText(rut) ; 3 ; 1 )) * 5 +TextToNum(Middle(NumToText(rut) ; 4 ; 1 )) * 6 +
TextToNum(Middle(NumToText(rut) ; 5 ; 1 )) * 7 +TextToNum(Middle(NumToText(rut) ; 6 ; 1 )) * 8 +
TextToNum(Middle(NumToText(rut) ; 7 ; 1 )) * 9 ; 11 ) ) ; "Error" )
luego en definicion campos escoges DV y lo creas como campo de calculo luego introduce el siguiente codigo:
Case( Length(rut) = 8 ; If(Mod( TextToNum(Middle(NumToText(rut) ; 1 ; 1 )) * 8 +TextToNum(Middle(NumToText(rut) ; 2 ; 1 )) * 9 +
TextToNum(Middle(NumToText(rut) ; 3 ; 1 )) * 4 +TextToNum(Middle(NumToText(rut) ; 4 ; 1 )) * 5 +
TextToNum(Middle(NumToText(rut) ; 5 ; 1 )) * 6 +TextToNum(Middle(NumToText(rut) ; 6 ; 1 )) * 7 +
TextToNum(Middle(NumToText(rut) ; 7 ; 1 )) * 8 +TextToNum(Middle(NumToText(rut) ; 8 ; 1 )) * 9 ; 11 ) = 10 ; "K" ; Mod(
TextToNum(Middle(NumToText(rut) ; 1 ; 1 )) * 8 +TextToNum(Middle(NumToText(rut) ; 2 ; 1 )) * 9 +
TextToNum(Middle(NumToText(rut) ; 3 ; 1 )) * 4 +TextToNum(Middle(NumToText(rut) ; 4 ; 1 )) * 5 +
TextToNum(Middle(NumToText(rut) ; 5 ; 1 )) * 6 +TextToNum(Middle(NumToText(rut) ; 6 ; 1 )) * 7 +
TextToNum(Middle(NumToText(rut) ; 7 ; 1 )) * 8 +TextToNum(Middle(NumToText(rut) ; 8 ; 1 )) * 9 ; 11 ) ) ; Length(rut) = 7 ; If(Mod( TextToNum(Middle(NumToText(rut) ; 1 ; 1 )) * 9 +TextToNum(Middle(NumToText(rut) ; 2 ; 1 )) * 4 +
TextToNum(Middle(NumToText(rut) ; 3 ; 1 )) * 5 +TextToNum(Middle(NumToText(rut) ; 4 ; 1 )) * 6 +
TextToNum(Middle(NumToText(rut) ; 5 ; 1 )) * 7 +TextToNum(Middle(NumToText(rut) ; 6 ; 1 )) * 8 +
TextToNum(Middle(NumToText(rut) ; 7 ; 1 )) * 9 ; 11 ) = 10 ; "K" ; Mod(
TextToNum(Middle(NumToText(rut) ; 1 ; 1 )) * 9 +TextToNum(Middle(NumToText(rut) ; 2 ; 1 )) * 4 +
TextToNum(Middle(NumToText(rut) ; 3 ; 1 )) * 5 +TextToNum(Middle(NumToText(rut) ; 4 ; 1 )) * 6 +
TextToNum(Middle(NumToText(rut) ; 5 ; 1 )) * 7 +TextToNum(Middle(NumToText(rut) ; 6 ; 1 )) * 8 +
TextToNum(Middle(NumToText(rut) ; 7 ; 1 )) * 9 ; 11 ) ) ; "Error" )
Valora esta pregunta
0