pcst Postado Agosto 6, 2008 Denunciar Share Postado Agosto 6, 2008 alguém consegue me ajudar, como faço para pular o campo de um cadastro que esta em branco e pegar somente o que já esta com registro... exemplo do codigo.procedure TfrmAcordos.btnAtualizadiasClick(Sender: TObject); var Dias:Integer; DtInic,DtAtual:TDate; begin DataFim.Date:=Now; btnAtualizadias.Enabled:=False; While (not tblTitulos.Eof) do //enquanto não chega no final da tabela. begin DtInic:=tblTitulos.FieldByName('DataVencimento').Value; DtAtual:= DataFim.Date; // aqui preciso verificar se a DataVencimento esta vazia ou preenchida // se tiver vazia ele vai para o proximo registro ... caso contrario executa o codigo abaixo. Dias := DaysBetWeen(DtAtual,DtInic); tblTitulos.Edit; tblTitulos.fieldbyname('DiasAtrazo').AsInteger:=Dias; DadaAcordo.caption:=datetostr(date); txtdataAcordo.Text:=datetostr(date); End; btnAtualizadias.Enabled:=True;end; Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Duduh_Capixaba Postado Agosto 6, 2008 Denunciar Share Postado Agosto 6, 2008 Coloque a seguinte condição:if Tabela_Desejada.FieldByName('CAMPO').Value = null then Faça alguma coisa else Faça outra coisaNão se esqueça de colocar o comando "Tabela.Next" antes do "end" do "while", ou seu loop vai ficar preso. Abraço! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 pcst Postado Agosto 6, 2008 Autor Denunciar Share Postado Agosto 6, 2008 (editado) obrigado cara...mas ainda não deu certoparece que o loop while não esta funcionando... se colocar no registro ele coloca...mas não roda na tabeladeu o mesmo erroprocedure TfrmAcordos.btnAtualizadiasClick(Sender: TObject);var Dias:Integer; DtInic,DtAtual:TDate; i:integer;begin DataFim.Date:=Now; btnAtualizadias.Enabled:=False; While not tblTitulos.Eof do begin if not tblTitulos.FieldByName('DataVencimento').Value = null then// if not tblTitulos.FieldByName('DataVencimento').IsNull then begin DtInic:=tblTitulos.FieldByName('DataVencimento').Value; DtAtual:= DataFim.Date; Dias := DaysBetWeen(DtInic,DtAtual); tblTitulos.Edit; tblTitulos.fieldbyname('DiasAtrazo').AsInteger:=Dias; DadaAcordo.caption:=datetostr(date); txtdataAcordo.Text:=datetostr(date); tblTitulos.Next; end; btnAtualizadias.Enabled:=True;end; Editado Agosto 6, 2008 por pcst Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Duduh_Capixaba Postado Agosto 6, 2008 Denunciar Share Postado Agosto 6, 2008 Mas qual é o erro do seu projeto? Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 pcst Postado Agosto 6, 2008 Autor Denunciar Share Postado Agosto 6, 2008 (editado) o erro é que... quando verifico o campo e ele esta vazio não faz o calculo de data e da erro..quero verificar o campo se estiver vazio ele pula para o proximo registro... e ai ele calcula os dias em atrazo e grava no campo dias em atrazoacho q é isso?Utilizei este codigo..mas parece que o while não esta funcionando...não esta correndo na tabela... fica parado somente no primeiro registro que encontrafiz assim.procedure TfrmAcordos.btnAtualizadiasClick(Sender: TObject);var Dias:Integer; DtInic,DtAtual:TDate; i:integer;begin DataFim.Date:=Now; btnAtualizadias.Enabled:=False; While not tblTitulos.Eof do begin if not tblTitulos.FieldByName('DataVencimento').IsNull then begin DtInic:=tblTitulos.FieldByName('DataVencimento').Value; DtAtual:= DataFim.Date; Dias := DaysBetWeen(DtInic,DtAtual); tblTitulos.Edit; tblTitulos.fieldbyname('DiasAtrazo').AsInteger:=Dias; DadaAcordo.caption:=datetostr(date); txtdataAcordo.Text:=datetostr(date); tblTitulos.Next; End; tblTitulos.Next;end; btnAtualizadias.Enabled:=True;end; Editado Agosto 6, 2008 por pcst Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Duduh_Capixaba Postado Agosto 6, 2008 Denunciar Share Postado Agosto 6, 2008 (editado) Hum...Acho que o problema é que sua condição não está sendo atendida... Confira o processo passo-a-passo com as tecla F8 e F7 e veja o que está de fato acontecendo. Outra coisa... Você está avançando dois registros de uma vez só quando sua condição é atendida. Retire o "tblTitulos.Next" de dentro do "if".Fiz um exemplo aqui e funcionou, veja:procedure TForm1.Button1Click(Sender: TObject); begin ADOTable1.First; while not ADOTable1.Eof do begin if not ADOTable1.FieldByName('TESTE').IsNull then begin ShowMessage('Campo preenchido'); end; ADOTable1.Next; end; end; Editado Agosto 6, 2008 por Duduh_Capixaba Citar Link para o comentário Compartilhar em outros sites More sharing options...
Pergunta
pcst
alguém consegue me ajudar, como faço para pular o campo de um cadastro que esta em branco e pegar somente o que já esta com registro...
exemplo do codigo.
procedure TfrmAcordos.btnAtualizadiasClick(Sender: TObject);
var
Dias:Integer;
DtInic,DtAtual:TDate;
begin
DataFim.Date:=Now;
btnAtualizadias.Enabled:=False;
While (not tblTitulos.Eof) do //enquanto não chega no final da tabela.
begin
DtInic:=tblTitulos.FieldByName('DataVencimento').Value;
DtAtual:= DataFim.Date;
// aqui preciso verificar se a DataVencimento esta vazia ou preenchida
// se tiver vazia ele vai para o proximo registro ... caso contrario executa o codigo abaixo.
Dias := DaysBetWeen(DtAtual,DtInic);
tblTitulos.Edit;
tblTitulos.fieldbyname('DiasAtrazo').AsInteger:=Dias;
DadaAcordo.caption:=datetostr(date);
txtdataAcordo.Text:=datetostr(date);
End;
btnAtualizadias.Enabled:=True;
end;
Link para o comentário
Compartilhar em outros sites
5 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.