Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

silas_i

Validação CMC7

Recommended Posts

Preciso de uma ajuda do pessoal que manja de asp. Tenho esse código em delphi que faz a validação do CMC7. Porém preciso dele em asp ou javascript

 

Alguém poderia me falar passo-a-passo o uqe faz este código !?

 

function Valida_CMC7(Entrada:String) : Boolean;var campo1, campo2, campo3 : String;begin Entrada := SoNumero(Entrada); campo1 := Copy(entrada,1,7); campo2 := Copy(entrada,9,10); campo3 := Copy(entrada,20,10); Result := True; if Modulo10(campo1) <> Copy(Entrada,19,1) then    Result := False Else if Modulo10(campo2) <> Copy(Entrada,8,1) then    Result := False Else if Modulo10(campo3) <> Copy(Entrada,30,1) then    Result := False;end;

Compartilhar este post


Link para o post
Compartilhar em outros sites

1hm...dica:quando for isso pega a lógica da função..vai ser melhor...mais fácil...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como é esse campo ? Texto ? Você guarda apenas o caminho da imagem ?

<{POST_SNAPBACK}>

Sim cmapo do tipo texto, se o cara fizer upload da imagem, ent~~ao o nome da imagem é salva no banco de dados, se não fica vazio o campo

 

ID IMOVEL IMAGEM

5 8 foto.jpg

7 8

9 7 foto2.jpg

 

mais ou menos assim (tem mais campos, mas assim ja da pra entender), eu precisava na hora do select no WHERE ja filtrar e pegar só os registros que o campo imagem esteja preenchido ou pegar os que não estejam vazio... dai a unica forma que vejo isso seria usando VBScript no select, não sei se pode fazer isso... essa é minha duvida =)

 

Abração

<{POST_SNAPBACK}>

colega,

 

Nao percebo muito de delphi... se me ajudares a entender o objectivo dessa função, eu ajudo-te e monta-la em asp

 

ok?

 

Rui

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entao... essa função em Delphi serve para validar cheques. Existe um código em baixo do cheque chamado CMC7. Essa função faz isso.o código seria mais ou menos esse.<40904985<0183045965>977272298553:

Compartilhar este post


Link para o post
Compartilhar em outros sites

cade a funcao Modulo10?!

ou oq ela faz?!

 

vlw!

ahauhauahu

 

já perguntei a mesma coisa em outro topico...

 

como disse se soubesse o que era dava pra tentar arrumar...

Compartilhar este post


Link para o post
Compartilhar em outros sites

