Ir para conteúdo

Publicidade

 Estatísticas do Fórum

  • 0 Usuários ativos

    0 membros, 0 visitantes, 0 membros anônimos

Foto
- - - - -

Validação CMC7

  • Por favor, faça o login para responder
16 respostas neste tópico

#1 silas_i

silas_i
  • Members
  • 1.224 posts

Postado 12 maio 2005 - 11:11

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;

  • 0

Publicidade

#2 proteus

proteus
  • Members
  • 650 posts

Postado 12 maio 2005 - 13:00

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

#3 Amigo_zz

Amigo_zz

    Programador PHP Sénior

  • Members
  • 416 posts

Postado 12 maio 2005 - 13:03

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
  • 0

#4 silas_i

silas_i
  • Members
  • 1.224 posts

Postado 12 maio 2005 - 13:17

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:
  • 0

#5 silas_i

silas_i
  • Members
  • 1.224 posts

Postado 12 maio 2005 - 13:26

Não entendi pq moveram para o Fórum asp, mas td bem !!!!! http://forum.imaster...tyle_emoticons/default/joia.gif
  • 0

#6 Mário Monteiro

Mário Monteiro

    Admin iMasters

  • Administrador
  • 33.638 posts

Postado 12 maio 2005 - 14:07

cade a funcao Modulo10?!
ou oq ela faz?!

vlw!

<{POST_SNAPBACK}>

ahauhauahu

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

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

#7 silas_i

silas_i
  • Members
  • 1.224 posts

Postado 12 maio 2005 - 14:18

pois é galera... eu não tenho essa função !!!! :( :o :unsure: eu peguei esse código daqui... http://www.linhadeco...ica=1119&sub=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 !!!!!
  • 0

#8 silas_i

silas_i
  • Members
  • 1.224 posts

Postado 12 maio 2005 - 16:51

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;/

  • 0

#9 Sot

Sot
  • Members
  • 6 posts

Postado 12 maio 2005 - 17:25

<% 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 = DV End Function Function 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 = resultado End Function %>


  • 0

#10 silas_i

silas_i
  • Members
  • 1.224 posts

Postado 13 maio 2005 - 08:54

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

ASP

    [*]cmc7 "409049850183045965977272298553"

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


Ele me retorna false desta maneira

ASP

    [*]cmc7 = 409049850183045965977272298553

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


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

    [*]
    [/list]


O que pode ser !?
  • 0

#11 silas_i

silas_i
  • Members
  • 1.224 posts

Postado 13 maio 2005 - 13:43

ninguém ? :(
  • 0

#12 Mário Monteiro

Mário Monteiro

    Admin iMasters

  • Administrador
  • 33.638 posts

Postado 13 maio 2005 - 14:59

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...
  • 0

#13 silas_i

silas_i
  • Members
  • 1.224 posts

Postado 13 maio 2005 - 15:23

Entao cara ta certinho olha o que ele mostra94090,4
  • 0

#14 Mário Monteiro

Mário Monteiro

    Admin iMasters

  • Administrador
  • 33.638 posts

Postado 13 maio 2005 - 15:27

e é pra converter pra inteiro??
  • 0

#15 silas_i

silas_i
  • Members
  • 1.224 posts

Postado 13 maio 2005 - 15:33

cara quem me mandou esta função foi o Sot... http://forum.imaster...tyle_emoticons/default/blush.gif
  • 0

#16 Mário Monteiro

Mário Monteiro

    Admin iMasters

  • Administrador
  • 33.638 posts

Postado 13 maio 2005 - 16:07

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

#17 silas_i

silas_i
  • Members
  • 1.224 posts

Postado 13 maio 2005 - 16:26

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




Publicidade

/ins>