Problema com Chave estrangeira no delphi

12/01/2013

10

Bom dia Pessoal Sou Iniciante em Delphi, e tenho uma problema, tenho um sistema de para Agendar consultas de um consultorio,
no formulário de Agendar a consulta tenho que ter um campo do médico e outro do paciente que são de outra tabela do meu banco e são chaves estrangeiras, bom o que eu preciso é saber como fazer para colocar dois campos um para colocar cod_paciente e outro para o nome do paciente, bom a ideia é que quando eu colocar o cod_paciente ele apareça automaticamente o nome do paciente, caso eu não saiba qual o cod_paciente eu pressionando enter ele vá direto para uma consulta do paciente.


se alguém poder me ajudar desde já agradeço muito!
Responder

Posts

14/01/2013

Eliel Martins

Boa tarde, Dola.

O que pode ser feito neste caso, é no evento OnExit do campo onde você digita o código paciente, você pode executar um comando SQL para trazer o nome do paciente. Outra forma é você colocar uma Query e passar o parâmetro para a mesma e pegar o retorno e preencher o campo. Tem várias formas de fazer. Mas basicamente você pode fazer isso, quando você sair do campo e estiver em branco você pode chamar a tela de consulta do paciente, pode utilizar essa verificação ou colocar uma tecla de atalho para consulta caso você utilize.

Espero ter ajudado, caso não consegui lhe ajudar, solicito que adicione maiores informações.

Atenciosamente,

Eliel G. Martins
Responder
Caro Eliel Martins Muito Obrigado pela Resposta!

o que estou precisando basicamente é isso aqui:

Tenho duas tabelas (tabela paciente e tabela agendaconsulta)
Na Tabela paciente tenho os seguintes campos:
ID_PACIENTE – Primary key
PACIENTE - varchar (30)
Na Tabela agendaconsulta tenho os seguintes Campos:
ID_CONSULTA – Primary key
ID_PACIENTE – foreign key
PACIENTE – varchar (30)
DATA_CONSULTA - date
HORA_CONSULTA - time
VALOR - numeric
TIPO_CONSULTA – varchar (40)
Na minha aplicação tenho dois formularios um cadastro de paciente e outro agenda consultas,
Segue link da imagem do Formulário http://imageshack.us/photo/my-images/705/123byv.png/
Prondo como na imagem a cima eu gostaria que quando eu chegar em cima do edit2 se eu colocar o Codigo do paciente ele preencha o nome paciente tambem no campo edit3, se eu não souber o codigo do paciente ao precionar enter com o campo vazio ele vá para a consulta de paciente, para poder selecionar o paciente ao fechar a consulta ele mostre no formulario de agendamento de consultas o codigo e paciente selecionado na tela de consulta paciente.
Essa situação está me dando muita dor de cabeça, se alguém poder me ajudar desde já Muito Obrigado....
Responder

16/01/2013

Douglas

Boa noite Dola,

Selecione o seu DbEdit2 que é o código do paciente.

E no evento OnKeyPress que fica no Object Inspector na guia events,

dê um duplo clique.

E insira o seguinte código:

  if key = #13 then 
  begin
    SQLDataSet1.Close;
    SQLDataSet1.CommandText := 'SELECT * FROM CLIENTE WHERE IDPACIENTE = :IDPACIENTE';
    SQLDataSet1.ParamByName('IDPACIENTE').AsInteger := StrToInt(DBEdit1.Text);
    SQLDataSet1.Open;

    DBEdit2.Text := SQLDataSet1.FieldByName('NomePaciente').AsString;
  end;


Ocorre o seguinte. Há um filtro no SQL com a passagem do parâmetro IDPACIENTE.
e quando abro o SQLDataSet pego o resultado da consulta e jogo para o DBEdit2.text o nome do paciente.

