none
Problemas com inserção --- Novamente!?!?!?!? RRS feed

  • Pergunta

  • Olá gente,

     

    Solicito a ajuda de vocês para tentar solucionar o problema de inserção que estou enfrentando com essa cadastro de fornecedor...

    Agradeço a toda ajuda possível!!!

     

     

    Parâmetros passados do ASP para o SQL Server

    Code Block
    SPT_PAGTER_INSFORNEC '','F','51222981220','AUGUSTO CESAR','','22101980','00201','','','131313','1321351','RUA TESTE','785','TESTANDO','66666666','TESTE1','BELEM','PA','2222222222','2222222222','cesar@hotmail.com','424','0002','3132131513','2',0,'TESTANDO','17102007','02','02'

     

     

    Erro na Inserção

    Code Block
    Server: Msg 8114, Level 16, State 4, Procedure SPT_PAGTER_INSFORNEC, Line 0
    Error converting data type varchar to datetime.

     

     

    Stored procedure que receberá os dados do ASP

    Code Block

    SET QUOTED_IDENTIFIER ON
    GO
    SET ANSI_NULLS ON
    GO

    /****** Object:  Stored Procedure dbo.SPT_PAGTER_INSFORNEC    Script Date: 02/10/2007 17:44:55 ******/
    ALTER    PROCEDURE [dbo].[SPT_PAGTER_INSFORNEC]     
         
     @SIS_ORIGEM [int]  = null  --1 = SisPagTer,   2 = SisOrc,  3 = SisAcon     
    ,@for_tipopessoa  [varchar](1) = null      
    ,@for_cgccpf  [varchar](15) = null     
    ,@for_nome   [varchar](50) = null     
    ,@for_nome_fantasia  [varchar](50) = null     
    ,@for_Dta_Nasc  [datetime] = 01011900     
    ,@for_CBO   [varchar](6) = null     
    ,@for_inscr_estadual  [varchar](20) = null     
    ,@for_inscr_municipal  [varchar](20) = null     
    ,@for_inscr_inss  [varchar](20) = null     
    ,@for_pis_pasep  [varchar](20) = null     
    ,@for_rua   [varchar](50) = null     
    ,@for_numero   [varchar](5) = null     
    ,@for_complemento  [varchar](15) = null     
    ,@for_cep   [varchar](8) = null     
    ,@for_bairro   [varchar](30) = null     
    ,@for_cidade   [varchar](30) = null     
    ,@for_uf   [varchar](2) = null     
    ,@for_fone1   [varchar](12) = null     
    ,@for_fone2   [varchar](12)  = null     
    ,@for_email   [varchar](50) = null     
    ,@ban_cod   [varchar](10) = null     
    ,@age_cod   [varchar](10)  = null     
    ,@for_ctacorrente  [varchar](10) = null      
    ,@for_dv_ctacorrente  [varchar](2) = null     
    ,@for_restricao   [int]  = null     
    ,@for_observacao  [varchar](200) = null
    ,@for_dta_atual [datetime] = 01011900
    ,@for_categ  [varchar](2) = null
    ,@for_ocorr  [varchar](2) = null      
    ,@RETURN_DESC      varchar(100)  = '' output     
    ,@RETURN_FLAG     integer        = 0  output     
         
    AS      
         
    SET DATEFORMAT mdy     
         
    DECLARE @MENS VARCHAR(200)     
    SET @MENS = 'Campo de preenchimento obrigatório!@@Informe:  '      
    declare @VALOR VARCHAR(15)     
    DECLARE @RETORNO  VARCHAR(5),     
     @CONTADOR INT,     
     @VAR1     INT,     
     @VAR2     INT,     
     @DIGITO   VARCHAR(2)     
         
         
    if @RETURN_FLAG = 0     
       begin     
         -- if @SIS_ORIGEM = 1     
         --        begin     
     IF @for_cgccpf is null     
     BEGIN     
      set @RETURN_DESC = @MENS + 'CNPJ/CPF'     
      set @for_cgccpf = null     
      set @RETURN_FLAG = 16     
      return     
     END     
       
     IF @for_nome is null     
     BEGIN     
      set @RETURN_DESC = @MENS + 'Razão Social'     
      set @for_nome = null     
      set @RETURN_FLAG = 16     
      return     
     END     
     IF @for_nome_fantasia is null AND @for_tipopessoa = 'J'     
     BEGIN     
      set @RETURN_DESC = @MENS + 'Nome Fantasia'     
      set @for_nome_fantasia = null     
      set @RETURN_FLAG = 16     
      return     
     END     
       
     IF @for_tipopessoa is null     
          BEGIN     
      set @RETURN_DESC = @MENS + 'Tipo de Pessoa'     
      set @for_tipopessoa = null     
      set @RETURN_FLAG = 16     
      return     
          END     

    SET @VALOR = @for_cgccpf     
         
           
    SET @CONTADOR = Len(@VALOR)  -- ATRIBUI O TAMANHO DA VARIAVEL      
         
    IF @for_tipopessoa = 'F'    -- TIPO F PARA CPF, J - CNPJ, 3 - CONTA CORRENTE, 4 - BOLETO BANCÁRIO, 5 - CÓDIGO DE BARRA     
     IF @CONTADOR < 11     
            BEGIN     
         set @RETURN_DESC = 'CPF Invalido'     
                      set @RETURN_FLAG = 16       
          return          
                      END     
            ELSE     
            BEGIN     
      IF @CONTADOR < 11     
          BEGIN     
           set @RETURN_DESC = 'CPF Invalido'     
                        set @RETURN_FLAG = 16       
                                            return          
          END     
      ELSE     
         BEGIN      
          SET @CONTADOR = 9     
          SET @VAR1     = 0     
          SET @VAR2     = 0     
       LOOP:     
          BEGIN     
           SET @VAR1 = @VAR1 + (Convert(INT, SubString(@VALOR, @CONTADOR, 1)) * (11 - @CONTADOR))     
           SET @CONTADOR = @CONTADOR - 1     
          END     
       IF @CONTADOR >= 1 GOTO LOOP     
         
       SET @VAR2 = 11 - (@VAR1 - ((@VAR1 / 11) * 11))     
         
       If @VAR2 = 10 Or @VAR2 = 11      
           BEGIN     
           SET  @VAR2 = 0     
           END       
         
       SET @DIGITO = @VAR2      
       SET @VAR1 = 0     
       SET @VAR2 = 0     
       SET @CONTADOR = 10     
          END     
         
          LOP:     
         BEGIN     
           SET @VAR1 = @VAR1 + (Convert(INT, SubString(@VALOR, @CONTADOR, 1)) * (12 - @CONTADOR))     
           SET @CONTADOR = @CONTADOR - 1     
         END     
         
       IF @CONTADOR >= 1 GOTO LOP       
           
          SET @VAR2 = 11 - (@VAR1 - ((@VAR1 / 11) * 11))     
              
        If @VAR2 = 10 Or @VAR2 = 11      
            BEGIN     
            SET  @VAR2 = 0     
            END        
       SET @DIGITO = @DIGITO + CONVERT(VARCHAR(2),@VAR2)     
           
       IF @DIGITO <> SubString(@VALOR, 10, 2)     
           BEGIN     
                  set @RETURN_DESC = 'CPF - Dígito Verificador não Confere'     
                               set @RETURN_FLAG = 16         
                               return        
          END     
         END     
         
    IF @for_tipopessoa = 'J'     
       BEGIN     
    IF @CONTADOR < 14     
       BEGIN     
      set @RETURN_DESC = 'CNPJ Invalido'     
      set @RETURN_FLAG = 16        
       return         
       END     
    ELSE     
      BEGIN      
       SET @CONTADOR = 1     
       SET @VAR1 = 0     
       SET @VAR2 = 5     
      LOOP1:     
        BEGIN     
         SET @VAR1 = @VAR1 + (Convert(INT, SubString(@VALOR, @CONTADOR, 1)) * @VAR2)      
           IF @VAR2 > 2     
                BEGIN     
                SET @VAR2 = @VAR2 - 1     
                END     
             ELSE     
                BEGIN     
                SET @VAR2 = 9     
                END     
         SET @CONTADOR = @CONTADOR + 1     
        END     
      IF @CONTADOR <= 12 GOTO LOOP1     
         
         SET @VAR2 =  (@VAR1 - ((@VAR1 / 11) * 11))     
            IF  @VAR2 < 2     
                BEGIN     
                SET @VAR2 = 0     
                END     
            ELSE     
                BEGIN     
                SET @VAR2 = 11 - @VAR2     
                END     
         
      SET @DIGITO = @VAR2      
       SET @CONTADOR = 1     
       SET @VAR1 = 0     
       SET @VAR2 = 6     
     end     
         
      LOOP2:     
        BEGIN     
         SET @VAR1 = @VAR1 + (Convert(INT, SubString(@VALOR, @CONTADOR, 1)) * @VAR2)      
           IF @VAR2 > 2     
                BEGIN     
                SET @VAR2 = @VAR2 - 1     
                END     
             ELSE     
                BEGIN     
                SET @VAR2 = 9     
                END     
         SET @CONTADOR = @CONTADOR + 1     
        END     
      IF @CONTADOR <= 13 GOTO LOOP2     
         
         SET @VAR2 =  (@VAR1 - ((@VAR1 / 11) * 11))     
            IF  @VAR2 < 2     
                BEGIN     
                SET @VAR2 = 0     
                END     
            ELSE     
                BEGIN     
                SET @VAR2 = 11 - @VAR2     
                END     
         
         
         
      SET @DIGITO = @DIGITO + CONVERT(VARCHAR(2),@VAR2)     
           
      IF @DIGITO <> SubString(@VALOR, 13, 2)     
         BEGIN     
         set @RETURN_DESC = 'CNPJ - Digito verificador não confere'     
         set @RETURN_FLAG = 16         
         return        
         END     
            
      END     

                 if EXISTS(SELECT for_cgccpf from [dbo].[fornecedor] where for_cgccpf = @for_cgccpf)     
      begin     
      set @RETURN_DESC = 'Fornecedor já existe. Deseja alterá-lo?'     
      end     
       else     
          begin     
      set @RETURN_DESC = 'Fornecedor não existe. Deseja incluí-lo?'       
      end       
     set @RETURN_FLAG = 4     
     return     
         
        end     
    --print @RETURN_DESC     
    declare @dta_Nasc datetime     
         
    --set @dta_Nasc = convert(datetime, @for_Dta_Nasc)     
         
    set @RETURN_FLAG = 64     
         
    IF NOT EXISTS(SELECT for_cgccpf from [dbo].[fornecedor] where for_cgccpf = @for_cgccpf)     
        begin     
        BEGIN TRANSACTION     
         INSERT INTO [dbo].[fornecedor] ([for_cgccpf],[for_nome],[for_rua],[for_numero],[for_complemento],[for_bairro],     
         [for_cidade],[for_cep],[for_uf],[for_fone1],[for_fone2],[age_cod],[for_ctacorrente],     
         [for_tipopessoa],[ban_cod],[for_nome_fantasia],[for_observacao],[for_inscr_estadual],     
         [for_email],[for_restricao],[for_inscr_inss],[for_pis_pasep],[for_dv_ctacorrente],     
         [for_inscr_municipal],[for_CBO],[for_Dta_Nasc],[for_dta_atual], [for_categ], [for_ocorr])
         VALUES (@for_cgccpf,UPPER(@for_nome),@for_rua,@for_numero,@for_complemento,@for_bairro,@for_cidade,@for_cep,@for_uf,     
               @for_fone1,@for_fone2,@age_cod,@for_ctacorrente,@for_tipopessoa,@ban_cod,@for_nome_fantasia,@for_observacao,     
               @for_inscr_estadual,@for_email,@for_restricao,@for_inscr_inss,@for_pis_pasep,@for_dv_ctacorrente,     
              @for_inscr_municipal,@for_CBO,@for_Dta_Nasc,@for_dta_atual, @for_categ, @for_ocorr)     
                   -- end     
         IF @@ERROR <> 0      
              ROLLBACK TRANSACTION     
          ELSE     
              COMMIT TRANSACTION     
             set @RETURN_DESC = 'Fornecedor Incluído com Sucesso!!'      
         end     
    else     
        begin     
        BEGIN TRANSACTION     
         UPDATE [dbo].[fornecedor] SET  [for_nome] = UPPER(@for_nome),[for_rua] = @for_rua,[for_numero] = @for_numero,     
         [for_complemento] = @for_complemento,[for_bairro] = @for_bairro,     
         [for_cidade] = @for_cidade,[for_cep] = @for_cep,[for_uf] = @for_uf,     
         [for_fone1] = @for_fone1,[for_fone2] = @for_fone2,[for_ag_cod] = @age_cod,     
         [for_ctacorrente] = @for_ctacorrente,[for_tipopessoa] = @for_tipopessoa,     
         [ban_cod] = @ban_cod,[for_nome_fantasia] = @for_nome_fantasia,[for_observacao] = @for_observacao,     
         [for_inscr_estadual] = @for_inscr_estadual,[for_email] = @for_email,[for_restricao] = @for_restricao,     
         [for_inscr_inss] = @for_inscr_inss,[for_pis_pasep] = @for_pis_pasep,[for_dv_ctacorrente] = @for_dv_ctacorrente,     
         [for_inscr_municipal] = @for_inscr_municipal,[for_CBO] = @for_CBO,[for_Dta_Nasc] = @for_Dta_Nasc,
         [for_dta_atual] = @for_dta_atual, [for_categ] = @for_categ, [for_ocorr] = @for_ocorr       
                WHERE ([for_cgccpf] = @for_cgccpf)     
                    --end     
          IF @@ERROR <> 0      
              ROLLBACK TRANSACTION     
          ELSE     
              COMMIT TRANSACTION     
             set @RETURN_DESC = 'Fornecedor alterado com Sucesso!!'      
         
        end   
       

    GO
    SET QUOTED_IDENTIFIER OFF
    GO
    SET ANSI_NULLS ON
    GO

     

     

     

    quarta-feira, 17 de outubro de 2007 19:52

