ATRIBUIR VALOR A VARIAVEL EM VB6

PAULOROMEIRO 06/01/2014 15:17:21
#432683
Olá.

Estou enfrentando o erro de [ô]Invalid column name e mostra o valor atribuido a uma variavel como o problema

Tenho a seguinte query:

SQL = [Ô] if object_id([ô]tempdb..#MovSeq[ô],[ô]U[ô]) is not null drop table #MovSeq;[Ô] & _
[Ô] declare @Data_Inicio datetime, @Data_Fim datetime; set dateformat dmy; set @Data_Inicio = DataInicio; set @Data_Fim = DataFinal; set @Data_Fim = DateAdd(day, +1, @Data_Fim); [Ô] & _
[Ô] with Mov as ( SELECT EI.Cod_Empresa, EI.Cod_Estoque, EI.Cod_Produto, [ô]E[ô] as Tipo_Mov, E.Dta_Entrada as Data_Mov, EI.id_Doc as NF, EI.Qtde, EI.V_Unitario, EI.V_Total [Ô] & _
[Ô] from Entrada_Itens as EI inner join Entrada as E on EI.Cod_Empresa=E.Cod_Empresa and EI.id_Doc=E.id_Doc [Ô] & _
[Ô] where E.Dta_Entrada >= @Data_Inicio and EI.Cod_Empresa=[ô][Ô] & Sys.Empresa & [Ô][ô] and EI.Cod_Estoque=[ô][Ô] & dcEstoque.BoundText & [Ô][ô] and EI.Cod_Produto=[ô][Ô] & dtProdutos.BoundText & [Ô][ô] [Ô] & _
[Ô] Union [Ô] & _
[Ô] SELECT SI.Cod_Empresa, SI.Cod_Estoque, SI.Cod_Produto, [ô]S[ô], S.Dta_Entrada , SI.id_Doc, -SI.Qtde, SI.V_Unitario, SI.V_Total [Ô] & _
[Ô] from Saida_Itens as SI inner join Saida as S on SI.Cod_Empresa=S.Cod_Empresa and SI.id_Doc=S.id_Doc [Ô] & _
[Ô] where S.Dta_Entrada >= @Data_Inicio and SI.Cod_Empresa=[ô][Ô] & Sys.Empresa & [Ô][ô] and SI.Cod_Estoque=[ô][Ô] & dcEstoque.BoundText & [Ô][ô] and SI.Cod_Produto=[ô][Ô] & dtProdutos.BoundText & [Ô][ô] [Ô] & _
[Ô] Union [Ô] & _
[Ô] SELECT Cod_Empresa, Cod_Estoque, Cod_Produto, [ô]A[ô], @Data_Inicio, null, null, null, null [Ô] & _
[Ô] From Estoque [Ô] & _
[Ô] where Cod_Empresa=[ô][Ô] & Sys.Empresa & [Ô][ô] and Cod_Estoque=[ô][Ô] & dcEstoque.BoundText & [Ô][ô] and Cod_Produto=[ô][Ô] & dtProdutos.BoundText & [Ô][ô]) [Ô] & _
[Ô] SELECT *, Seq= row_number() over (partition by Cod_Empresa, Cod_Estoque, Cod_Produto order by Data_Mov desc, Tipo_Mov desc) into #MovSeq from Mov; [Ô] & _
[Ô] create unique clustered index IndMovSeq on #MovSeq (Cod_Empresa, Cod_Estoque, Cod_Produto, Seq); [Ô] & _
[Ô] SELECT M.Cod_Empresa, M.Cod_Estoque, M.Cod_Produto, P.Descricao,[Ô] & _
[Ô] Estoque= case when M.Seq=1 then E.Qtde_Estoque else (E.Qtde_Estoque - (SELECT sum(Mi.Qtde) from #MovSeq as Mi [Ô] & _
[Ô] Where Mi.Cod_Empresa = M.Cod_Empresa And Mi.Cod_Estoque = M.Cod_Estoque And Mi.Cod_Produto = M.Cod_Produto and Mi.Seq < M.Seq)) end [Ô] & _
[Ô] from #MovSeq as M inner join [Ô] & _
[Ô] Estoque as E on M.Cod_Empresa=E.Cod_Empresa and M.Cod_Estoque=E.Cod_Estoque and M.Cod_Produto=E.Cod_Produto inner join [Ô] & _
[Ô] Produtos as P on M.Cod_Empresa=P.Cod_Empresa and M.Cod_Estoque=P.Cod_Estoque and M.Cod_Produto=P.Cod_Produto [Ô] & _
[Ô] where Data_Mov < @Data_Fim [Ô] & _
[Ô] order by M.Cod_Empresa, M.Cod_Estoque, M.Cod_Produto, Seq desc; [Ô] & _
[Ô] drop table #MovSeq;[Ô]

Como posso solucionar esse problema?

Obrigado
ALVAROVB2009 06/01/2014 20:11:35
#432695
Paulo boa noite, o erro que esta dando é que o nome da coluna esta errado, isso provavelmente esta acontecendo, pq no select o nome da coluna deve estar diferente do que esta no banco e/ou o nome que vc colocou na variável deve ser diferente do nome do select, estou deduzindo pq vc não colocou a variável que esta dando a mensagem, más acredito que seja uma das duas opções que coloquei, da uma olhada ai e depois posta blz
FILMAN 06/01/2014 20:20:31
#432698
Como o próprio erro já diz

Invalid column name (Nome de Coluna Inválido)

Verifica se todos os nome das colunas de cada tabela esta correto, se você montou o SQL e depois alterou a tabela.

o Union ou Union All é interessante verificar que os dois existem diferenças que são de grandes aspectos

Citação:

Explicando de uma forma rápida e sem rodeios:

  • UNION realiza um DISTINCT entre os SELECTS, ou seja, os registros que tiverem informação repetida só apareceram uma vez no ResultSet
  • UNION ALL simplesmente une os SELECTS, ou seja, os registros que tiverem informação repetido apareceram no ResultSet quantas vezes eles existirem


    Existem algumas regras para se usar o UNION e o UNION ALL (e são as mesmas):
  • Os ResultSet devem conter o mesmo número de colunas e devem ser do mesmo tipo (INT, NUMERIC, VARCHAR); caso contrário o SQL Server retornará um erro;
  • O nome das colunas deverá estar no primeiro SELECT e será atribuído as demais colunas;
  • A cláusula de ordenação ORDER BY só poderá ser usada após o último SELECT e ordenará todo o resultado que foi unido pelo UNION ou pelo UNION ALL; caso contrário, o SQL Server retornará um erro.




  • Outra coisa ñao é criticando não, mas leve pelo lado de critica construtiva!

    Não dá para entender nada nesse SQL que você colocou para analisarmos teremos que reorganizar o mesmo para interpretar e conseguir dar uma resposta plausível pra você.

    Onde acontece o erro em qual linha?
    Qual o nome da coluna que é alertada (se for mostrada em mensagem).


    Tente descrever melhor ou siga as dicas que coloquei no inicio da resposta para ve rse consegue solucionar o problema!

    Valeu.
    PAULOROMEIRO 07/01/2014 08:22:02
    #432717
    Citação:

    :
    Paulo boa noite, o erro que esta dando é que o nome da coluna esta errado, isso provavelmente esta acontecendo, pq no select o nome da coluna deve estar diferente do que esta no banco e/ou o nome que vc colocou na variável deve ser diferente do nome do select, estou deduzindo pq vc não colocou a variável que esta dando a mensagem, más acredito que seja uma das duas opções que coloquei, da uma olhada ai e depois posta blz



    O erro aparece conforme imagem e diz respeito ao valor que é atribuido à variável @Data_Inicio. Esse valor é uma váriável que está no formulário chamada DataInicio.
    Ex. Quando digitado o valor no formulário a varíavel DataInicio recebe esse valor e ele é passado para a Query. é exatamente nesse ponto que ocorre o erro.
    Testei a query no SSMS e funcionou perfeitamente retornando o que é esperado, meu grande problema está em colocar essa query dentro do VB6.
    As duas variáveis são tipo data e gostaria de saber se a forma como está sendo atribuido o valor da variável na query está certo.


    Obrigado pela ajuda.

    PAULOROMEIRO 07/01/2014 08:56:54
    #432719
    Obrigado pela ajuda.

    A solução foi atribuir a variável da seguinte forma:

    @Data_Inicio = [Ô] & Format ( DataInicio,[Ô]yyyy-mm-dd[Ô]) & [Ô];

    Valeu.
    Tópico encerrado , respostas não são mais permitidas