Obs: Neste caso estou utilizando o objeto SQLDataSet1. No seu, mude para o que esta utilizando.
(key = #13 - passa de edit para edit usando a tecla enter)


Espero te ajudado.
Responder
Caro DOUGLAS CLAUDIO, Muito Obrigado pela dica você Foi sensacional, ficou muito Bom, mas agora se não for incomodar muito fiquei apenas com uma duvida como faço agora para que se no DBEdit estiver o valor em branco quando eu digitar a tecla ENTER ele abrir a consulta de pacientes para eu poder pegar os dados caso eu nao saiba o codigo do meu paciente.


desde já Muito Obrigado!
Responder

17/01/2013

Bruno Leandro

Ola Dola, o melhor jeito seria criar um outro formulario para realizar a pesquisa, com um campo para voce digitar o valor a ser pesquisado e um dbgrid para listar os registros filtrados.
Responder

17/01/2013

Douglas

Dola,

seguinte se pode efetuar um SELECT de pesquisa na sua tabela de consulta

populando os dados no DBGRID, como o nosso amigo Bruno citou.

o código de pesquisa ficaria desta forma

SQLDataSet1.Close;
SQLDataSet1.CommandText := 'SELECT * FROM CLIENTE WHERE IDPACIENTE LIKE '
                            +QuotedStr('%'+DBEdit1.Text+'%');
SQLDataSet1.Open;


Quando você teclar enter no momento que o dbedit estiver vazio,

ele vai trazer todo o resultado da tabela de consulta.
Responder
Caros amigos, eu tenho já um formulário de consulta o que eu preciso realmente é o seguinte que com esse código abaixo descrito, preciso que no campo DBEdit_ID_PACIENTE se ele estiver em branco quando eu precionar a tecla enter ele chame o formulario de pesquisa, que eu já tenho.

Imagem do formulário de Agendamento de consulta - http://imageshack.us/photo/my-images/543/formulariodeagendamento.png/
Imagem do formulário de Pesquisa Paciente - http://imageshack.us/photo/my-images/823/pesqui.png/


#código
procedure TF_Cad_Paciente.DBEdit_ID_CIDADEKeyPress(Sender: TObject;
var Key: Char);
begin
if key = #13 then
begin
DM_Principal.SQLD_Cidade.Close;
DM_Principal.SQLD_Cidade.CommandText := 'SELECT * FROM CIDADE WHERE ID_CIDADE = :ID_CIDADE';
DM_Principal.SQLD_Cidade.ParamByName('ID_CIDADE').AsInteger := StrToInt(DBEdit_ID_CIDADE.Text);
DM_Principal.SQLD_Cidade.Open;
DBEdit_CIDADE.Text := DM_Principal.SQLD_Cidade.FieldByName('NOME_CIDADE').AsString;
DBEdit_UF.Text := DM_Principal.SQLD_Cidade.FieldByName('UF_CIDADE').AsString;
end;
end;
Responder
caros amigos, eu tenho já um formulário de consulta o que eu preciso realmente é o seguinte que com esse código abaixo descrito, preciso que no campo dbedit_id_paciente se ele estiver em branco quando eu precionar a tecla enter ele chame o formulario de pesquisa, que eu já tenho.

imagem do formulário de agendamento de consulta - http://imageshack.us/photo/my-images/543/formulariodeagendamento.png/
imagem do formulário de pesquisa paciente - http://imageshack.us/photo/my-images/823/pesqui.png/


#codigo
procedure tf_cad_paciente.dbedit_id_cidadekeypress(sender: tobject;
var key: char);
begin
if key = #13 then
begin
dm_principal.sqld_cidade.close;
dm_principal.sqld_cidade.commandtext := 'select * from cidade where id_cidade = :id_cidade';
dm_principal.sqld_cidade.parambyname('id_cidade').asinteger := strtoint(dbedit_id_cidade.text);
dm_principal.sqld_cidade.open;
dbedit_cidade.text := dm_principal.sqld_cidade.fieldbyname('nome_cidade').asstring;
dbedit_uf.text := dm_principal.sqld_cidade.fieldbyname('uf_cidade').asstring;
end;
end;
Responder

17/01/2013

Douglas

Meu caro,

ae ficaria desta forma.

como o código abaixo:

begin
  if key = #13 then
  begin
    SQLDataSet1.Close;
    SQLDataSet1.CommandText := 'SELECT * FROM CLIENTE WHERE IDPACIENTE LIKE '
                               +QuotedStr('%'+(DBEdit1.Text)+'%');
    SQLDataSet1.Open;
     if (DBEdit1.Text <> EmptyStr) then
        DBEdit2.Text := SQLDataSet1.FieldByName('NOMEPACIENTE').AsString
     else
     begin
       Application.CreateForm(TForm2, Form2);
       try
         form2.showmodal;
       finally
         freeandnil(form2);
       end;
     end;
  end;
end;


Espero que seja isto.

Boa Sorte.

OBS: O layout das telas ficaram show.
Responder
Caro Douglas Como sou iniciante tive um ideia de colocar um video para vc ver como ta ficando e se vc vai entender melhor minha situação, até minha tabela de consulta eu baguncei toda tentando melhorar se vc tambem poder me ajudar na tabela de consulta agradeço e muito.
link do video https://www.youtube.com/watch?v=3WbYwSSD2dw


#Código

unit U_Cad_Paciente;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons, DB, Mask, DBCtrls, FMTBcd, SqlExpr,
Provider, DBClient;

type
TF_Cad_Paciente = class(TForm)
Panel2: TPanel;
btn_editar: TBitBtn;
btn_cancelar: TBitBtn;
btn_excluir: TBitBtn;
btn_gravar: TBitBtn;
btn_pesquisar: TBitBtn;
btn_sair: TBitBtn;
btn_novo: TBitBtn;
Panel1: TPanel;
GroupBox1: TGroupBox;
Label1: TLabel;
DBEdit_COD: TDBEdit;
DTS_Paciente: TDataSource;
Label2: TLabel;
DBEdit_NOME: TDBEdit;
Label3: TLabel;
DBEdit_END: TDBEdit;
Label4: TLabel;
DBEdit_NUMERO: TDBEdit;
Label8: TLabel;
DBEdit_EMAIL: TDBEdit;
Label9: TLabel;
DBEdit_BAIRRO: TDBEdit;
Label10: TLabel;
DBEdit_CIDADE: TDBEdit;
Label12: TLabel;
DBEdit_FONE1: TDBEdit;
Label13: TLabel;
DBEdit_FONE2: TDBEdit;
Label14: TLabel;
DBEdit_CPF: TDBEdit;
DBEdit_UF: TDBEdit;
Label16: TLabel;
DBEdit_DATACAD: TDBEdit;
DBRadioGroup_paciente: TDBRadioGroup;
SP_GEN_PACIENTE: TSQLStoredProc;
DBEdit_ID_CIDADE: TDBEdit;
Label5: TLabel;
DBEdit_NAC: TDBEdit;
SQLD_Paciente: TSQLDataSet;
SQLD_PacienteTEL1: TStringField;
SQLD_PacienteTEL2: TStringField;
SQLD_PacienteDATA_CADASTRO: TDateField;
SQLD_PacienteID_PACIENTE: TIntegerField;
SQLD_PacienteNOME_PACIENTE: TStringField;
SQLD_PacienteENDERECO: TStringField;
SQLD_PacienteNUMERO: TLargeintField;
SQLD_PacienteBAIRRO: TStringField;
SQLD_PacienteID_CIDADE: TIntegerField;
SQLD_PacienteNOME_CIDADE: TStringField;
SQLD_PacienteUF_CIDADE: TStringField;
SQLD_PacienteDATA_NACIMENTO: TDateField;
SQLD_PacienteSEXO: TStringField;
SQLD_PacienteCPF: TStringField;
SQLD_PacienteEMAIL: TStringField;
CDS_Paciente: TClientDataSet;
CDS_PacienteTEL1: TStringField;
CDS_PacienteTEL2: TStringField;
CDS_PacienteDATA_CADASTRO: TDateField;
CDS_PacienteID_PACIENTE: TIntegerField;
CDS_PacienteNOME_PACIENTE: TStringField;
CDS_PacienteENDERECO: TStringField;
CDS_PacienteNUMERO: TLargeintField;
CDS_PacienteBAIRRO: TStringField;
CDS_PacienteID_CIDADE: TIntegerField;
CDS_PacienteNOME_CIDADE: TStringField;
CDS_PacienteUF_CIDADE: TStringField;
CDS_PacienteDATA_NACIMENTO: TDateField;
CDS_PacienteSEXO: TStringField;
CDS_PacienteCPF: TStringField;
CDS_PacienteEMAIL: TStringField;
DSP_Paciente: TDataSetProvider;
procedure btn_sairClick(Sender: TObject);
procedure btn_novoClick(Sender: TObject);
procedure ATIVADBEDIT;
procedure DESATIVADBEDIT;
procedure ATIVABTN;
procedure DESATIVABTN;
procedure DBEdit_DATACADKeyPress(Sender: TObject; var Key: Char);
procedure DBEdit_NOMEKeyPress(Sender: TObject; var Key: Char);
procedure DBEdit_ENDKeyPress(Sender: TObject; var Key: Char);
procedure DBEdit_BAIRROKeyPress(Sender: TObject; var Key: Char);
procedure DBEdit_CIDADEKeyPress(Sender: TObject; var Key: Char);
procedure DBEdit_FONE1KeyPress(Sender: TObject; var Key: Char);
procedure DBEdit_FONE2KeyPress(Sender: TObject; var Key: Char);
procedure DBEdit_NUMEROKeyPress(Sender: TObject; var Key: Char);
procedure DBEdit_UFKeyPress(Sender: TObject; var Key: Char);
procedure DBEdit11KeyPress(Sender: TObject; var Key: Char);
procedure DBEdit_CPFKeyPress(Sender: TObject; var Key: Char);
procedure DBEdit_EMAILKeyPress(Sender: TObject; var Key: Char);
procedure btn_gravarClick(Sender: TObject);
procedure btn_editarClick(Sender: TObject);
procedure btn_cancelarClick(Sender: TObject);
procedure btn_excluirClick(Sender: TObject);
procedure btn_pesquisarClick(Sender: TObject);
procedure DBEdit_ID_CIDADEKeyPress(Sender: TObject; var Key: Char);
procedure DBEdit_CPFExit(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
F_Cad_Paciente: TF_Cad_Paciente;

implementation

uses U_DMODULO, U_Pesq_Paciente, U_Pesq_Cidades;

{$R *.dfm}
// FUNÇÃO PARA VALIDAR CPF //
function Cpf(CPF_Text: string): boolean;
var n1,n2,n3,n4,n5,n6,n7,n8,n9: integer;
d1,d2: integer;
digitado, calculado: string;
begin
n1:=StrToInt(CPF_Text[1]);
n2:=StrToInt(CPF_Text[2]);
n3:=StrToInt(CPF_Text[3]);
n4:=StrToInt(CPF_Text[5]);
n5:=StrToInt(CPF_Text[6]);
n6:=StrToInt(CPF_Text[7]);
n7:=StrToInt(CPF_Text[9]);
n8:=StrToInt(CPF_Text[10]);
n9:=StrToInt(CPF_Text[11]);
d1:=n9*2+n8*3+n7*4+n6*5+n5*6+n4*7+n3*8+n2*9+n1*10;
d1:=11-(d1 mod 11);
if d1>=10 then d1:=0;
d2:=d1*2+n9*3+n8*4+n7*5+n6*6+n5*7+n4*8+n3*9+n2*10+n1*11;
d2:=11-(d2 mod 11);
if d2>=10 then
d2:=0;
calculado:=inttostr(d1)+inttostr(d2);
digitado:=CPF_Text[13]+CPF_Text[14];
if calculado=digitado then
Cpf:=true
else
Cpf:=false;
end;

procedure TF_Cad_Paciente.ATIVADBEDIT;
begin // ATIVANDO OS DBEDITS //

DBEdit_DATACAD.enabled := True;
DBEdit_NOME.enabled := True;
DBEdit_END.enabled := True;
DBEdit_NUMERO.enabled := True;
DBEdit_EMAIL.enabled := True;
DBEdit_BAIRRO.enabled := True;
DBEdit_FONE1.enabled := True;
DBEdit_FONE2.enabled := True;
DBEdit_CPF.enabled := True;
DBEdit_ID_CIDADE.enabled := True;
DBEdit_NAC.enabled := True;
DBRadioGroup_paciente.Enabled := True;

end;

procedure TF_Cad_Paciente.DESATIVADBEDIT;
begin // DESATIVANDO OS DBEDITS //

DBEdit_DATACAD.enabled := False;
DBEdit_NOME.enabled := False;
DBEdit_END.enabled := False;
DBEdit_NUMERO.enabled := False;
DBEdit_EMAIL.enabled := False;
DBEdit_BAIRRO.enabled := False;
DBEdit_FONE1.enabled := False;
DBEdit_FONE2.enabled := False;
DBEdit_CPF.enabled := False;
DBEdit_ID_CIDADE.enabled := False;
DBEdit_NAC.enabled := False;
DBRadioGroup_paciente.Enabled := False;

end;
procedure TF_Cad_Paciente.DBEdit11KeyPress(Sender: TObject; var Key: Char);
begin
If Key = #13 Then // Comando para passar para outro edit com a tecla enter//
Begin
SelectNext(Sender as tWinControl, True, True);
Key := #0;
end;
end;

procedure TF_Cad_Paciente.DBEdit_BAIRROKeyPress(Sender: TObject; var Key: Char);
begin
If Key = #13 Then // Comando para passar para outro edit com a tecla enter//
Begin
SelectNext(Sender as tWinControl, True, True);
Key := #0;
end;
end;

procedure TF_Cad_Paciente.DBEdit_CIDADEKeyPress(Sender: TObject; var Key: Char);
begin
If Key = #13 Then // Comando para passar para outro edit com a tecla enter//
Begin
SelectNext(Sender as tWinControl, True, True);
Key := #0;
end;
end;

procedure TF_Cad_Paciente.DBEdit_CPFExit(Sender: TObject);
begin
If DBEdit_CPF.Text<>'' Then
If Cpf(DBEdit_CPF.Text)=False Then
Begin
MessageDlg('CPF informado é incorreto!',mtError, [mbOk],0);
DBEdit_CPF.SetFocus;
End;
end;

procedure TF_Cad_Paciente.DBEdit_CPFKeyPress(Sender: TObject; var Key: Char);
begin
If Key = #13 Then // Comando para passar para outro edit com a tecla enter//
Begin
SelectNext(Sender as tWinControl, True, True);
Key := #0;
end;
end;

procedure TF_Cad_Paciente.DBEdit_DATACADKeyPress(Sender: TObject;
var Key: Char);
begin
If Key = #13 Then // Comando para passar para outro edit com a tecla enter//
Begin
SelectNext(Sender as tWinControl, True, True);
Key := #0;
end;
end;

procedure TF_Cad_Paciente.DBEdit_EMAILKeyPress(Sender: TObject; var Key: Char);
begin
If Key = #13 Then // Comando para passar para outro edit com a tecla enter//
Begin
SelectNext(Sender as tWinControl, True, True);
Key := #0;
btn_gravar.SetFocus;
end;
end;

procedure TF_Cad_Paciente.DBEdit_ENDKeyPress(Sender: TObject; var Key: Char);
begin
If Key = #13 Then // Comando para passar para outro edit com a tecla enter//
Begin
SelectNext(Sender as tWinControl, True, True);
Key := #0;
end;
end;

procedure TF_Cad_Paciente.DBEdit_FONE1KeyPress(Sender: TObject; var Key: Char);
begin
If Key = #13 Then // Comando para passar para outro edit com a tecla enter//
Begin
SelectNext(Sender as tWinControl, True, True);
Key := #0;
end;
end;

procedure TF_Cad_Paciente.DBEdit_FONE2KeyPress(Sender: TObject; var Key: Char);
begin
If Key = #13 Then // Comando para passar para outro edit com a tecla enter//
Begin
SelectNext(Sender as tWinControl, True, True);
Key := #0;
end;
end;

procedure TF_Cad_Paciente.DBEdit_ID_CIDADEKeyPress(Sender: TObject;
var Key: Char);
begin
if key = #13 then
begin
DM_Principal.SQLD_Cidade.Close;
DM_Principal.SQLD_Cidade.CommandText := 'SELECT * FROM CIDADE WHERE ID_CIDADE = :ID_CIDADE';
DM_Principal.SQLD_Cidade.ParamByName('ID_CIDADE').AsInteger := StrToInt(DBEdit_ID_CIDADE.Text);
DM_Principal.SQLD_Cidade.Open;
DBEdit_CIDADE.Text := DM_Principal.SQLD_Cidade.FieldByName('NOME_CIDADE').AsString;
DBEdit_UF.Text := DM_Principal.SQLD_Cidade.FieldByName('UF_CIDADE').AsString;
end;
end;

procedure TF_Cad_Paciente.DBEdit_NOMEKeyPress(Sender: TObject; var Key: Char);
begin
If Key = #13 Then // Comando para passar para outro edit com a tecla enter//
Begin
SelectNext(Sender as tWinControl, True, True);
Key := #0;
end;
end;

procedure TF_Cad_Paciente.DBEdit_NUMEROKeyPress(Sender: TObject; var Key: Char);
begin
If Key = #13 Then // Comando para passar para outro edit com a tecla enter//
Begin
SelectNext(Sender as tWinControl, True, True);
Key := #0;
end;
end;

procedure TF_Cad_Paciente.DBEdit_UFKeyPress(Sender: TObject; var Key: Char);
begin
If Key = #13 Then // Comando para passar para outro edit com a tecla enter//
Begin
SelectNext(Sender as tWinControl, True, True);
Key := #0;
end;
end;

procedure TF_Cad_Paciente.DESATIVABTN;
begin
btn_novo.enabled := False;
btn_editar.enabled := False;
btn_cancelar.enabled := True;
btn_gravar.enabled := True;
btn_excluir.enabled := False;
btn_sair.enabled := False;
btn_pesquisar.enabled := False;
end;
procedure TF_Cad_Paciente.ATIVABTN;
begin
btn_novo.enabled := True;
btn_editar.enabled := True;
btn_cancelar.enabled := False;
btn_gravar.enabled := False;
btn_excluir.enabled := True;
btn_sair.enabled := True;
btn_pesquisar.enabled := True;
end;
procedure TF_Cad_Paciente.btn_cancelarClick(Sender: TObject);
begin
if DTS_Paciente.DataSet.State in [dsBrowse, dsEdit, dsInsert] then

begin
CDS_Paciente.Cancel;
CDS_Paciente.ApplyUpdates(-1);
CDS_Paciente.Open;
CDS_Paciente.close;
ativabtn;
end
else
ShowMessage('Atenção: Favor Executar uma Operação.');
end;

procedure TF_Cad_Paciente.btn_editarClick(Sender: TObject);
begin
CDS_Paciente.Edit;
Desativabtn;
ativadbedit;
end;

procedure TF_Cad_Paciente.btn_excluirClick(Sender: TObject);
begin
if DTS_Paciente.DataSet.State in [dsBrowse, dsEdit] then
begin
CDS_Paciente.Delete;
CDS_Paciente.ApplyUpdates(0);
CDS_Paciente.close;
end
else
ShowMessage('Atenção: Favor Localizar o Registro a Ser Excluido.');
end;

procedure TF_Cad_Paciente.btn_gravarClick(Sender: TObject);
begin
if CDS_Paciente.State in [dsBrowse, dsEdit, dsInsert] then

begin
CDS_Paciente.Post;
CDS_Paciente.ApplyUpdates(0);
CDS_Paciente.close;
ATIVABTN;
end
else
ShowMessage('Atenção: Favor Executar uma Função.');

end;

procedure TF_Cad_Paciente.btn_novoClick(Sender: TObject);

var
vID_PACIENTE: integer;
begin
with SP_GEN_PACIENTE do
begin
Prepared := True;
ExecProc;
Prepared := False;
vID_PACIENTE := ParamByName('ID').Value;
close;
end;
CDS_Paciente.Open;
CDS_Paciente.Append;
CDS_Paciente.FieldByName('ID_PACIENTE').AsInteger := vID_PACIENTE;
Desativabtn;
ativadbedit;
//DBEdit_carregarfoto.text := ('C:\SYSPROF\Imagens\FOTO.jpg'); //
DBEdit_DATACAD.SetFocus;
end;

procedure TF_Cad_Paciente.btn_pesquisarClick(Sender: TObject);
begin
F_Pesq_Paciente := TF_Pesq_Paciente.create(Self);
F_Pesq_Paciente.ShowModal; // chamar o formulario de pesquisar paciente //
F_Pesq_Paciente.Release;
F_Pesq_Paciente.free;
end;

procedure TF_Cad_Paciente.btn_sairClick(Sender: TObject);
begin
CLOSE;
end;

end.
Responder
Pronto aqui tem um video de como eu quero que fique, esse sistema eu trabalhava de suporte muito bom....


Vídeo http://www.youtube.com/watch?v=mkEs5hAcNho
Responder

19/01/2013

Douglas

Dola,

O último código postado você consegue,

ir para uma outra tela, caso o código esteja vazio.

begin
if key = #13 then
begin
SQLDataSet1.Close;
SQLDataSet1.CommandText := 'SELECT * FROM CLIENTE WHERE IDPACIENTE LIKE '
+QuotedStr('%'+(DBEdit1.Text)+'%');
SQLDataSet1.Open;
if (DBEdit1.Text <> EmptyStr) then
DBEdit2.Text := SQLDataSet1.FieldByName('NOMEPACIENTE').AsString
else
begin
Application.CreateForm(TForm2, Form2);
try
form2.showmodal;
finally
freeandnil(form2);
end;
end;
end;
end;


Na cláusula do IF se verifica se o dbedit do código esta vazio,
caso esteja se parte para o próximo formulário passando os parâmetros dele.
Ex:
Application.CreateForm
Responder

19/01/2013

Douglas

Dola,

O último código postado por mim,

você consegue chamar o outro formulário.

Vamos a análise do IF.
begin
if key = #13 then
begin
SQLDataSet1.Close;
SQLDataSet1.CommandText := 'SELECT * FROM CLIENTE WHERE IDPACIENTE LIKE '
+QuotedStr('%'+(DBEdit1.Text)+'%');
SQLDataSet1.Open;
if (DBEdit1.Text <> EmptyStr) then
DBEdit2.Text := SQLDataSet1.FieldByName('NOMEPACIENTE').AsString
else
begin
Application.CreateForm(TForm2, Form2);
try
form2.showmodal;
finally
freeandnil(form2);
end;
end;
end;
end;


Na cláusula do "IF" verifica se o dbedit do código esta vazio,
se estiver chama o seu formulário de consulta passando os parâmetros dele.
Como descrito anteriormente.
Ex:
Application.CreateForm(TFrmConsulta, FrmConsulta);


No seu form de consulta após achar o paciente no evento OnClick do botão de pesquisar, tu vai setar
o resultado da pesquisa para o seu formulário principal passando o código e o nome da cidade.

Ex:
  FrmPrincipal.DbEditIDCidade.text   := SQLDataSet1.FieldByName('IDCidade').AsInteger;
  FrmPrincipal.DbEditNomeCidade.text := SQLDataSet1.FieldByName('NomeCidade').AsString;


Qualquer dúvida me envie um e-mail que acompanho passa-a-passo contigo via conexão remota.
douglas_claudio@hotmail.com

Espero que a explicação acima tenha ficado clara.
Responder