SQL ERRO DE SINTAXE

FILMAN 09/05/2012 01:01:59
#401600
Pessoal devo esta com muito sono e não estou conseguindo achar o erro mais vamos lá

Tenho um SELECT onde quero retornar valores de 4 tabelas de forma comparativa

A pesquisa é relacionada na clausula WHERE como placa_do_veiculo e a data_de_lancamento

SQL = [Ô]SELECT * FROM ((tbAbastecimento INNER JOIN tbVeiculos [Ô] & _
[Ô]ON tbAbastecimento.vei_id = tbVeiculos.vei_id) INNER JOIN tbLancamentos ON [Ô] & _
[Ô]tbAbastecimento.aba_posto = tbLancamentos.lan_info_adic) INNER JOIN tbContas.con_id ON [Ô] & _
[Ô]tbLancamentos.con_id = tbContas.con_id WHERE tbVeiculos.vei_placa=[ô][Ô] & _
UCase(sPlaca) & [Ô][ô] AND tbAbastecimento.aba_data=[ô][Ô] & sData & [Ô][ô][Ô]



Só que esta dando erro de sintaxe na expressão JOIN


Obrigado
ALVAROVB2009 09/05/2012 08:45:56
#401608
Resposta escolhida
Filman eu não vi nada de errado na sua sql, o que fiz foi substituir o nome das tabelas, para a consulta ficar menor e evitar o erro de digitação

Algumas obs
Gostaria de saber algumas coisas, qual banco vc esta usando?
Se for Access a consulta com a data esta errada, ela tem que estar entre # e no formado MM/DD/YYYY
Se for Mysql a consulta com a data esta errada, ela tem que estar no format YYYY-MM-DD
Isso se os campos estiverem com o tipo data, que acredito que esteja, estou falando isso pois peguei muitos banco com o campo data como VARCHAR

Se estiver usando Mysql não é necessário o uso dos ( ) na consulta

Segue um exemplo de consulta no mysql
StrSql = [Ô]SELECT cl.Nome AS Remetente, cl2.Nome AS Destinatario, v.DataEmissao AS Emissao_ValeFrete, c.DataEmissao AS Emissao_Ctrc , v.NValeFrete, a.Descricao, lv.Data Data_Lancamento, lv.Tipo, lv.Credito, lv.Debito [Ô]
StrSql = StrSql & [Ô]FROM valefrete v INNER JOIN valefretexconhecimento vc ON v.CodValeFrete = vc.CodValeFrete INNER JOIN conhecimento c ON c.NConhecimento = vc.NConhecimento INNER JOIN lancamentovalefrete lv ON lv.CodValeFrete = v.CodValeFrete INNER JOIN acertos a ON a.CodAcerto = lv.CodLancamento INNER JOIN clientes cl ON cl.CodCliente = c.CodRemetente INNER JOIN clientes cl2 ON cl2.CodCliente = c.CodDestinatario [Ô]


Rode essa primeira parte no banco e veja qual é o resultado, geralmente ele mostra qual é a linha que esta errada, o que pode estar acontecendo é nome do campo errado
SELECT * FROM ((tbAbastecimento A
INNER JOIN tbVeiculos V ON A.vei_id = V.vei_id)
INNER JOIN tbLancamentos L ON A.aba_posto = L.lan_info_adic)
INNER JOIN tbContas.con_id C ON L.con_id = C.con_id

WHERE V.vei_placa=[ô][Ô] & UCase(sPlaca) & [Ô][ô] AND A.aba_data=[ô][Ô] & sData & [Ô][ô][Ô]

Qqer coisa posta ai ok
FILMAN 09/05/2012 10:12:42
#401617
Caro ALVAROVB2009 obrigado pela dica mais ja descobri o que era o erro

veja abaixo

No Terceiro INNER JOIN ao invpes de direcionar uma tabela para ser comparada eu estava setando um campo da tabela

INNER JOIN [txt-color=#e80000]tbContas.con_id[/txt-color] C ON L.con_id = C.con_id

ocorreto é:
INNER JOIN [txt-color=#e80000]tbContas[/txt-color] C ON L.con_id = C.con_id


Obrigado
pela ajuda
Tópico encerrado , respostas não são mais permitidas