Duvida SQL DELPHI

Delphi

25/08/2014

Pessoal, boa noite.

Estou com uma dúvida de como fazer isso em meu sistema, desenvolvi um sistema de marcação de consulta para um consultório, sistema já está rodando normal, só queria realizar a seguinte atualização nele.

Bem, tenho uma aba de cadastro de pacientes que fica armazenado os dados de todos os pacientes, quando o mesmo for querer marcar uma consulta, o recepcionista marca a consulta e o médico atende, depois recepcionista marca o retorno, depois de marcado o médico atende e fecha a consulta, até aí tudo bem. Depois de 1,2 meses este mesmo paciente volta lá, então recepcionista faz o mesmo processo. Quando a consulta/Retorno é fechada, ele gera outro registro dentro da coluna "fechadas" então este paciente contém 2 registro lá dentro desta tabela, então o Prontuário dele fica em 2 registro, eu preciso que quando o médico tiver atendendo este paciente, ele clique no botão e com o código navegue e puxe todos os registros deste paciente (prontuário) e mostre em algum "memo" só para o médico ter um controle. Eu tentei usar desta forma só que ele só mostra 1 Prontuário, quando o paciente tiver na 2,3 consulta não vai aparecer todos os prontuários, teria como ele navegar em todos os registros de prontuário e jogar em um MEMO?

////
begin
formprincipal.ADOQuery1Consultas_fechadas_retorno.Active := false;
formprincipal.ADOQuery1Consultas_fechadas_retorno.SQL.Clear;
formprincipal.ADOQuery1Consultas_fechadas_retorno.SQL.Add('Select *');
formprincipal.ADOQuery1Consultas_fechadas_retorno.SQL.Add('from fechadas_retorno where nome like ' + quotedstr(dbedit58.Text));
formprincipal.ADOQuery1Consultas_fechadas_retorno.Active := true;
while not formprincipal.ADOQuery1Consultas_fechadas_retorno.eof do
begin
if (formprincipal.ADOQuery1Consultas_fechadas_retornoProntuario.Value<>'') then
dbmemo6.Text := formprincipal.ADOQuery1Consultas_fechadas_retornoProntuario.Value;

formprincipal.ADOQuery1Consultas_fechadas_retorno.Next;
end;
if formprincipal.ADOQuery1Consultas_fechadas_retornoProntuario.Value = '' then
ShowMessage('Não existe prontuário para este paciente');

end;

///

o código está pegando informação do DBEDIT58, porque está ligado ao mesmo registro do DBGRID, quando eu seleciono os pacientes na DBGRID ele vai jogando o nome do mesmo para dentro do dbedit58.

desse jeito funciona, só que navega só em 1 registro, se tiver vários registro do mesmo paciente ele não joga...

Obrigado pessoal.
Felipe Campos

Felipe Campos

Curtidas 0

Melhor post

Joel Rodrigues

Joel Rodrigues

10/09/2014

Observe a seguinte linha:
dbmemo6.Text := formprincipal.ADOQuery1Consultas_fechadas_retornoProntuario.Value;

Apesar de fazer um loop, você está redefinindo todo o texto do memo em cada iteração. O que você deseja é mostrar todas as consultas em um só memo, correto? Então você precisa CONCATENAR o texto, ou adicionar linhas ao memo.
Por exemplo:
memoProntuarios.Lines.Add(formprincipal.ADOQuery1Consultas_fechadas_retornoProntuario.AsString);

Assim serão adicionadas várias linhas. Você pode inclusive aplicar alguma formatação, como inserir uma linha em branco, ou adicionar a data da consulta junto ao prontuário.
Observação: use um TMemo e não um TDBMemo, pois esse memo não estará ligado a um único campo. Ele receberá valores dinamicamente.
GOSTEI 1

Mais Respostas

Joel Rodrigues

Joel Rodrigues

25/08/2014

Movi o tópico para a sala de Delphi.
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

