Fórum verificar se o campo esta preenchido #215794

20/02/2004

0

Fala PessoALL

È 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#

Junior#

Responder

Posts

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;



Responder

Gostei + 0

21/02/2004

Junior#

Desculpem pela falta de conhecimento, mas não entendi...., existe algo mais simples... que possa ser feito..

[]´s
juninho


Responder

Gostei + 0

21/02/2004

Marcelo

Existem varias maneiras:

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?


Responder

Gostei + 0

22/02/2004

Rômulo Barros

Não concordo nem com o código que postei anteriormente, assim como também não concordo com o seu código, Marcelo - Pois ambos estão errados (o meu e o seu);
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 ......


Responder

Gostei + 0

22/02/2004

Marcelo

[quote:87dd33a188=´Undeclared Identifier´]Não concordo nem com o código que postei anteriormente, assim como também não concordo com o seu código, Marcelo - Pois ambos estão errados (o meu e o seu);
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?


Responder

Gostei + 0

22/02/2004

Marcelo

Ah... existem funções que não estão comentadas, como:

DataInválida();  // exibe uma mensagem de erro

dt; // variavel do tipo TDate;


Valeu?


Responder

Gostei + 0

23/02/2004

Junior#

Galera valeu pelas respostas...mas sou iniciante e ando tendo problemas to achando meio complicado esses codigos....tem algo mais facil...

[]´s
juninho


Responder

Gostei + 0

23/02/2004

Aroldo Zanela

Colega,

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.


Responder

Gostei + 0

23/02/2004

Junior#

Galera tá o fregamento do codigo abaixo, quanto executado ele diz que falta um ´;´ antes do ´else´....já tentei de tudo não acerto...
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.


Responder

Gostei + 0

23/02/2004

Pistesil

Eu também sou iniciante em delphi, e por isso posso estar falando so besteira, mas eu acho q o codigo ficaria assim:

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.


Responder

Gostei + 0

23/02/2004

Marco Salles

Se o Código For Este Mesmo , Me Parece Que Esta Faltando Uns Algumas Coisinhas...Tente o Código Abaixo

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


Responder

Gostei + 0

23/02/2004

Junior#

Marco, testei teu codigo, mas quando executo ele retorna a mensagem de que o valor ´ / / ´ não é um valor válido. Eu deixei os dois maskedit em branco e retornou isso.

[]´s
juninho


Responder

Gostei + 0

23/02/2004

Marco Salles

Lembra Que Eu Comentei :

Obs: Código Pode Dar Um Resultado ErradoDependendo Do Valor Da Mascara Dos MaskEdit


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


Responder

Gostei + 0

23/02/2004

Marco Salles

Lembra Que Eu Comentei :

Obs: Código Pode Dar Um Resultado ErradoDependendo Do Valor Da Mascara Dos MaskEdit


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


Responder

Gostei + 0

01/03/2004

Junior#

Testei , re-testei, voltei a testar e ele continua voltando a mesma mensagem de erro, que o valor do campo ´ / / ´, não é uma valor válido....


[]´s
Junior


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar