Forum > Portuguese

[RESOLVIDO] TRATAMENTO DE ERROS COM DATAS

(1/1)

HELENO de SantAnna:
Olá a todos,
Tenho um form de pesquisa com um Edit onde se pode pesquisar tanto por NOME quanto por DATA DE NASCIMENTO, sendo a alternância feita através de um RadioGroup. Tudo funciona perfeitamente, só não estou conseguindo tratar os erros que acontecem quando, por exemplo, o usuário final digitar um NOME estando, no RadioGroup, a opção DATA DE NASCIMENTO marcada. Os erros que aparecem são EConvertError e Format invalid, os que consigo me recordar. Testei algumas funções mas sem sucesso. Testei também try ... except ... end, mas também sem sucesso, os erros voltam a aparecer. Com certeza alguém já deve ter se deparado com esses erros, alguém tem alguma sugestão?

valdir.marcos:

--- Quote from: HELENO de SantAnna on November 06, 2018, 05:53:55 pm ---Tenho um form de pesquisa com um Edit onde se pode pesquisar tanto por NOME quanto por DATA DE NASCIMENTO, sendo a alternância feita através de um RadioGroup. Tudo funciona perfeitamente, só não estou conseguindo tratar os erros que acontecem quando, por exemplo, o usuário final digitar um NOME estando, no RadioGroup, a opção DATA DE NASCIMENTO marcada. Os erros que aparecem são EConvertError e Format invalid, os que consigo me recordar. Testei algumas funções mas sem sucesso. Testei também try ... except ... end, mas também sem sucesso, os erros voltam a aparecer. Com certeza alguém já deve ter se deparado com esses erros, alguém tem alguma sugestão?
--- End quote ---
Talvez surja uma solução usando TryStrToDate, TryStrToTime, TryStrToDateTime, StrToDateDef, StrToTimeDef, ou StrToDateTime.

HELENO de SantAnna:

--- Quote from: valdir.marcos on November 06, 2018, 11:10:56 pm ---
--- Quote from: HELENO de SantAnna on November 06, 2018, 05:53:55 pm ---Tenho um form de pesquisa com um Edit onde se pode pesquisar tanto por NOME quanto por DATA DE NASCIMENTO, sendo a alternância feita através de um RadioGroup. Tudo funciona perfeitamente, só não estou conseguindo tratar os erros que acontecem quando, por exemplo, o usuário final digitar um NOME estando, no RadioGroup, a opção DATA DE NASCIMENTO marcada. Os erros que aparecem são EConvertError e Format invalid, os que consigo me recordar. Testei algumas funções mas sem sucesso. Testei também try ... except ... end, mas também sem sucesso, os erros voltam a aparecer. Com certeza alguém já deve ter se deparado com esses erros, alguém tem alguma sugestão?
--- End quote ---
Talvez surja uma solução usando TryStrToDate, TryStrToTime, TryStrToDateTime, StrToDateDef, StrToTimeDef, ou StrToDateTime.

--- End quote ---

Desculpe a minha ignorância, mas como é que se implementa esse TryStrToDate no código? Tentei implementar num IF mas não deu certo. Por exemplo, meu código é:

    1: begin
            begin
                dmSisJVB.tabAlunos.SQL.Add('Where aln_DataNascimento = :tDataNascimento');
                dmSisJVB.tabAlunos.ParamByName('tDataNascimento').AsDate:=StrToDate(edtPesquisar.Text);
                dmSisJVB.tabAlunos.Prepare;
                dmSisJVB.tabAlunos.Open;
                if dmSisJVB.tabAlunos.RecordCount = 0 then
                begin
                    ShowMessage('DATA DE NASCIMENTO INVÁLIDA OU NÃO EXISTE ALUNO(A) CADASTRADO COM ESSA DATA!');
                end;
            end;
       end;

Tem um case associado a um RadioGroup, mas o código que dá problema é esse da data.

valdir.marcos:
Seria algo parecido com o código abaixo:

--- Code: Pascal  [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---procedure TForm1.Button1Click(Sender: TObject);begin  dmSisJVB.tabAlunos.Close;  dmSisJVB.tabAlunos.Clear;  dmSisJVB.tabAlunos.SQL.Add('Select Campos From Tabela');  if (TryStrToDate(edtPesquisar.Text)) then  begin    // Se o conteúdo for uma data válida    dmSisJVB.tabAlunos.SQL.Add('Where aln_DataNascimento = :tDataNascimento');    dmSisJVB.tabAlunos.ParamByName('tDataNascimento').AsDate := StrToDate(edtPesquisar.Text);  end  else  begin    // caso contrário, trata como texto válido = nome de aluno    dmSisJVB.tabAlunos.SQL.Add('Where aln_NomeAluno = :tNomeAluno');    dmSisJVB.tabAlunos.ParamByName('tNomeAluno').AsString := edtPesquisar.Text;  end;  dmSisJVB.tabAlunos.Prepare;  dmSisJVB.tabAlunos.Open;  if dmSisJVB.tabAlunos.RecordCount = 0 then  begin      ShowMessage('DATA DE NASCIMENTO INVÁLIDA OU NÃO EXISTE ALUNO(A) CADASTRADO COM ESSA DATA!');  end;end;

HELENO de SantAnna:

--- Quote from: valdir.marcos on November 09, 2018, 02:00:18 am ---Seria algo parecido com o código abaixo:

--- Code: Pascal  [+][-]window.onload = function(){var x1 = document.getElementById("main_content_section"); if (x1) { var x = document.getElementsByClassName("geshi");for (var i = 0; i < x.length; i++) { x[i].style.maxHeight='none'; x[i].style.height = Math.min(x[i].clientHeight+15,306)+'px'; x[i].style.resize = "vertical";}};} ---procedure TForm1.Button1Click(Sender: TObject);begin  dmSisJVB.tabAlunos.Close;  dmSisJVB.tabAlunos.Clear;  dmSisJVB.tabAlunos.SQL.Add('Select Campos From Tabela');  if (TryStrToDate(edtPesquisar.Text)) then  begin    // Se o conteúdo for uma data válida    dmSisJVB.tabAlunos.SQL.Add('Where aln_DataNascimento = :tDataNascimento');    dmSisJVB.tabAlunos.ParamByName('tDataNascimento').AsDate := StrToDate(edtPesquisar.Text);  end  else  begin    // caso contrário, trata como texto válido = nome de aluno    dmSisJVB.tabAlunos.SQL.Add('Where aln_NomeAluno = :tNomeAluno');    dmSisJVB.tabAlunos.ParamByName('tNomeAluno').AsString := edtPesquisar.Text;  end;  dmSisJVB.tabAlunos.Prepare;  dmSisJVB.tabAlunos.Open;  if dmSisJVB.tabAlunos.RecordCount = 0 then  begin      ShowMessage('DATA DE NASCIMENTO INVÁLIDA OU NÃO EXISTE ALUNO(A) CADASTRADO COM ESSA DATA!');  end;end;
--- End quote ---

Muito obrigado, Hero!
Não havia pensado nessa possibilidade. Vou implementar.

Navigation

[0] Message Index

Go to full version