Ajuda - Busca - Membros - Calendário
Versão Completa: Nao Repetir
Fórum Script Brasil > Programação & Desenvolvimento > Delphi, Kylix
- ANONIMO -
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
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 -
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 -
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
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.
Esta é uma versão simplificada de nosso conteúdo principal. Para ver a versão completa com maiores informações, formatação e imagens, por favor clique aqui.
Invision Power Board © 2001-2012 Invision Power Services, Inc.