Ir ao conteúdo
  • Cadastre-se

Pascal/Delphi Delphi: Mostrar em um DBText informações do banco MySQL?


Ir à solução Resolvido por Rafael077,

Posts recomendados

Estou fazendo um programa em delphi que pesquisa, insere e mostra dados de alunos.
Tenho duas tabelas no banco interligadas por uma FK, e no programa uma FDQuery e um DataSource para cada tabela(alunos e observacoes)

(FDQuery1=alunos / FDQuery2=observacoes).

 

A tabela alunos tem os campos: matricula(Chave Primaria, unica), nome, turma, curso, data_de_nascimento, etc. (e possui diferentes alunos já cadastrados)

A observacoes tem id_observacao(FK ligada com a matricula da tabela alunos), matricula, observacao, data.

 

Basicamente o que estou fazendo é:

Estou usando um DBEdit (ligado no campo observacao pelo datasource) para inserir informações na tabela observacoes no banco.

Então essas informações estão sendo inseridas na tabela observacoes, e já estão ficando interligadas no aluno cadastrado que está selecionado na FDQuery1 (estão interligados através da matricula)

comando.jpg.8f201f2f98de6902b912839411aa1043.jpg

 

 

O meu problema é:

 

Como faço para mostrar em um DBText as informações que foram inseridas(pelo DBEdit) na tabela observacoes (FDQuery2), dependendo do aluno(cadastrado) que esta esta selecionado na FDQuery1 (tabela alunos).

 

Eu sei que está meio complicado este meu  problema, mas se tiverem duvidas perguntem aqui, que irei responde-las.

 

Segue algumas imagens para vcs entenderem melhor:

 

Screenshot_6.jpg.7a73819c4727b7e0d5d19548139a48db.jpgproblema.jpg.c5a291a1870ab5e8e25014b8962d6f71.jpgScreenshot_2.jpg.0cc241c060728155f33b7ccad99a3882.jpg

 

Link para o comentário
Compartilhar em outros sites

Se um aluno pode ter várias observações, então com o dbtext você não consegue fazer isso, ele irá exibir a mensagem de apenas um registro.

 

Agora,se eu compreendi o que precisas, por que não usas um dbgrid no lugar do dbtext? Assim, bastarias filtrar a FDQuery2 e buscar todos os registros com a matrícula igual da tabela alunos.

 

Como estás preparando a tabela observações para inserir o registro, antes do evento mostrarClick()? estás usando o botão mostrar para inserir registros?

Link para o comentário
Compartilhar em outros sites

@Fazzioni Sim um aluno pode ter varias observações, mas se eu uso um dbgrid, ele mostra as observações de todos os alunos, e eu preciso que mostre somente do aluno que está selecionado (na FDQuery1).

No caso eu teria que filtrar a FDQuery2 pela matricula do aluno selecionado certo? Pois cada aluno tem sua matricula unica. Se você puder me ajudar em como fazer essa filtragem, porque não consegui.

E sim o botão 'mostrar' faz o inserimento, pois o DBEdit ja está conectado pelo DataSource na FDQuery2 (tabela observacoes), a procedure mostrarClick é do botão 'mostar'.

Link para o comentário
Compartilhar em outros sites

@Rafael077  claro, você pode fazer isso por meio do SQL:

 


var

  Search : string[10];

begin

try

Search :=  datamodule2.fdquery1.fieldbyname('matricula').asstring;

datamodule2.FDQuery2.close;

datamodule2.FDQuery2.SQL.Clear;

datamodule2.FDQuery2.SQL.Add('SELECT * FROM observacoes WHERE matricula =  '+chr(39)+ Search +chr(39));

datamodule2.FDQuery2.Open;

except
on e :exception do
ShowMessage(e.ClassName+': '+e.message);
end;

end;

 

você não está utilizando o procedimento INSERT ou APPEND para inserir novos registros?

 

 

 

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Solução

@Fazzioni Estou utilizando o append para inserir.

 

Então no caso esse código que você postou, eu colocaria ele onde? Na procedure de outro button? Pois eu precisaria mostrar as observacoes no dbgrid que você comentou né. 

Desculpe a minha leiguice, é que sou iniciante no quesito Delphi.

Link para o comentário
Compartilhar em outros sites

Em 02/11/2019 às 15:25, Fazzioni disse:

@Rafael077  claro, você pode fazer isso por meio do SQL:

 

 


var

  Search : string[10];

begin

try

Search :=  datamodule2.fdquery1.fieldbyname('matricula').asstring;

datamodule2.FDQuery2.close;

datamodule2.FDQuery2.SQL.Clear;

datamodule2.FDQuery2.SQL.Add('SELECT * FROM observacoes WHERE matricula =  '+chr(39)+ Search +chr(39));

datamodule2.FDQuery2.Open;

except
on e :exception do
ShowMessage(e.ClassName+': '+e.message);
end;

end;

 

 

você não está utilizando o procedimento INSERT ou APPEND para inserir novos registros?

 

 

 

Estou utilizando o append para inserir.

 

Então no caso esse código que você postou, eu colocaria ele onde? Na procedure de outro button? Pois eu precisaria mostrar as observacoes no dbgrid que você comentou né. 

Desculpe a minha leiguice, é que sou iniciante no quesito Delphi.

Link para o comentário
Compartilhar em outros sites

Em 02/11/2019 às 15:44, Rafael077 disse:

@Fazzioni Estou utilizando o append para inserir.

 

Então no caso esse código que você postou, eu colocaria ele onde? Na procedure de outro button? Pois eu precisaria mostrar as observacoes no dbgrid que você comentou né. 

Desculpe a minha leiguice, é que sou iniciante no quesito Delphi.

Existem diversos locais que pode ser inserido e depende, de uma forma geral, como está a estrutura dos formulários de seu aplicativo.

 

um bom lugar seria depois do procedimento de mostrar as informações (nome, turma, matricula...), em outras palavras, basicamente quando você selecionar um registro da tabela aluno..

Link para o comentário
Compartilhar em outros sites

@Fazzioni  Funcionou mano! Valeu mesmo.

Só me apareceu outro probleminha, eu coloquei esse código seu em uma procedure de um buttom no mesmo form com um dbgrid para mostrar as observações e o DBEdit para inserir as observações, e quando eu aperto no button, ele mostra certinho no dbgrid como deveria, só que acaba mostrando no DBEdit também, e não queria que isso ocorrese, pois o DBEdit preciso apenas para inserir, só que está apenas editando a observação selecionada.

Tem um jeito de eu fazer que o DBEdit não selecione as observações do codigo que você me passou? Que o DBEdit fique em branco, para eu poder inserir algo novo por ele?

Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...