Ir para conteúdo
Fórum Script Brasil
  • 0

Problemas em Select para DBGRID


Ronaldo Lanhellas

Pergunta

Bom gente, estou a quase 1 semana (sim isso mesmo), quebrando cabeça para solucionar um problema que é o seguinte: Estou desenvolvendo um software para uma clinica, neste sistema tem uma área chamada AGENDA DE CONSULTAS, que eu irei por as consultas agendadas pela recepcionista.

A minha estrutura de tabelas para isso está assim:

TABELA AGENDA

campos:

DATA

HORA

PACIENTEID (campo fk da tabela PACIENTE)

MEDICOID (campo fk da tabela MEDICO)

Bem, eu peço em um formulario qualquer que o usuario preencha os campos Data,Hora,Medicoid e PacienteId. Até ae tudo bem !

Depois mostro os dados da agenda todos em uma DBGRID, ae começa o problema.

Primeiro Problema: a dbgrid me mostra as colunas assim( DATA, HORA ,PACIENTEID, MEDICOID), o que eu queria que fosse feito é mudar o PACIENTEID e MEDICOID para em vez de mostrar o ID do PACIENTE e do MEDICO, mostrasse o NOME. Ou seja, na dbgrid aparecesse assim:

DATA HORA NOME DO PACIENTE NOME DO MEDICO

Segundo Problema: na dbgrid ele mostra os dados de todos os dias, coloquei um DateTimePicker para pegar uma data selecionada pelo usuário, e gostaria de usar esta data para filtrar os campos mostrados no dbgrid, por exemplo: se o usuário escolher a data 23.08.2010, a dbgrid vai filtrar os campos apenas para esta data.

Bom aguardo "apressadamente" a resposta :D, pois preciso deste software completo até Quarta-Feira e só falta alguns detalhes e este é um deles !!

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Para a sua primeira questão adapte o select abaixo:

select TblMedicos.nomemedico, Tblpacientes.nomepaciente, TblAgenda.data, TblAgenda.hora, TblAgenda.medico, TblAgenda.paciente from

tblAgenda, TblMedicos, TblPacientes

where TblAgenda.medico = TblMedicos.IDMedico

And TblAgenda.Paciente = TblPacientes.IDPaciente

Para o segundo problema o código abaixo filtra 2 datas

data inicial e data final

procedure TFrmCR.BitBtn13Click(Sender: TObject);

var

dt_ini, dt_fin: String;

Begin

dt_ini:=DateToStr(DateTimePicker1.Date);

dt_fin:=DateToStr(DateTimePicker2.Date);

edit1.Text := dt_ini;

edit2.Text := dt_fin;

begin

case rg3T.ItemIndex of

0: //Todos

begin

if rg1.ItemIndex = 0 then //Todos Todos

Begin

GridTipo.Visible := false;

DbGridFormapgto.Visible := true;

DBGridTodosN.Visible := false;

spRecTodosG.close;

spRecTodosG.Parameters.ParamByName('@datai').Value := dt_ini;

spRecTodosG.Parameters.ParamByName('@dataf').Value := dt_fin;

spRecTodosG.open;

spRecTodosG.active := true;

statusbar1.Panels[0].Text:= ' registros encontrados. ';

somatodos;

if spRecTodosG.IsEmpty then

Begin

statusbar1.Panels[0].Text := ' Não existem registros para esse período';

exit;

end;

end;

//=================================

if rg1.ItemIndex = 1 then //Normal Todos

Begin

DBGridTodosN.Visible := true;

GridTipo.Visible := false;

DbGridFormapgto.Visible := false;

SpTodosN.close;

SpTodosN.Parameters.ParamByName('@datai').Value := dt_ini;

SpTodosN.Parameters.ParamByName('@dataf').Value := dt_fin;

SpTodosN.open;

SpTodosN.active := true;

statusbar1.Panels[0].Text:= ' registros encontrados. ';

SomaTodosN;

if SpTodosN.IsEmpty then

Begin

statusbar1.Panels[0].Text:= ' Não existem registros para esse período';

exit;

end;

end;

end;

//=======================================

1: //Por Tipo

Begin

if rg1.ItemIndex = 0 then //Tipo Todos

Begin

GridTipo.Visible := true;

DbGridFormapgto.Visible := false;

DBGridTodosN.Visible := false;

spTipoTodos.close;

spTipoTodos.Parameters.ParamByName('@datai').Value := dt_ini;

spTipoTodos.Parameters.ParamByName('@dataf').Value := dt_fin;

spTipoTodos.Parameters.ParamByName('@formapgto').Value := edit7.Text;

spTipoTodos.open;

spTipoTodos.active := true;

statusbar1.Panels[0].Text:= ' registros encontrados. ';

somatipot;

if spTipoTodos.IsEmpty then

Begin

statusbar1.Panels[0].Text:= ' Não existem registros para esse período';

exit;

end;

end;

end;

end;

end;

end;

Editado por Alberto Mota
Link para o comentário
Compartilhar em outros sites

  • 0

Elimine o case rg3T.ItemIndex of

No meu caso é um grupo de opção

válido para mim apenas

Para voce não há necessidade. Podendo ficar assim:

procedure TFrmCR.BitBtn13Click(Sender: TObject);

var

dt_ini, dt_fin: String;

Begin

dt_ini:=DateToStr(DateTimePicker1.Date);

dt_fin:=DateToStr(DateTimePicker2.Date);

edit1.Text := dt_ini;

edit2.Text := dt_fin;

begin

spRecTodosG.close;

spRecTodosG.Parameters.ParamByName('@datai').Value := dt_ini;

spRecTodosG.Parameters.ParamByName('@dataf').Value := dt_fin;

spRecTodosG.open;

spRecTodosG.active := true;

statusbar1.Panels[0].Text:= ' registros encontrados. ';

somatodos;

if spRecTodosG.IsEmpty then

Begin

statusbar1.Panels[0].Text := ' Não existem registros para esse período';

exit;

end;

end;

Link para o comentário
Compartilhar em outros sites

  • 0

spRecTodosG é 1 ADOStoredProc da Palheta Ado

Poderia ser uma query

somatodos é um procedimento que joga o total num label

Voce pode eliminar.

@datai é um parametro criado no banco de dados, no caso o sql server

Isso é um exemplo apenas. O caminho é esse.

Ficaria mais facil se dissesse qual banco de dados esta usando.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,2k
    • Posts
      651,9k
×
×
  • Criar Novo...