ERRO SQL
mSql = [Ô] SELECT Comissao.Contrato,Comissao.Controle,Comissao.Credito,Comissao.Data,Comissao.NotaFiscal, [Ô] + _
[Ô] Entrada.Valor,Entrada.Id,Entrada.Cliente,Entrada.PComissao, [Ô] + _
[Ô] Periodo.[Meses],Periodo.[Numero] [Ô] + _
[Ô] FROM Comissao INNER JOIN (Entrada ON Entrada.Id = Val(Comissao.Controle)) LEFT JOIN (Periodo ON LEFT(Comissao.[Data], LEN(Comissao.[Data])-5) = Periodo.[Meses]) [Ô] + _
[Ô] WHERE Comissao.Data In ([Ô] + DadosMes + [Ô]) AND Entrada.Id In ([Ô] + DadosID + [Ô]) order by Comissao.Data;[Ô]
Onde estou errando nessa SQL?
Esta dando o erro: Erro de sintaxe na operação JOIN
[Ô] Entrada.Valor,Entrada.Id,Entrada.Cliente,Entrada.PComissao, [Ô] + _
[Ô] Periodo.[Meses],Periodo.[Numero] [Ô] + _
[Ô] FROM Comissao INNER JOIN (Entrada ON Entrada.Id = Val(Comissao.Controle)) LEFT JOIN (Periodo ON LEFT(Comissao.[Data], LEN(Comissao.[Data])-5) = Periodo.[Meses]) [Ô] + _
[Ô] WHERE Comissao.Data In ([Ô] + DadosMes + [Ô]) AND Entrada.Id In ([Ô] + DadosID + [Ô]) order by Comissao.Data;[Ô]
Onde estou errando nessa SQL?
Esta dando o erro: Erro de sintaxe na operação JOIN
tenta assim
mSql = [Ô] SELECT Comissao.Contrato,Comissao.Controle,Comissao.Credito,Comissao.Data,Comissao.NotaFiscal, [Ô] + _
[Ô] Entrada.Valor,Entrada.Id,Entrada.Cliente,Entrada.PComissao, [Ô] + _
[Ô] Periodo.[Meses],Periodo.[Numero] [Ô] + _
[Ô] FROM Comissao INNER JOIN Entrada (LEFT JOIN Periodo ON LEFT(Comissao.[Data], LEN(Comissao.[Data])-5) = Periodo.[Meses]) ON Entrada.Id = Val(Comissao.Controle) [Ô] + _
[Ô] WHERE Comissao.Data In ([Ô] + DadosMes + [Ô]) AND Entrada.Id In ([Ô] + DadosID + [Ô]) order by Comissao.Data;[Ô]
mSql = [Ô] SELECT Comissao.Contrato,Comissao.Controle,Comissao.Credito,Comissao.Data,Comissao.NotaFiscal, [Ô] + _
[Ô] Entrada.Valor,Entrada.Id,Entrada.Cliente,Entrada.PComissao, [Ô] + _
[Ô] Periodo.[Meses],Periodo.[Numero] [Ô] + _
[Ô] FROM Comissao INNER JOIN Entrada (LEFT JOIN Periodo ON LEFT(Comissao.[Data], LEN(Comissao.[Data])-5) = Periodo.[Meses]) ON Entrada.Id = Val(Comissao.Controle) [Ô] + _
[Ô] WHERE Comissao.Data In ([Ô] + DadosMes + [Ô]) AND Entrada.Id In ([Ô] + DadosID + [Ô]) order by Comissao.Data;[Ô]
coloque apelidos nos nomes das tabelas
por exemplo
SELECT
C.Contrato,
C.Controle,
C.CODIGO,
C.Data,
E.Id,
E.Cliente
FROM Comissao AS C
INNER JOIN Entrada AS E
ON C.Id= E.Id
WHERE C.Id = 1 ORDER BY C.Data;
sempre compara inner join com o [Ô]id[Ô] de cada tabela para que os dados da outra tabela for alterada possa atualizar sua consulta
por exemplo
SELECT
C.Contrato,
C.Controle,
C.CODIGO,
C.Data,
E.Id,
E.Cliente
FROM Comissao AS C
INNER JOIN Entrada AS E
ON C.Id= E.Id
WHERE C.Id = 1 ORDER BY C.Data;
sempre compara inner join com o [Ô]id[Ô] de cada tabela para que os dados da outra tabela for alterada possa atualizar sua consulta
Onde você esta montando esse SQL dentro do vb6?
Se for vb6, não pode usar o + para concatenação e sim o &!
Pelo que eu percebi esta usando banco access correto?
Tente esse SQL abaixo
Se for vb6, não pode usar o + para concatenação e sim o &!
Pelo que eu percebi esta usando banco access correto?
Tente esse SQL abaixo
mSQL = [Ô][Ô]
mSQL = mSQL & [Ô]SELECT [Ô]
mSQL = mSQL & [Ô] C.Contrato,C.Controle,C.Credito,C.Data,C.NotaFiscal, [Ô]
mSQL = mSQL & [Ô] E.Valor,E.Id,E.Cliente,E.PComissao,P.Meses,P.Numero [Ô]
mSQL = mSQL & [Ô] FROM [Ô]
mSQL = mSQL & [Ô] (Comissao C INNER JOIN Entrada E ON (E.Id = Val(C.Controle)))[Ô]
mSQL = mSQL & [Ô] LEFT JOIN Periodo P ON (LEFT(C.Data, LEN(C.Data)-5) = P.Meses) [Ô]
mSQL = mSQL & [Ô] WHERE C.Data In ([Ô] & DadosMes & [Ô]) AND E.Id In ([Ô] & DadosID & [Ô]) [Ô]
mSQL = mSQL & [Ô] ORDER BY C.Data[Ô]
Filman, a sua sugestão deu certo. Engraçado que uso o + em outros Select dentro do VB e não da problema! Vai entender né!!!
O problema de usar o + para concatenar os valores é que se tiver alguma variável do tipo numérica no meio ali o VB vai querer considerar tudo como sendo número, então quando ele tenta converter as strings em número para fazer a soma da erro
O problema não é nem o [Ô]+[Ô] nem o [Ô]&[Ô], o problema é montar queries concatenando SQL com valores. Use parametrização.
Tópico encerrado , respostas não são mais permitidas