Fórum Problemas com linguagem SQL #244493
26/07/2004
0
Criei um programa em Delphi 6 com banco de dados do Access e utilizei a ferramento ADO para me comunicar com ela, até aí tudo bem, deu tudo certo, abro a tabela, leio, salvo, edito, ou seja, faço tudo normalmente com a tabela. Só que quando fui criar os relatório aí começaram meus problemas, porque?
Bom como fiz os relacionamentos com a tabela criar codigos e linquei com o código de uma outra tabela, mas quando vou criar os relatórios aparecem os códigos em vez dos nomes, já tentei utilizar o ´inner join´, tentei fazer um WHERE Fornec.CodFornec = Produt.CodFornec e mesmo assim não deu certo. O que faço? Como vou conseguir mostrar o nome em vez do código?
Conto com a ajuda dos feras do clube.
Reginaldo
__________________________________
Em terra de programador, quem tem Delphi é rei.
[b:1b6d42c348]Texto editado![/b:1b6d42c348]
Tags de negrito retiradas. Por favor, não o utilize para todo o texto de sua mensagem.
Sandra/Moderação
Ponce :)
Curtir tópico
+ 0Posts
26/07/2004
Cabelo
Poste seu SQL, assim poderia te ajudar melhor..
Cabelo
Gostei + 0
26/07/2004
Ponce :)
SELECT Fornec.*, Produt.*
FROM Fornec, Produt
WHERE Fornec.CodFornec = Produt.CodFornec
ORDER BY Produt.NomeProdut
Mas não está dando certo.
Reginaldo
__________________________________
Em terra de programador, quem tem Delphi é rei.[b:60f70b0118][/b:60f70b0118]
Gostei + 0
26/07/2004
Cabelo
Qual o erro?
Qual banco de dados vc usa??
Cabelo
Gostei + 0
26/07/2004
Emerson Nascimento
pode ocorrer o seguinte: na tabela Fornec existe o campo Nome (nome do fornecedor) e na tabela Produt também tem um campo chamado Nome (dessa vez o nome do produto). A instrução SQL não consegue resolver qual o campo Nome exibir. No seu caso dá pra saber que esse problema ocorre, no mínimo, com o campo CodFornec.
a melhor maneira de resolver esse problema é indicar todos os campos, apelidando os campos que tenham o mesmo nome e que precisam ser listados.
SELECT Fornec.CodFornec, Fornec.Nome NomeFornec, Produt.Nome NomeProd, etc
no exemplo há o campo nome em ambas tabelas. apelidei os dois para não haver confusão. Sei que também há o campo CodFornec em ambas tabelas, mas como vou listar apenas de uma, não preciso colocar nenhum apelido nele.
Gostei + 0
26/07/2004
Cabelo
isto depende do banco d edaod sque vc usa..
se vc estiver por exemplo usando o paradox, vc teria uma mensagem de erro do tipo filed not found..
por isso perguntei qual o banco que ele usa..
O quê vc disse está correto, mas talvez não seja este o problema, já que na manutenção dos registros ele não tem erros, somente no relatório..
Cabelo
Gostei + 0
27/07/2004
Vanius
recentemente apanhei de relatorios utilizando o access como banco de dados.
A única solução que encontrei foi abrir o access, criar uma consulta no proprio access e depois copiei a query para o meu sistema em Delphi.
Tente fazer isto.
[]s,
Vanius
Gostei + 0
27/07/2004
Ponce :)
Você poderia me mandar alguns exemplos de suas consultas no Access para eu ter uma idéia de como montar minhas consultas no Access e depois copiar no Delphi.
Obrigado.
Reginaldo
__________________________________
Em terra de programador, quem tem Delphi é rei.[/b:286c9debcb]
Gostei + 0
18/08/2004
Vanius
Normalmente utilizamos a query +- assim:
SELECT a.CodCliente, B.Nome, C.Cliente
FROM Venda A
INNER JOIN Vendedor B ON A.CodVendedor = B.CodVendedor
INNER JOIN Cliente C ON A.CodCliente = C.CodCliente
Mas o Access nao utiliza a mesma coisa... Ficariá +- assim
SELECT Eleitor.Nome, Eleitor.DataNascimento, Eleitor.RG, Eleitor.CPF,
Eleitor.TituloEleitor, Eleitor.Logradouro, Eleitor.Complemento,
Eleitor.Cep, Bairro.Bairro, Cidade.Cidade, Cidade.UF, Influencia.Influencia,
Regional.Regional, LocalVotacao.LocalVotacao
FROM (Cidade INNER JOIN Bairro ON Cidade.CodCidade = Bairro.CodCidade)
INNER JOIN (Regional INNER JOIN (LocalVotacao INNER JOIN (Influencia
INNER JOIN Eleitor ON Influencia.CodInfluencia = Eleitor.CodInfluencia)
ON LocalVotacao.CodLocalVotacao = Eleitor.CodLocalVotacao)
ON Regional.CodRegional = Eleitor.CodRegional) ON
Bairro.CodBairro = Eleitor.CodBairro
Parece q o Access utiliza um INNER JOIN dentro do outro. E assim vira uma bagunça.
Mas se precisar de mais alguma explicação, entre em contato.
Abraços,
Vanius
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)