Respostas

  • Augusto,

     

    A mensagem de erro esta fazendo referência a uma conversão de valores, mais especificamente um valor varchar que esta sendo convertido para datetime.

     

    Você já tentou fazer assim, ou seja, passar os valores varchar como datetime, mas contêndo o caracter /

     

    Code Block

    SPT_PAGTER_INSFORNEC '','F','51222981220','AUGUSTO CESAR','','22101980','00201','','','131313','1321351','RUA TESTE','785','TESTANDO','66666666','TESTE1','BELEM','PA','2222222222','2222222222','cesar@hotmail.com','424','0002','3132131513','2',0,'TESTANDO','17/10/2007','02','02'

     

     

    quinta-feira, 18 de outubro de 2007 10:09

Todas as Respostas

  • Augusto,

     

    A mensagem de erro esta fazendo referência a uma conversão de valores, mais especificamente um valor varchar que esta sendo convertido para datetime.

     

    Você já tentou fazer assim, ou seja, passar os valores varchar como datetime, mas contêndo o caracter /

     

    Code Block

    SPT_PAGTER_INSFORNEC '','F','51222981220','AUGUSTO CESAR','','22101980','00201','','','131313','1321351','RUA TESTE','785','TESTANDO','66666666','TESTE1','BELEM','PA','2222222222','2222222222','cesar@hotmail.com','424','0002','3132131513','2',0,'TESTANDO','17/10/2007','02','02'

     

     

    quinta-feira, 18 de outubro de 2007 10:09
  • Valeu Junior, é isso mesmo, passei os parâmetros incluindo com o caracter (/), e formatei a data para mm-dd-aaaa (padrão amerciano), aí rolou legal...

     

    Obrigado,

     

    Augusto

    sexta-feira, 19 de outubro de 2007 20:33
  • Augusto,

     

    Obrigado pelo retorno.

    segunda-feira, 22 de outubro de 2007 11:43