Fórum verificar se o campo esta preenchido #215794
20/02/2004
0
È o seguinte:
Tenho dois MaskEdit...(DATA)
Antes de eu efetuar a pesquisa,gostaria que seja verificado se os dois campos estão preenchidos, dai depois ele faz a pesquisa, isso am apenas um botão....
como faço, dá uma forcinha ai galera...
[]´s
Juninho
Junior#
Curtir tópico
+ 0Posts
20/02/2004
Rômulo Barros
EventoOnClickDoBotao; Var Temp : DateTime; Begin Try Temp := StrToDate(EditMask.Text); IniciarAquiPesquisasPorData(); Except On EConvertError Do Showmessage(´Data Inválida´); End; End;
Gostei + 0
21/02/2004
Junior#
[]´s
juninho
Gostei + 0
21/02/2004
Marcelo
Primeiro
If maskEditData.Text <> ´´ then pesquisaPorData else begin Showmessage( ´Campo em branco! Preencha o corretamente!´ ); maskEditData.SetFocus; end;
Segundo
var i : Integer; begin for i := 1 to componetcout - 1 do if componentes[i] is TMaskEdit then if TMaskEdit( components[i] ).Text <> ´´ then pesquisaPorData;
Valeu?
Gostei + 0
22/02/2004
Rômulo Barros
Perceba: Se o usuário começar a digitar uma data e a data não for válida, irá ocorrer uma exceção do delphi que, até hoje, nunca consegui capturá-la. Nossos exemplos funcionariam se a máscara de entrada for 99/99/9999 ......
Gostei + 0
22/02/2004
Marcelo
Perceba: Se o usuário começar a digitar uma data e a data não for válida, irá ocorrer uma exceção do delphi que, até hoje, nunca consegui capturá-la. Nossos exemplos funcionariam se a máscara de entrada for 99/99/9999 ......[/quote:87dd33a188]
Isso é muito fácil cara! Veja se esse codigo resolve seu problema!
function FormataData( Data : String): String; begin Data := Copy( Data, 1, 2 ) + ´/´ + Copy ( Data, 3, 2 ) + ´/´ + Copy (Data, 5, 4 ); Result := FormatDateTime( ´dd/mm/yyy´, StrToDate( Data )); end; procedure TProcedimentos.Datas( Campo : TEdit ); begin if Campo.Text <> ´´ then begin if Length( Campo.Text ) <= 8 then try Campo.Text := FormataData( Campo.Text ); except DataInvalida( Campo ); Campo.Text := ´´; Campo.SetFocus; end else try dt := StrToDate( Campo.Text ); except DataInvalida( Campo ); Campo.Text := ´´; Campo.SetFocus; end; end else Campo.Text := FormatDateTime(´dd/mm/yyyy´, Now); end; // use a funcao assim: ... Datas( EDataParaPesquisa ); ...
Valeu cara?
Gostei + 0
22/02/2004
Marcelo
DataInválida(); // exibe uma mensagem de erro dt; // variavel do tipo TDate;
Valeu?
Gostei + 0
23/02/2004
Junior#
[]´s
juninho
Gostei + 0
23/02/2004
Aroldo Zanela
Mais fácil seria utilizar um componente especializado para manipulação de datas, como o DateTimePicker que fica na aba Win32, pois sempre serão instanciados com uma data e você pode colocar um valor padrão (pode ser feito no MaskEdit também) no evento OnCreate do Form.
Se não conseguir entender ainda, coloque um fragmento do código e mais detalhes da sua necessidade.
Gostei + 0
23/02/2004
Junior#
o código tem que vefiricar se o campo está prenchido,ou seja não pode ficar em branco...
[]´s
Juninho
procedure TDfmConsGrc.BitBtn2Click(Sender: TObject);
begin
If maskEdit1.Text <> ´´
then
QryClientes.Close;
QryClientes.Sql.Clear;
QryClientes.Sql.Add(´Select* From CliEntes´);
QryClientes.Sql.Add(´Where DtVisita >=:inicio´);
QryClientes.ParamByName(´inicio´).AsDate := StrToDate (MaskEdit1.Text);
QryClientes.Sql.Add(´and DtVisita <=:Termino´);
QryClientes.ParamByName(´Termino´).AsDate := StrToDate(MaskEdit2.Text);
QryClientes.Prepare;
QryClientes.Open;
else
begin
Showmessage( ´Campo em branco! Preencha o corretamente!´ );
maskEdit1.SetFocus;
end;
end;
end.
Gostei + 0
23/02/2004
Pistesil
procedure TDfmConsGrc.BitBtn2Click(Sender: TObject);
begin
If maskEdit1.Text <> ´´then
begin
QryClientes.Close;
QryClientes.Sql.Clear;
QryClientes.Sql.Add(´Select* From CliEntes´);
QryClientes.Sql.Add(´Where DtVisita >=:inicio´);
QryClientes.ParamByName(´inicio´).AsDate := StrToDate (MaskEdit1.Text);
QryClientes.Sql.Add(´and DtVisita <=:Termino´);
QryClientes.ParamByName(´Termino´).AsDate := StrToDate(MaskEdit2.Text);
QryClientes.Prepare;
QryClientes.Open;
end
else
begin
Showmessage( ´Campo em branco! Preencha o corretamente!´ );
maskEdit1.SetFocus;
end;
end;
end.
Gostei + 0
23/02/2004
Marco Salles
If (MaskEdit1.Text <> ´´)And(MaskEdit2.Text <> ´´) Then begin QryClientes.Close; QryClientes.Sql.Clear; QryClientes.Sql.Add(´Select* From CliEntes´); QryClientes.Sql.Add(´Where DtVisita >=:inicio´); QryClientes.ParamByName(´inicio´).AsDate := StrToDate(MaskEdit1.Text); QryClientes.Sql.Add(´and DtVisita <=:Termino´); QryClientes.ParamByName(´Termino´).AsDate := StrToDate(MaskEdit2.Text); QryClientes.Prepare; QryClientes.Open; end else begin If MaskEdit1.text <> ´´ Then begin Showmessage( ´Campo em branco! Preencha o corretamente!´ ); MaskEdit1.SetFocus; end else If MaskEdit2.text <> ´´ Then begin Showmessage( ´Campo em branco! Preencha o corretamente!´ ) maskEdit2.SetFocus; end; end; end;
Sugestões:
Obs: Código Pode Dar Um Resultado ErradoDependendo Do Valor Da Mascara Dos MaskEdit
Obs2:É Melhor Trabalhar Com Try Except Neste Caso...Mas Se Isto Funcinar Depois Nos Adaptamos o Bloco De Interrupção
Gostei + 0
23/02/2004
Junior#
[]´s
juninho
Gostei + 0
23/02/2004
Marco Salles
Posso Te Sugerir Dua Saidas Para Isto..
1) Tente Mudar o Final Da Propiedade EditMask Dos Dois MaskEdit
Se O Final For 1 Troque Pelo Zero , e Se o Final For 0 Troque Pelo 1
Obs: a Propiedade EditMask Fica No CodeObjector Do MaskEdit
Exemplo:Propiedade EditMsk !99/99/9999;1;_ Tocar Por !99/99/9999;0;_
Eu Não Sei De Cabeça Qua Que Vai Funcionar, Mas Acho Que é a Com Final Zero
2) Ou Mude o Text ..Em Vez De Comparar Com <> Compare Com
´ / / ´ .....Se Data For ´dd/mm/yyyy´ Ou
´ / / ´.....Se Data For ´dd/mm/yy´
If (MaskEdit1.Text <> ´ / / ´)And(MaskEdit2.Text <> ´ / / ´) Then begin QryClientes.Close; QryClientes.Sql.Clear; QryClientes.Sql.Add(´Select* From CliEntes´); QryClientes.Sql.Add(´Where DtVisita >=:inicio´); QryClientes.ParamByName(´inicio´).AsDate := StrToDate(MaskEdit1.Text); QryClientes.Sql.Add(´and DtVisita <=:Termino´); QryClientes.ParamByName(´Termino´).AsDate := StrToDate(MaskEdit2.Text); QryClientes.Prepare; QryClientes.Open; end else begin If MaskEdit1.text <> ´ / / ´ Then begin Showmessage( ´Campo em branco! Preencha o corretamente!´ ); MaskEdit1.SetFocus; end else If MaskEdit2.text <> ´ / / ´ Then begin Showmessage( ´Campo em branco! Preencha o corretamente!´ ) maskEdit2.SetFocus; end; end; end;
Mudando O Teste:
Obs: Faça a Opção Pela Primeira, Mas Tente as Duas
obs) Se Voce Resolver Optar Pela Primeira , Nao Use a Segunda...Se Voce Optar Pela Segunda Não Use a Primeira
Gostei + 0
23/02/2004
Marco Salles
Posso Te Sugerir Dua Saidas Para Isto..
1) Tente Mudar o Final Da Propiedade EditMask Dos Dois MaskEdit
Se O Final For 1 Troque Pelo Zero , e Se o Final For 0 Troque Pelo 1
Obs: a Propiedade EditMask Fica No CodeObjector Do MaskEdit
Exemplo:Propiedade EditMsk !99/99/9999;1;_ Tocar Por !99/99/9999;0;_
Eu Não Sei De Cabeça Qua Que Vai Funcionar, Mas Acho Que é a Com Final Zero
2) Ou Mude o Text ..Em Vez De Comparar Com <> Compare Com
´ / / ´ .....Se Data For ´dd/mm/yyyy´ Ou
´ / / ´.....Se Data For ´dd/mm/yy´
Mudando o Teste :
If (MaskEdit1.Text <> ´ / / ´)And(MaskEdit2.Text <> ´ / / ´) Then begin QryClientes.Close; QryClientes.Sql.Clear; QryClientes.Sql.Add(´Select* From CliEntes´); QryClientes.Sql.Add(´Where DtVisita >=:inicio´); QryClientes.ParamByName(´inicio´).AsDate := StrToDate(MaskEdit1.Text); QryClientes.Sql.Add(´and DtVisita <=:Termino´); QryClientes.ParamByName(´Termino´).AsDate := StrToDate(MaskEdit2.Text); QryClientes.Prepare; QryClientes.Open; end else begin If MaskEdit1.text <> ´ / / ´ Then begin Showmessage( ´Campo em branco! Preencha o corretamente!´ ); MaskEdit1.SetFocus; end else If MaskEdit2.text <> ´ / / ´ Then begin Showmessage( ´Campo em branco! Preencha o corretamente!´ ) maskEdit2.SetFocus; end; end; end;
Obs: Faça a Opção Pela Primeira, Mas Tente as Duas
obs) Se Voce Resolver Optar Pela Primeira , Nao Use a Segunda...Se Voce Optar Pela Segunda Não Use a Primeira
Gostei + 0
01/03/2004
Junior#
[]´s
Junior
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)