none
Parâmetros não estão sendo repassados - Consultas ao Banco de dados RRS feed

  • Pergunta

  • Olá Gente,

     

    Atualmente estou trabalhando com ASP 3.0 + SQL Server 2000, e montei um form, onde disponibilizo para o usuário 05 comboboxs, os campos servirão de parâmetros a serem enviados para a stored procedure seja rodada adequadamente. Bom, para 04 parâmetros e suas combinações a coisa funciona "lindamente", mas quando entra o parâmetro de origem do contrato (VCHADV_ORICON ) começam os erros...

    Vou postar o código da stored procedure, o sql do script que é passado e o erro.

     

    Pq ocorre esse erro?

     

    Obs.: A origem do contrato é um campo varchar, os outros campos são todos números.

     

    Quem poder ajudar eu agradeço muito...

     

    Sql do ASP

    Code Block
    sql = " exec sp_RelatorioContratos_SIMPLIFICADO " & varAdvogado & "," & varDireg & "," & varGereg & ",'" & varOrigem & "'," & varAgencia

     

     

     

    chamada da SP

    Code Block
    exec sp_RelatorioContratos_SIMPLIFICADO 0,0,0,'CREDENCIADOS',0

     

     

     

    Erro

    Code Block
    Server: Msg 207, Level 16, State 3, Line 1
    Invalid column name 'CREDENCIADOS'.

     

     

     

    Stored Procedure

    Code Block

    SET QUOTED_IDENTIFIER ON
    GO
    SET ANSI_NULLS ON
    GO

    --sp_RelatorioContratos_SIMPLIFICADO 294

    ALTER  PROCEDURE sp_RelatorioContratos_SIMPLIFICADO 
     
    @NUMADV_CODIGO INT = 0 
    ,@VCHADV_GESDIR INT = 0 
    ,@VCHADV_GESGER INT = 0 
    ,@VCHADV_ORICON VARCHAR(50) = '' 
    ,@VCHADV_GESAG INT = 0 
     
    AS   
     


    set nocount on   

    DECLARE @PARAMETRO NVARCHAR(2000), @SQL nvarchaR(4000)--,@SQL2 VARCHAR(8000)

    IF @NUMADV_CODIGO<>0
     SET @PARAMETRO= 'NUMADV_CODIGO =' + CAST(@NUMADV_CODIGO AS VARCHAR(10))
    ELSE
    BEGIN
     SET @PARAMETRO= ''
    END

    IF @VCHADV_GESDIR<>0
    BEGIN
     IF @PARAMETRO<>''
     BEGIN
      SET @PARAMETRO= @PARAMETRO + ' AND VCHADV_GESDIR =' + CAST(@VCHADV_GESDIR AS VARCHAR(10))
     END
     ELSE
     BEGIN
      SET @PARAMETRO= 'VCHADV_GESDIR =' +  CAST(@VCHADV_GESDIR AS VARCHAR(10))
     END
    END

    IF @VCHADV_GESGER<>0
    BEGIN
     IF @PARAMETRO<>''
      SET @PARAMETRO=  @PARAMETRO + ' AND VCHADV_GESGER ='+   CAST(@VCHADV_GESGER AS VARCHAR(10))
     ELSE
      SET @PARAMETRO= 'VCHADV_GESGER =' +   CAST(@VCHADV_GESGER AS VARCHAR(10))
    END

    IF @VCHADV_GESAG<>0
    BEGIN
     IF @PARAMETRO<>''
     BEGIN
      SET @PARAMETRO=  @PARAMETRO + ' AND VCHADV_GESAG =' +  CAST(@VCHADV_GESAG AS VARCHAR(10)) 
     END
     ELSE
     BEGIN
      SET @PARAMETRO= ' VCHADV_GESAG = ' +  CAST(@VCHADV_GESAG AS VARCHAR(10))
     END
    END
    --PRINT @VCHADV_ORICON
    IF @VCHADV_ORICON<>''
    BEGIN
     IF @PARAMETRO<>''
     BEGIN
      SET @PARAMETRO=  @PARAMETRO + ' AND VCHADV_ORICON =''' +  @VCHADV_ORICON + ''''
     END
     ELSE
     BEGIN
      SET @PARAMETRO= 'VCHADV_ORICON = ' +  @VCHADV_ORICON
     END
    END
    --PRINT @PARAMETRO

    SET @SQL= 'SELECT ADV.numAdv_codigo, ADV.numAdv_contrato, ADV.vchAdv_OriCon,ADV.vchAdv_GesDir,ADV.vchAdv_GesGer, ADV.vchAdv_GesAg,ADV.vchAdv_Jurisdicao, ADV.vchAdv_DatIni, ADV.vchAdv_DatFim,ADV.vchAdv_Obj,ADV.statusctr,ADVS.At_NOME, ADVS.At_END,ADVS.At_CID, ADVS.At_UF, ADVS.At_TEL_FAX, DIREG.vchDg_Des,GERE.ger_den,AGEN.UNI_DEN FROM tbAdvogado ADV INNER JOIN tbAdvogados ADVS ON (ADVS.Ai_CODIGO = ADV.numAdv_codigo) INNER JOIN tbAuxDiGer DIREG ON (DIREG.numDg_Cod = ADV.vchAdv_GesDir)INNER JOIN tbAuxGereg GERE ON (GERE.RUN_COD = ADV.vchAdv_GesGer)INNER JOIN AGENCIASNOVA AGEN ON (AGEN.AGE = ADV.vchAdv_GesAg) WHERE ' +@PARAMETRO+ ' ORDER BY VCHADV_GESGER ASC '

    --SELECT @SQL + @SQL2  + @PARAMETRO                   
    --PRINT @SQL
    exec sp_executesql  @SQL

    --NUMADV_CODIGO = @NUMADV_CODIGO AND VCHADV_ORICON = @VCHADV_ORICON   


    GO
    SET QUOTED_IDENTIFIER OFF
    GO
    SET ANSI_NULLS ON
    GO

     

     

    segunda-feira, 22 de outubro de 2007 19:45

Respostas

  • Amigos,

     

    Obrigado por todos que visualizaram e aqueles que me escreveram... Bom, ontem a noite com ajuda de uma amigo "DAW" de outro fórum, o problema foi resolvido:

     

    Code Block
    Amigão,

    creio que seu problema esteja nessa linha:
    SQL
    SET @PARAMETRO= 'VCHADV_ORICON = ' +  @VCHADV_ORICON

    Você esqueceu de tratá-lo como um varchar, esqueceu das 'plicas'.

    Deixe esta linha dessa forma:
    SQL
    SET @PARAMETRO= 'VCHADV_ORICON = ''' +  @VCHADV_ORICON + ''''


    Espero que funcione...
    []tz

     

     

    Bastava eu tratar a linha novamente como varchar... Assim sendo, meu problema foi resolvido e agora as consultas funcionam perfeitamente...
     
    Obrigado,
     
    Augusto
    terça-feira, 23 de outubro de 2007 12:11

Todas as Respostas

  • a parte alterada está em vermelho

    eu utilizei " aspas + ' + valor do campo + ' + " ao inves de utilizar tudo com aspas simples ' 

    Espero ter ajudado

     

    Abraços

     

    Se ajudou, classifique o post !

     

    Obrigado

    Code Block

    SET QUOTED_IDENTIFIER ON
    GO
    SET ANSI_NULLS ON
    GO

    --sp_RelatorioContratos_SIMPLIFICADO 294

    ALTER  PROCEDURE sp_RelatorioContratos_SIMPLIFICADO 
     
    @NUMADV_CODIGO INT = 0 
    ,@VCHADV_GESDIR INT = 0 
    ,@VCHADV_GESGER INT = 0 
    ,@VCHADV_ORICON VARCHAR(50) = '' 
    ,@VCHADV_GESAG INT = 0 
     
    AS   
     


    set nocount on   

    DECLARE @PARAMETRO NVARCHAR(2000), @SQL nvarchaR(4000)--,@SQL2 VARCHAR(8000)

    IF @NUMADV_CODIGO<>0
     SET @PARAMETRO= 'NUMADV_CODIGO =' + CAST(@NUMADV_CODIGO AS VARCHAR(10))
    ELSE
    BEGIN
     SET @PARAMETRO= ''
    END

    IF @VCHADV_GESDIR<>0
    BEGIN
     IF @PARAMETRO<>''
     BEGIN
      SET @PARAMETRO= @PARAMETRO + ' AND VCHADV_GESDIR =' + CAST(@VCHADV_GESDIR AS VARCHAR(10))
     END
     ELSE
     BEGIN
      SET @PARAMETRO= 'VCHADV_GESDIR =' +  CAST(@VCHADV_GESDIR AS VARCHAR(10))
     END
    END

    IF @VCHADV_GESGER<>0
    BEGIN
     IF @PARAMETRO<>''
      SET @PARAMETRO=  @PARAMETRO + ' AND VCHADV_GESGER ='+   CAST(@VCHADV_GESGER AS VARCHAR(10))
     ELSE
      SET @PARAMETRO= 'VCHADV_GESGER =' +   CAST(@VCHADV_GESGER AS VARCHAR(10))
    END

    IF @VCHADV_GESAG<>0
    BEGIN
     IF @PARAMETRO<>''
     BEGIN
      SET @PARAMETRO=  @PARAMETRO + ' AND VCHADV_GESAG =' +  CAST(@VCHADV_GESAG AS VARCHAR(10)) 
     END
     ELSE
     BEGIN
      SET @PARAMETRO= ' VCHADV_GESAG = ' +  CAST(@VCHADV_GESAG AS VARCHAR(10))
     END
    END
    --PRINT @VCHADV_ORICON
    IF @VCHADV_ORICON<>''
    BEGIN
     IF @PARAMETRO<>''
     BEGIN
      SET @PARAMETRO=  @PARAMETRO + ' AND VCHADV_ORICON ="' +  @VCHADV_ORICON + "'"
     END
     ELSE
     BEGIN
      SET @PARAMETRO= 'VCHADV_ORICON = ' +  @VCHADV_ORICON
     END
    END
    --PRINT @PARAMETRO

    SET @SQL= 'SELECT ADV.numAdv_codigo, ADV.numAdv_contrato, ADV.vchAdv_OriCon,ADV.vchAdv_GesDir,ADV.vchAdv_GesGer, ADV.vchAdv_GesAg,ADV.vchAdv_Jurisdicao, ADV.vchAdv_DatIni, ADV.vchAdv_DatFim,ADV.vchAdv_Obj,ADV.statusctr,ADVS.At_NOME, ADVS.At_END,ADVS.At_CID, ADVS.At_UF, ADVS.At_TEL_FAX, DIREG.vchDg_Des,GERE.ger_den,AGEN.UNI_DEN FROM tbAdvogado ADV INNER JOIN tbAdvogados ADVS ON (ADVS.Ai_CODIGO = ADV.numAdv_codigo) INNER JOIN tbAuxDiGer DIREG ON (DIREG.numDg_Cod = ADV.vchAdv_GesDir)INNER JOIN tbAuxGereg GERE ON (GERE.RUN_COD = ADV.vchAdv_GesGer)INNER JOIN AGENCIASNOVA AGEN ON (AGEN.AGE = ADV.vchAdv_GesAg) WHERE ' +@PARAMETRO+ ' ORDER BY VCHADV_GESGER ASC '

    --SELECT @SQL + @SQL2  + @PARAMETRO                   
    --PRINT @SQL
    exec sp_executesql  @SQL

    --NUMADV_CODIGO = @NUMADV_CODIGO AND VCHADV_ORICON = @VCHADV_ORICON   


    GO
    SET QUOTED_IDENTIFIER OFF
    GO
    SET ANSI_NULLS ON
    GO

     

     

     

    segunda-feira, 22 de outubro de 2007 20:03
  • Olá Felipe,

     

    Valeu pela ajuda, pena que deu erro cara... tens uma outra idéia para solucionar esse caso?

     

    Grato por qq tipo de ajuda,

     

    Novo erro depois de implementada a sua solução

    Code Block

    Server: Msg 207, Level 16, State 3, Procedure sp_RelatorioContratos_SIMPLIFICADO, Line 63
    Invalid column name '''.

     

     

     

    segunda-feira, 22 de outubro de 2007 21:03
  • Amigos,

     

    Obrigado por todos que visualizaram e aqueles que me escreveram... Bom, ontem a noite com ajuda de uma amigo "DAW" de outro fórum, o problema foi resolvido:

     

    Code Block
    Amigão,

    creio que seu problema esteja nessa linha:
    SQL
    SET @PARAMETRO= 'VCHADV_ORICON = ' +  @VCHADV_ORICON

    Você esqueceu de tratá-lo como um varchar, esqueceu das 'plicas'.

    Deixe esta linha dessa forma:
    SQL
    SET @PARAMETRO= 'VCHADV_ORICON = ''' +  @VCHADV_ORICON + ''''


    Espero que funcione...
    []tz

     

     

    Bastava eu tratar a linha novamente como varchar... Assim sendo, meu problema foi resolvido e agora as consultas funcionam perfeitamente...
     
    Obrigado,
     
    Augusto
    terça-feira, 23 de outubro de 2007 12:11