pois é galera... eu não tenho essa função !!!! :( :o :unsure:

 

eu peguei esse código daqui...

 

http://www.linhadecodigo.com.br/dicas.asp?...ica=1119⊂=14

 

Já revirei e até agora não achei nada... eu tenho a mesma função pra Oracle.. será que resolve !????? Se quiser eu posto aqui !!!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Veja o que eu tenho em SQL

 

CREATE OR REPLACE FUNCTION FuncVeriCmc7 (xCmc7 IN VARCHAR) RETURN NUMBER IS  vRetorno NUMBER := 0;  vCalculo NUMBER := 0;  vTotal   NUMBER := 0;  pCmc7    CHAR(34) := trim(xcmc7);  vPos2    NUMBER := 0; vPos3  NUMBER := 0; vPos4  NUMBER := 0;  vPos5    NUMBER := 0; vPos6  NUMBER := 0; vPos7  NUMBER := 0;  vPos8    NUMBER := 0; vPos9  NUMBER := 0; vPos11 NUMBER := 0;  vPos12   NUMBER := 0; vPos13 NUMBER := 0; vPos14 NUMBER := 0;  vPos15   NUMBER := 0; vPos16 NUMBER := 0; vPos17 NUMBER := 0;  vPos18   NUMBER := 0; vPos19 NUMBER := 0; vPos20 NUMBER := 0;  vPos22   NUMBER := 0; vPos23 NUMBER := 0; vPos24 NUMBER := 0;  vPos25   NUMBER := 0; vPos26 NUMBER := 0; vPos27 NUMBER := 0;  vPos28   NUMBER := 0; vPos29 NUMBER := 0; vPos30 NUMBER := 0;  vPos31   NUMBER := 0; vPos32 NUMBER := 0; vPos33 NUMBER := 0;  /* Função para verificação do CMC7 capturado para inclusão de cheques.    Caso esteja OK retorna 1, se houver qualquer problema retorna 0. */BEGIN  IF length(pcmc7)=34 THEN     IF instr('0123456789',substr(pcmc7,2,1))>0 AND instr('0123456789',substr(pcmc7,3,1))>0 AND        instr('0123456789',substr(pcmc7,4,1))>0 AND instr('0123456789',substr(pcmc7,5,1))>0 AND        instr('0123456789',substr(pcmc7,6,1))>0 AND instr('0123456789',substr(pcmc7,7,1))>0 AND        instr('0123456789',substr(pcmc7,8,1))>0 AND instr('0123456789',substr(pcmc7,9,1))>0 AND        instr('0123456789',substr(pcmc7,11,1))>0 AND instr('0123456789',substr(pcmc7,12,1))>0 AND        instr('0123456789',substr(pcmc7,13,1))>0 AND instr('0123456789',substr(pcmc7,14,1))>0 AND        instr('0123456789',substr(pcmc7,15,1))>0 AND instr('0123456789',substr(pcmc7,16,1))>0 AND        instr('0123456789',substr(pcmc7,17,1))>0 AND instr('0123456789',substr(pcmc7,18,1))>0 AND        instr('0123456789',substr(pcmc7,19,1))>0 AND instr('0123456789',substr(pcmc7,20,1))>0 AND        instr('0123456789',substr(pcmc7,22,1))>0 AND instr('0123456789',substr(pcmc7,23,1))>0 AND        instr('0123456789',substr(pcmc7,24,1))>0 AND instr('0123456789',substr(pcmc7,25,1))>0 AND        instr('0123456789',substr(pcmc7,25,1))>0 AND instr('0123456789',substr(pcmc7,26,1))>0 AND        instr('0123456789',substr(pcmc7,27,1))>0 AND instr('0123456789',substr(pcmc7,28,1))>0 AND        instr('0123456789',substr(pcmc7,29,1))>0 AND instr('0123456789',substr(pcmc7,30,1))>0 AND        instr('0123456789',substr(pcmc7,31,1))>0 AND instr('0123456789',substr(pcmc7,32,1))>0 AND        instr('0123456789',substr(pcmc7,33,1))>0 THEN        vPos2 := to_number(substr(pcmc7,2,1)); vPos3 := to_number(substr(pcmc7,3,1)); vPos4 := to_number(substr(pcmc7,4,1));        vPos5 := to_number(substr(pcmc7,5,1)); vPos6 := to_number(substr(pcmc7,6,1)); vPos7 := to_number(substr(pcmc7,7,1));        vPos8 := to_number(substr(pcmc7,8,1)); vPos9 := to_number(substr(pcmc7,9,1)); vPos11 := to_number(substr(pcmc7,11,1));        vPos12 := to_number(substr(pcmc7,12,1)); vPos13 := to_number(substr(pcmc7,13,1)); vPos14 := to_number(substr(pcmc7,14,1));        vPos15 := to_number(substr(pcmc7,15,1)); vPos16 := to_number(substr(pcmc7,16,1)); vPos17 := to_number(substr(pcmc7,17,1));        vPos18 := to_number(substr(pcmc7,18,1)); vPos19 := to_number(substr(pcmc7,19,1)); vPos20 := to_number(substr(pcmc7,20,1));        vPos22 := to_number(substr(pcmc7,22,1)); vPos23 := to_number(substr(pcmc7,23,1)); vPos24 := to_number(substr(pcmc7,24,1));        vPos25 := to_number(substr(pcmc7,25,1)); vPos26 := to_number(substr(pcmc7,26,1)); vPos27 := to_number(substr(pcmc7,27,1));        vPos28 := to_number(substr(pcmc7,28,1)); vPos29 := to_number(substr(pcmc7,29,1)); vPos30 := to_number(substr(pcmc7,30,1));        vPos31 := to_number(substr(pcmc7,31,1)); vPos32 := to_number(substr(pcmc7,32,1)); vPos33 := to_number(substr(pcmc7,33,1));        /* Calculo da primeira parte */        vTotal   := 0;        vCalculo := 2*vPos2;        IF vCalculo>9 THEN vCalculo := to_number(substr(trim(to_char(vCalculo,'00')),1,1))+to_number(substr(trim(to_char(vCalculo,'00')),2,1)); END IF;        vTotal := vTotal + vCalculo;        vCalculo := 1*vPos3;        IF vCalculo>9 THEN vCalculo := to_number(substr(trim(to_char(vCalculo,'00')),1,1))+to_number(substr(trim(to_char(vCalculo,'00')),2,1)); END IF;        vTotal := vTotal + vCalculo;        vCalculo := 2*vPos4;        IF vCalculo>9 THEN vCalculo := to_number(substr(trim(to_char(vCalculo,'00')),1,1))+to_number(substr(trim(to_char(vCalculo,'00')),2,1)); END IF;        vTotal := vTotal + vCalculo;        vCalculo := 1*vPos5;        IF vCalculo>9 THEN vCalculo := to_number(substr(trim(to_char(vCalculo,'00')),1,1))+to_number(substr(trim(to_char(vCalculo,'00')),2,1)); END IF;        vTotal := vTotal + vCalculo;        vCalculo := 2*vPos6;        IF vCalculo>9 THEN vCalculo := to_number(substr(trim(to_char(vCalculo,'00')),1,1))+to_number(substr(trim(to_char(vCalculo,'00')),2,1)); END IF;        vTotal := vTotal + vCalculo;        vCalculo := 1*vPos7;        IF vCalculo>9 THEN vCalculo := to_number(substr(trim(to_char(vCalculo,'00')),1,1))+to_number(substr(trim(to_char(vCalculo,'00')),2,1)); END IF;        vTotal := vTotal + vCalculo;        vCalculo := 2*vPos8;        IF vCalculo>9 THEN vCalculo := to_number(substr(trim(to_char(vCalculo,'00')),1,1))+to_number(substr(trim(to_char(vCalculo,'00')),2,1)); END IF;        vTotal := vTotal + vCalculo;        IF vPos22 = to_number(substr(trim(to_char((10-to_number(substr(trim(to_char(vTotal,'00')),2,1))),'00')),2,1)) THEN          /* Calculo da segunda parte */          vTotal   := 0;          vCalculo := 1*vPos11;          IF vCalculo>9 THEN vCalculo := to_number(substr(trim(to_char(vCalculo,'00')),1,1))+to_number(substr(trim(to_char(vCalculo,'00')),2,1)); END IF;          vTotal := vTotal + vCalculo;          vCalculo := 2*vPos12;          IF vCalculo>9 THEN vCalculo := to_number(substr(trim(to_char(vCalculo,'00')),1,1))+to_number(substr(trim(to_char(vCalculo,'00')),2,1)); END IF;          vTotal := vTotal + vCalculo;          vCalculo := 1*vPos13;          IF vCalculo>9 THEN vCalculo := to_number(substr(trim(to_char(vCalculo,'00')),1,1))+to_number(substr(trim(to_char(vCalculo,'00')),2,1)); END IF;          vTotal := vTotal + vCalculo;          vCalculo := 2*vPos14;          IF vCalculo>9 THEN vCalculo := to_number(substr(trim(to_char(vCalculo,'00')),1,1))+to_number(substr(trim(to_char(vCalculo,'00')),2,1)); END IF;          vTotal := vTotal + vCalculo;          vCalculo := 1*vPos15;          IF vCalculo>9 THEN vCalculo := to_number(substr(trim(to_char(vCalculo,'00')),1,1))+to_number(substr(trim(to_char(vCalculo,'00')),2,1)); END IF;          vTotal := vTotal + vCalculo;          vCalculo := 2*vPos16;          IF vCalculo>9 THEN vCalculo := to_number(substr(trim(to_char(vCalculo,'00')),1,1))+to_number(substr(trim(to_char(vCalculo,'00')),2,1)); END IF;          vTotal := vTotal + vCalculo;          vCalculo := 1*vPos17;          IF vCalculo>9 THEN vCalculo := to_number(substr(trim(to_char(vCalculo,'00')),1,1))+to_number(substr(trim(to_char(vCalculo,'00')),2,1)); END IF;          vTotal := vTotal + vCalculo;          vCalculo := 2*vPos18;          IF vCalculo>9 THEN vCalculo := to_number(substr(trim(to_char(vCalculo,'00')),1,1))+to_number(substr(trim(to_char(vCalculo,'00')),2,1)); END IF;          vTotal := vTotal + vCalculo;          vCalculo := 1*vPos19;          IF vCalculo>9 THEN vCalculo := to_number(substr(trim(to_char(vCalculo,'00')),1,1))+to_number(substr(trim(to_char(vCalculo,'00')),2,1)); END IF;          vTotal := vTotal + vCalculo;          vCalculo := 2*vPos20;          IF vCalculo>9 THEN vCalculo := to_number(substr(trim(to_char(vCalculo,'00')),1,1))+to_number(substr(trim(to_char(vCalculo,'00')),2,1)); END IF;          vTotal := vTotal + vCalculo;          IF vPos9 = to_number(substr(trim(to_char((10-to_number(substr(trim(to_char(vTotal,'00')),2,1))),'00')),2,1)) THEN            /* Calculo da terceira parte */            vTotal   := 0;            vCalculo := 1*vPos23;            IF vCalculo>9 THEN vCalculo := to_number(substr(trim(to_char(vCalculo,'00')),1,1))+to_number(substr(trim(to_char(vCalculo,'00')),2,1)); END IF;            vTotal := vTotal + vCalculo;            vCalculo := 2*vPos24;            IF vCalculo>9 THEN vCalculo := to_number(substr(trim(to_char(vCalculo,'00')),1,1))+to_number(substr(trim(to_char(vCalculo,'00')),2,1)); END IF;            vTotal := vTotal + vCalculo;            vCalculo := 1*vPos25;            IF vCalculo>9 THEN vCalculo := to_number(substr(trim(to_char(vCalculo,'00')),1,1))+to_number(substr(trim(to_char(vCalculo,'00')),2,1)); END IF;            vTotal := vTotal + vCalculo;            vCalculo := 2*vPos26;            IF vCalculo>9 THEN vCalculo := to_number(substr(trim(to_char(vCalculo,'00')),1,1))+to_number(substr(trim(to_char(vCalculo,'00')),2,1)); END IF;            vTotal := vTotal + vCalculo;            vCalculo := 1*vPos27;            IF vCalculo>9 THEN vCalculo := to_number(substr(trim(to_char(vCalculo,'00')),1,1))+to_number(substr(trim(to_char(vCalculo,'00')),2,1)); END IF;            vTotal := vTotal + vCalculo;            vCalculo := 2*vPos28;            IF vCalculo>9 THEN vCalculo := to_number(substr(trim(to_char(vCalculo,'00')),1,1))+to_number(substr(trim(to_char(vCalculo,'00')),2,1)); END IF;            vTotal := vTotal + vCalculo;            vCalculo := 1*vPos29;            IF vCalculo>9 THEN vCalculo := to_number(substr(trim(to_char(vCalculo,'00')),1,1))+to_number(substr(trim(to_char(vCalculo,'00')),2,1)); END IF;            vTotal := vTotal + vCalculo;            vCalculo := 2*vPos30;            IF vCalculo>9 THEN vCalculo := to_number(substr(trim(to_char(vCalculo,'00')),1,1))+to_number(substr(trim(to_char(vCalculo,'00')),2,1)); END IF;            vTotal := vTotal + vCalculo;            vCalculo := 1*vPos31;            IF vCalculo>9 THEN vCalculo := to_number(substr(trim(to_char(vCalculo,'00')),1,1))+to_number(substr(trim(to_char(vCalculo,'00')),2,1)); END IF;            vTotal := vTotal + vCalculo;            vCalculo := 2*vPos32;            IF vCalculo>9 THEN vCalculo := to_number(substr(trim(to_char(vCalculo,'00')),1,1))+to_number(substr(trim(to_char(vCalculo,'00')),2,1)); END IF;            vTotal := vTotal + vCalculo;            IF vPos33 = to_number(substr(trim(to_char((10-to_number(substr(trim(to_char(vTotal,'00')),2,1))),'00')),2,1)) THEN              vRetorno := 1;            END IF;          END IF;        END IF;     END IF;  END IF;  RETURN vRetorno;END;/show errors;select funcvericmc7('>27500300>0090108845>500087055182>') from dual;/

Compartilhar este post


Link para o post
Compartilhar em outros sites

<%Function Modulo10(S)  Soma = 0  Peso = 2  For Indice = Len(S) To 1 Step -1    Total = CInt(Mid(S, Indice, 1)) * Peso    If Total > 9 Then      Soma = Soma + 1 + (Total - 10)    Else      Soma = Soma + Total    End If    If Peso = 1 Then      Peso = 2    Else      Peso = 1    End If  Next  DV = 10 - Soma Mod 10  If DV = 10 then    DV = 0  End If  Modulo10 = DVEnd FunctionFunction Valida_CMC7(entrada) ' Passar somente número no parâmetro entrada...  campo1 = Mid(entrada, 1, 7)  campo2 = Mid(entrada, 9, 10)  campo3 = Mid(entrada, 20, 10)  If (Modulo10(campo1) <> Mid(Entrada, 19, 1)) Then    resultado = false  ElseIf (Modulo10(campo2) <> Mid(Entrada, 8, 1)) Then    resultado = false  ElseIf (Modulo10(campo3) <> Mid(Entrada, 30, 1)) Then    resultado = false  Else    resultado = true  End If  Valida_CMC7 = resultadoEnd Function%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sot valeu pela função em ASP, mas acho que não ta rolando não...

 

ASP

[*]cmc7 "409049850183045965977272298553"

 

[*]Response.Write(Valida_CMC7(cmc7))

 

Ele me retorna false desta maneira

 

ASP

[*]cmc7 = 409049850183045965977272298553

 

[*]Response.Write(Valida_CMC7(cmc7))

 

Ele retorna um erro na função.

 

Erro de tempo de execução do Microsoft VBScript erro '800a000d'

 

Tipos incompatíveis: 'Cint'

 

/dev/controle_cheques/includes/funcoes.asp, line 46

 

 

A linha que ele da erro é essa aqui.

 

ASP

[*]Total Cint(Mid(S, Indice, 1)) * Peso

 

[*]

 

O que pode ser !?

Compartilhar este post


Link para o post
Compartilhar em outros sites

bem o erro que aparece é que você esta usando o CINT em algo que provavelmente não é apenas numero....mande escrever na tela o conteudo de Mid(S, Indice, 1) antes da linha do cint...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Entao cara ta certinho olha o que ele mostra94090,4

Compartilhar este post


Link para o post
Compartilhar em outros sites

e é pra converter pra inteiro??

Compartilhar este post


Link para o post
Compartilhar em outros sites

cara tem que saber o que é feito senão fica dificil de saber se funfa depois...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sot você poderia nos explicar a lógica das funções !?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.