Usuário com melhor resposta
Problemas com inserção --- Novamente!?!?!?!?

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 BlockSPT_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 BlockServer: 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 BlockSET 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
ENDSET @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
ENDif 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
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 BlockSPT_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'
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 BlockSPT_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'
-
-