Ir para o conteúdo

Publicidade

 Estatísticas do Fórum

  • 0 Usuários ativos

    0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

Cursos Online iMasters
Foto:

Validação CMC7

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

#1 silas_i

silas_i
  • Membros
  • 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

#2 proteus

proteus
  • Membros
  • 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

  • Membros
  • 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
  • Membros
  • 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
  • Membros
  • 1.224 posts

Postado 12 maio 2005 - 13:26

Não entendi pq moveram para o Fórum asp, mas td bem !!!!!
:joia:
  • 0

#6 Mário Monteiro

Mário Monteiro

    Admin iMasters

  • Administradores
  • 33.407 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
  • Membros
  • 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
  • Membros
  • 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
  • Membros
  • 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
  • Membros
  • 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))


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

#11 silas_i

silas_i
  • Membros
  • 1.224 posts

Postado 13 maio 2005 - 13:43

ninguém ? :(
  • 0

#12 Mário Monteiro

Mário Monteiro

    Admin iMasters

  • Administradores
  • 33.407 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
  • Membros
  • 1.224 posts

Postado 13 maio 2005 - 15:23

Entao cara ta certinho

olha o que ele mostra

94090,4
  • 0

#14 Mário Monteiro

Mário Monteiro

    Admin iMasters

  • Administradores
  • 33.407 posts

Postado 13 maio 2005 - 15:27

e é pra converter pra inteiro??
  • 0

#15 silas_i

silas_i
  • Membros
  • 1.224 posts

Postado 13 maio 2005 - 15:33

cara quem me mandou esta função foi o Sot...

:blush:
  • 0

#16 Mário Monteiro

Mário Monteiro

    Admin iMasters

  • Administradores
  • 33.407 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
  • Membros
  • 1.224 posts

Postado 13 maio 2005 - 16:26

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




Publicidade

/ins>