25/08/2014

Ah, agora uma sugestão pessoal.
Nesse caso, EU adicionaria, por exemplo, uma aba de "Consultas anteriores" ou "Registro do paciente", com um grid listando esses registros. Aí poderia colocar um TDBMemo ligado ao campo em questão para mostrar o texto de forma mais fácil de visualizar.
GOSTEI 0
Felipe Campos

Felipe Campos

25/08/2014

Ah, agora uma sugestão pessoal.
Nesse caso, EU adicionaria, por exemplo, uma aba de "Consultas anteriores" ou "Registro do paciente", com um grid listando esses registros. Aí poderia colocar um TDBMemo ligado ao campo em questão para mostrar o texto de forma mais fácil de visualizar.



Obrigado pela resposta meu amigo, eu já tinha conseguido fazer, e esqueci de postar aqui como resolvido. Realmente o que você disse é o correto, desta forma funcionou perfeitamente, obrigado amigo, segue abaixo o meu código pronto e funcionando. Obrigado!

procedure TForm5.PNGButton14_retorno_fechadasClick(Sender: TObject);
begin
formprincipal.ADOQuery1Consultas_fechadas_retorno.Active := false;
formprincipal.ADOQuery1Consultas_fechadas_retorno.SQL.Clear;
formprincipal.ADOQuery1Consultas_fechadas_retorno.SQL.Add('Select *');
formprincipal.ADOQuery1Consultas_fechadas_retorno.SQL.Add('from fechadas_retorno where nome like ' + quotedstr(dbedit58.Text));
formprincipal.ADOQuery1Consultas_fechadas_retorno.Active := true;
while not formprincipal.ADOQuery1Consultas_fechadas_retorno.eof do //percorre os registros
begin
if (formprincipal.ADOQuery1Consultas_fechadas_retornoProntuario.Value<>'') then // verifica se campo prontuário existe VALOR,
//deixa invisivel as outras funções e aparece só o MEMO com Prontuário //caso exista executa código abaixo
Memo2.Visible := true;

Memo2.Lines.Add('-------------------------------------------------');
Memo2.Lines.Add(formprincipal.ADOQuery1Consultas_fechadas_retornoProntuario.AsString);

formprincipal.ADOQuery1Consultas_fechadas_retorno.Next; //passa pro proximo registro
end;
if formprincipal.ADOQuery1Consultas_fechadas_retornoProntuario.Value = '' then //caso não exista valor no campo prontuario, //executa função abaixo
ShowMessage('Paciente ' + dbedit58.Text + ' não contém prontuário');
end;


///



Obrigado amigo.
GOSTEI 0
Felipe Campos

Felipe Campos

25/08/2014

Ah, agora uma sugestão pessoal.
Nesse caso, EU adicionaria, por exemplo, uma aba de "Consultas anteriores" ou "Registro do paciente", com um grid listando esses registros. Aí poderia colocar um TDBMemo ligado ao campo em questão para mostrar o texto de forma mais fácil de visualizar.



Amigo, em relação a sua sugestão, é boa, e ela contém em meu programa, só que em outro form, e pra ele visualizar ele teria que saí da consulta e acessar por outro form essas informações, e tando por uma dbgrid, listaria 1 de prontuário de cada vez. Desta forma que está agora, ele quando estiver atendendo o paciente na tela de digitação de prontuário do paciente atual , ele clica em um ícone ao lado e ele joga o MEMO na tela com todos os prontuários, ele só faz olhar e digitar no memo abaixo o novo prontuário, ficou bem bacana. o Memo com registros dos prontuários antigos aparece em cima, e embaixo da tela, aparece o novo memo que ele pode começar a fazer o novo prontuário olhando pros antigos... Bem legal...
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

25/08/2014

Show de bola, amigo.
Que bom que está funcionando então.
Obrigado pleo retorno e por compartilhar o código.
Um abraço e bons códigos.
GOSTEI 0
POSTAR