- ANONIMO -
09/05/2005 - 09:52
Bom dia Galera...tudo bem?!
É o seguinte...tenho um formulario que busca informacoes em um arq TXT...
qndo eu digito a matricula no campo determinado ele varre o arq TXT e se houver essa matricula gravada ele tras todas as informaçoes, agora, se nao houver ele da uma msg para criar uma nova prescricao para o paciente.....ate ai tudo bem...
o problema é o seguinte: se eu digitar a matricula e ela nao existir a msg e dada...ai qndo vou digitar a nova prescricao preciso digitar essa matricula, so que a msg aparece toda hora, como eu porderia fazer para que ela aparecece somente da primeira vez que eu digitasse a matricula inexistente..
SE ALGUEM PUDER ME AJUDAR....VALEU...
O CODIGO TA AI...
////
if not Achou then
EditNomePaciente.Text := '';
ComboBoxLeito.Text := '';
ComboBoxNAtendimento.Text := '';
EditNProntuario.Text := '';
MemoVaiParaPrescricao.Clear;
ShowMessage('Prontuário não encontrado!'+#13+'Comece uma nova prescrição para este paciente');
EditNProntuario.SetFocus;
end;
////
Kikonanet
09/05/2005 - 13:36
Olá,
Não sei se entendi mto bem, mas olhando no código tente assim:
| CODE |
//// if not Achou then begin // Coloque aki os comandos caso nao achar o registro EditNomePaciente.Text := ''; ComboBoxLeito.Text := ''; ComboBoxNAtendimento.Text := ''; EditNProntuario.Text := ''; MemoVaiParaPrescricao.Clear; ShowMessage('Prontuário não encontrado!'+#13+'Comece uma nova prescrição para este paciente'); EditNProntuario.SetFocus; end;
|
Qq coisa posta ae
Abs.
Kiko
- anonimo -
09/05/2005 - 14:24
VOU COLOCAR O CODIGO TODO...TALVEZ ASSIM FIQUE MAIS FACIL DE ENTENDER...
NAO É ISSO QUE VC ME PASSOU NAO..OLHA SO:
ELE FAZ O SEGUINTE...VARRE O ARQ "PROCORDIS.TXT" SE NAO ENCONTRAR O NUM ELE VARRE O ARQ "PACIENTES.TXT"....AI SE ELE AINDA NAO ENCONTRAR,
ELE DA ESSA MSG "Prontuário não encontrado!'+#13+'Comece uma nova prescrição para este paciente".
AI QNDO EU "DOU" OK NA TELA DA MSG, E VOU ATE O CAMPO DA MATRICULA DIGITO NOVAMENTE O NUMERO PRA EFETUAR O CADASTRO, E QNDO MUDO DE CAMPO(EDIT) A MSG APARECE NOVAMENTE.......E FICA NESSE "LOOP INFINITO".
///
procedure TFormPrescricao.EditNProntuarioExit(Sender: TObject);
var
linha, codigo : string;
i, x : integer;
ArqTxt : TextFile;
achou : boolean;
begin
AssignFile(ArqTxt,'C:\PROCORDIS.txt');
Reset(ArqTxt);
i := 0;
achou := False;
while not eof(ArqTxt) do
begin
i := i + 1;
Readln(ArqTxt,linha);
Codigo := Copy(Linha,1,Pos(';',Linha)-1);
x := Length(Linha) - Length(Codigo);
if Trim(EditNProntuario.Text) = Codigo then
begin
achou := True;
Delete(linha,1,Pos(';',linha));
EditNomePaciente.Text := Copy(linha,1,pos(';',linha)-1);
Delete(linha,1,Pos(';',linha));
ComboBoxLeito.Text := Copy(linha,1,pos(';',linha)-1);
Delete(linha,1,Pos(';',linha));
ComboBoxNAtendimento.Text := Copy(linha,1,pos(';',linha)-1);
Delete(linha,1,Pos(';',linha));
MemoVaiParaPrescricao.Clear;
while Pos(';',linha) > 0 do
begin
MemoVaiParaPrescricao.Lines.Add(Copy(linha,1,pos(';',linha)-1));
Delete(linha,1,Pos(';',linha));
end;
MemoVaiParaPrescricao.Lines.Add(linha);
Break;
end;
end;
Closefile(ArqTxt);
if not Achou Then
begin
AssignFile(ArqTxt,'C:\PACIENTES.txt');
Reset(ArqTxt);
i := 0;
achou := False;
while not eof(ArqTxt) do
begin
i := i + 1;
Readln(ArqTxt,linha);
Codigo := Copy(Linha,1,Pos(';',Linha)-1);
x := Length(Linha) - Length(Codigo);
if Trim(EditNProntuario.Text) = Codigo then
begin
achou := True;
Delete(linha,1,Pos(';',linha));
EditNomePaciente.Text:= Copy(linha,1,pos(';',linha)-1);
Delete(linha,1,Pos(';',linha));
ComboBoxNAtendimento.Text := Copy(linha,1,pos(';',linha)-1);
Delete(linha,1,Pos(';',linha));
Break;
end;
end;
Closefile(ArqTxt);
if not Achou then
EditNomePaciente.Text := '';
ComboBoxLeito.Text := '';
ComboBoxNAtendimento.Text := '';
EditNProntuario.Text := '';
MemoVaiParaPrescricao.Clear;
ShowMessage('Prontuário não encontrado!'+#13+'Comece uma nova prescrição para este paciente');
EditNProntuario.SetFocus;
end;
end;
end;
///
- ANONIMO -
10/05/2005 - 07:55
| QUOTE (- anonimo - @ May 9 2005, 02:24 PM) |
VOU COLOCAR O CODIGO TODO...TALVEZ ASSIM FIQUE MAIS FACIL DE ENTENDER...
NAO É ISSO QUE VC ME PASSOU NAO..OLHA SO: ELE FAZ O SEGUINTE...VARRE O ARQ "PROCORDIS.TXT" SE NAO ENCONTRAR O NUM ELE VARRE O ARQ "PACIENTES.TXT"....AI SE ELE AINDA NAO ENCONTRAR, ELE DA ESSA MSG "Prontuário não encontrado!'+#13+'Comece uma nova prescrição para este paciente". AI QNDO EU "DOU" OK NA TELA DA MSG, E VOU ATE O CAMPO DA MATRICULA DIGITO NOVAMENTE O NUMERO PRA EFETUAR O CADASTRO, E QNDO MUDO DE CAMPO(EDIT) A MSG APARECE NOVAMENTE.......E FICA NESSE "LOOP INFINITO".
/// procedure TFormPrescricao.EditNProntuarioExit(Sender: TObject); var linha, codigo : string; i, x : integer; ArqTxt : TextFile; achou : boolean; begin AssignFile(ArqTxt,'C:\PROCORDIS.txt'); Reset(ArqTxt); i := 0; achou := False; while not eof(ArqTxt) do begin i := i + 1; Readln(ArqTxt,linha); Codigo := Copy(Linha,1,Pos(';',Linha)-1); x := Length(Linha) - Length(Codigo);
if Trim(EditNProntuario.Text) = Codigo then begin achou := True; Delete(linha,1,Pos(';',linha));
EditNomePaciente.Text := Copy(linha,1,pos(';',linha)-1); Delete(linha,1,Pos(';',linha));
ComboBoxLeito.Text := Copy(linha,1,pos(';',linha)-1); Delete(linha,1,Pos(';',linha));
ComboBoxNAtendimento.Text := Copy(linha,1,pos(';',linha)-1); Delete(linha,1,Pos(';',linha));
MemoVaiParaPrescricao.Clear;
while Pos(';',linha) > 0 do begin MemoVaiParaPrescricao.Lines.Add(Copy(linha,1,pos(';',linha)-1)); Delete(linha,1,Pos(';',linha)); end; MemoVaiParaPrescricao.Lines.Add(linha);
Break; end; end; Closefile(ArqTxt); if not Achou Then begin AssignFile(ArqTxt,'C:\PACIENTES.txt'); Reset(ArqTxt); i := 0; achou := False; while not eof(ArqTxt) do begin i := i + 1; Readln(ArqTxt,linha); Codigo := Copy(Linha,1,Pos(';',Linha)-1); x := Length(Linha) - Length(Codigo); if Trim(EditNProntuario.Text) = Codigo then begin achou := True; Delete(linha,1,Pos(';',linha));
EditNomePaciente.Text:= Copy(linha,1,pos(';',linha)-1); Delete(linha,1,Pos(';',linha));
ComboBoxNAtendimento.Text := Copy(linha,1,pos(';',linha)-1); Delete(linha,1,Pos(';',linha));
Break; end; end; Closefile(ArqTxt);
if not Achou then EditNomePaciente.Text := ''; ComboBoxLeito.Text := ''; ComboBoxNAtendimento.Text := ''; EditNProntuario.Text := ''; MemoVaiParaPrescricao.Clear; ShowMessage('Prontuário não encontrado!'+#13+'Comece uma nova prescrição para este paciente'); EditNProntuario.SetFocus; end; end; end; /// |
alguem pode......please?!:!:!:!:
Progr'amador
10/05/2005 - 09:33
Kra nesse caso vc pode usar outro edit pra inserir esse código ou então coloque um IF nesse codigo ae pra identificar quando era feito a consulta e quando será feito a inserção, tipo assim:
| QUOTE |
var Situacao : String; begin if Situacao = 'C' then begin // C --> Consulta bla, bla.. etc... end else begin //aqui vai o outro codigo pra inserir etc... end; |
Tem que ter algo que identifique quando será uma consulta e quando uma inserção.
Abs. Progr'amador.