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