QUERY FUNCIONA NO ACCESS MAS NÃO NO VB6. PORQUE?
SELECT
PR.DataCadastro, PR.QtdeCadastro, PR.Negativo, PR.Bloqueado, PR.valCusto,
PR.valVenda, PR.TipoMoeda, PR.Desconto, PR.CodigoBarras,
PR.codLote, IIF(ISNULL(LOT.Data) = TRUE, NULL, FORMAT(LOT.Data,[ô]DD/MM/YYYY[ô])),
SWITCH(ISNULL(LOT.ID_Lote) = TRUE, [ô]LOTE EXCLUIDO[ô], ISNULL(LOT.ID_Lote) = FALSE, LOT.Origem),
LOT.Descricao,
PR.codFornecedor,
SWITCH(ISNULL(FOR.ID_Fornecedor) = TRUE, [ô]FORNECEDOR EXCLUIDO[ô], ISNULL(FOR.ID_Fornecedor) = FALSE, FOR.Nome),
SWITCH(ISNULL(FOR.Tipo) = TRUE, NULL, FOR.Tipo = [ô]F[ô], [ô]FISICO[ô], FOR.Tipo = [ô]J[ô], [ô]JURIDICO[ô]),
(SELECT FORMAT(LAST(VE.Data),[ô]DD/MM/YYYY[ô]) FROM tblVendidos VI INNER JOIN tblVendas VE ON VI.codVenda = VE.codCadastro WHERE VI.codProduto = PR.codCadastro)
FROM (
SELECT
PR.*, FOR.*, LOT.*
FROM ((tblProdutos PR
LEFT JOIN (SELECT codCadastro AS ID_Fornecedor, Tipo, Nome
FROM tblFornecedor) AS FOR
ON FOR.ID_Fornecedor = PR.codFornecedor)
LEFT JOIN (SELECT codCadastro AS ID_Lote, Data, Origem, Descricao
FROM tblLotes) AS LOT
ON LOT.ID_Lote = PR.codLote)
) AS PRO
WHERE PR.codCadastro = 7199
Faço essa consulta no Access e funciona normalmente, mas quando passo para o VB6
é retornado erro no FROM.
Também tenho a ferramenta [ô]RazorSQL[ô] para gerenciar minhas consultas SQL, e lá também
funciona normalmente.
Não deveria funcionar no VB também?
Obrigado!
Você não está fazendo as quebras de linhas, talvez seja isso. Geralmente o pessoal faz assim:
Poderia fazer assim também:
Dim sql as String
Sql = [Ô]SELECT PR.DataCadastro, PR.QtdeCadastro, PR.Negativo, PR.Bloqueado, PR.valCusto, [Ô]
Sql = Sql & [Ô]PR.valVenda, PR.TipoMoeda, PR.Desconto, PR.CodigoBarras, [Ô]
Sql = Sql & [Ô]PR.codLote, IIF(ISNULL(LOT.Data) = TRUE, NULL, FORMAT(LOT.Data,[ô]DD/MM/YYYY[ô])), [Ô]
etc
Poderia fazer assim também:
sql = [Ô]SELECT PR.DataCadastro, PR.QtdeCadastro, PR.Negativo, PR.Bloqueado, PR.valCusto, [Ô] [txt-color=#e80000]& _[/txt-color]
[Ô]PR.valVenda, PR.TipoMoeda, PR.Desconto, PR.CodigoBarras, [Ô] [txt-color=#e80000]& _[/txt-color]
[Ô]PR.codLote, IIF(ISNULL(LOT.Data) = TRUE, NULL, FORMAT(LOT.Data,[ô]DD/MM/YYYY[ô])), [Ô] [txt-color=#e80000]& _[/txt-color]
etc
Apenas aqui não coloquei as quebras Jaba, mas lá na IDE eu estou usando desse jeito que falou.
A única coisa que não tentei foi formar apenas 1 linha e ver o que dá. Vou tentar agora!
A única coisa que não tentei foi formar apenas 1 linha e ver o que dá. Vou tentar agora!
Mesma coisa cara, coloquei tudo em 3 linhas porque a IDE não aceitou 1 apenas, e mesmo assim retornou o mesmo erro!
Põe aqui exatamente como está fazendo. E se possÃvel, envia uma imagem com o erro gerado.
[Ô]SELECT [Ô] & _
[Ô]PR.DataCadastro, PR.QtdeCadastro, PR.Negativo, PR.Bloqueado, PR.valCusto, [Ô] & _
[Ô]PR.valVenda, PR.TipoMoeda, PR.Desconto, PR.CodigoBarras, [Ô] & _
[Ô]PR.codLote, IIF(ISNULL(LOT.Data) = TRUE, NULL, FORMAT(LOT.Data,[ô]DD/MM/YYYY[ô])), [Ô] & _
[Ô]SWITCH(ISNULL(LOT.ID_Lote) = TRUE, [ô]LOTE EXCLUIDO[ô], ISNULL(LOT.ID_Lote) = FALSE, LOT.Origem), [Ô] & _
[Ô]LOT.Descricao, [Ô] & _
[Ô]PR.codFornecedor, [Ô] & _
[Ô]SWITCH(ISNULL(FOR.ID_Fornecedor) = TRUE, [ô]FORNECEDOR EXCLUIDO[ô], ISNULL(FOR.ID_Fornecedor) = FALSE, FOR.Nome), [Ô] & _
[Ô]SWITCH(ISNULL(FOR.Tipo) = TRUE, NULL, FOR.Tipo = [ô]F[ô], [ô]FISICO[ô], FOR.Tipo = [ô]J[ô], [ô]JURIDICO[ô]), [Ô] & _
[Ô](SELECT FORMAT(LAST(VE.Data),[ô]DD/MM/YYYY[ô]) FROM tblVendidos VI INNER JOIN tblVendas VE ON VI.codVenda = VE.codCadastro WHERE VI.codProduto = PR.codCadastro) [Ô] & _
[Ô]FROM ( [Ô] & _
[Ô]SELECT [Ô] & _
[Ô]PR.*, FOR.*, LOT.* [Ô] & _
[Ô]FROM ((tblProdutos PR [Ô] & _
[Ô]LEFT JOIN (SELECT codCadastro AS ID_Fornecedor, Tipo, Nome [Ô] & _
[Ô]FROM tblFornecedor) AS FOR [Ô] & _
[Ô]ON FOR.ID_Fornecedor = PR.codFornecedor) [Ô] & _
[Ô]LEFT JOIN (SELECT codCadastro AS ID_Lote, Data, Origem, Descricao [Ô] & _
[Ô]FROM tblLotes) AS LOT [Ô] & _
[Ô]ON LOT.ID_Lote = PR.codLote)[Ô] & _
[Ô]) AS PRO [Ô] & _
[Ô]WHERE PR.codCadastro = 7199[Ô]
Acredito que o problema está no JOIN feito para acessar o SELECT de tblFornecedor e tblLotes, o VB não suporta.
Jaba,
O problema está resolvido. O nosso amigo FFCOUTO resolveu e ficou dessa forma:
Eu estava utilizando 1 parenteses à mais em tblProdutos, e também apresentou conflito por conta do ALIAS ser FOR
Obrigado pela força aÃ.
O problema está resolvido. O nosso amigo FFCOUTO resolveu e ficou dessa forma:
[Ô]SELECT codCadastro, ID_Fornecedor, ID_Lote [Ô] & _
[Ô]FROM (SELECT PR.*, FORN.*, LOT.* FROM (tblProdutos AS PR [Ô] & _
[Ô]LEFT JOIN (SELECT codCadastro AS ID_Fornecedor FROM tblFornecedor) AS FORN [Ô] & _
[Ô]ON FORN.ID_Fornecedor = PR.codFornecedor) [Ô] & _
[Ô]LEFT JOIN (SELECT codCadastro AS ID_Lote FROM tblLotes) AS LOT [Ô] & _
[Ô]ON LOT.ID_Lote = PR.codLote) AS PRO [Ô] & _
[Ô]WHERE codCadastro = 7199[Ô]
Eu estava utilizando 1 parenteses à mais em tblProdutos, e também apresentou conflito por conta do ALIAS ser FOR
Obrigado pela força aÃ.
Tópico encerrado , respostas não são mais permitidas