Jump to content

Como exibir textos ao invés de códigos em consulta Grid no Delphi com MySQL?


lpdias

Postagens Recomendadas

Boa tarde pessoal!

Sou novo no fórum e também no DELPHI e por esse motivo procuro a ajuda de vocês.

Estou desenvolvendo um sistema para controlar manutenções veiculares. Uso o mysql e fiz algumas tabelas como por exemplo: centro de custo, placas, local de aplicação etc... usando o ID com autoincremento.

Minha dúvida está basicamente em como consultar esses dados, pois a minha tabela movimentacao, contem a chave estrangeira para todas as outras e com isso ela puxa apenas os id's.

Gostaria de mostrar ela no Form com os dados e não com os id´s.

Ai fiz uma query e a instrução SQL que passei, trabalha bem porem, pois fiz as ligações com o left join e tudo aparece bem.

Para o grid da consulta aparecer como eu quero, adicionei os fields também.

Mas foi quando resolvi colocar um parâmetro na query, que tudo desandou.

A partir disso não consigo obter o resultado esperado que é fazer a consulta no grid cm os nomes ao invés dos códigos.

 

Será que alguém consegue me ajudar ?

 

Agradeço desde já.

  • Curtir 1
Link to comment
Compartilhe em outros sites

  • Casa do Desenvolvedor mudou o título para Como exibir textos ao invés de códigos em consulta Grid no Delphi com MySQL?

1) tome cuidado ao criar suas queries quando usando multiplas tabelas num "JOIN" implicito ou explicito, pois, lembre-se que vc estara mulriplicando os registros das tabelas: tabA 10 registros X tabB 4 registros = 40 registros...

2) tente criar suas queries na ordem que desejar o resultado... ou seja, leve em consideração a "lóhica" que "liga" as informações...

3) se você ainda não conhece, tente ler e aprender a criar as "CET" ( Common Expression Table), que uma forma mais avançada, porém mais podetosa para obter os resultados com melhor performance! 

4) lembre-se que toda "junção de tabelas" irá gerar uma "query read-only", aliás, por padrão as "queries" são, de fato, read-only.

Após isso, vamos ver se entendiseu caso...

1) se todas as tabelas possuem um "ID" único (mesmo que seja auto-incremento ou não... não importa), então, você está no caminho certo num banco de dados "RELACIONAL" (como o MySql).

2) se todas as "tabelas DETAILS" (Detalhes) possuem as chaves-estrangeiras (os campos ID das tabelas-Master, você está no caminho certo.

3) agora para juntá-las e obter o resultado esperado, você deve estar atento na criação da "query" seguindo a lógica adequada, por exemplo:

TabA (master)i = id, nome, dtNasc

TabB (detail)  = id, id-MASTER, cpf, rg, etc...

TabC (detail) = id, id-MASTER, endereco, etc...

.... e muitas outras... inclusive você pode criar "tabelas-DETALHES  de outras tabelas-DETALHES" ... complicando ainda mais os níveis de relacionamento, sempre tomando o cuidado para não criar um relacionamento/referência  "cruzado/a", o que poderia levar a um looping infinito... 

QUERY:

select A.NOME, A.DTNASC, B.CPF, B.RG, C.ENDERECO .... from TabA A

.... aqui vc como o seu "JOIN" condicional, ou seja como as tabelas serão ligadas...  ou os "LEFT/RIGTH JOIN"... ex: A.Id = B.IDMASTER on TabB B........

where A.ID = XXX   .... no final vc pode filtrar os registros com a cláusula " WHERE" 

vc pode filtrar os registros nas tabelas "details" (também) contudo isso pode gerar um tempo maior no processamento, e em tabelas muito grande isso pode ser um grande problema...

-----------

"TabA  A" significa que ela terá um "ALIAS" (apelido) chamado "A" ( ou qualquer outra coisa que não seja um comando interno ou já usado em outra parte da expressão sql em questão). Desta maneira, eu usei "TabB  B" e "TabC  C" para as outras 2 tabelas no "JOIN" ( no "FROM" daquela tabela entendeu?)

NOTA: PRESTE ATENÇÃO NO USO DO "JOINssss"

LEFT JOIN  - os dados importantes estão na tabela à esquerda da expressão SQL 

RIGHT ... na tabela do lado direito... ou seja nos detalhes

ALL ... nos dois lados e qdo não houver "match"  então os dados/informação serão mostrado como um valor em branco

Editado por backupnumberum
Link to comment
Compartilhe em outros sites

Crie uma conta ou entre para comentar 😀

Você precisa ser um membro para deixar um comentário.

Crie a sua conta

Participe da nossa comunidade, crie sua conta.
É bem rápido!

Criar minha conta agora

Entrar

Você já tem uma conta?
Faça o login agora.

Entrar agora


×
×
  • Create New...