Fórum disablecontrols #379552
15/06/2010
0
tabela 2 => cdslanctos = campos: id, codigo, valor, data
relacionamento: CODIGO
numa tabela mestre detalhe, usando o codigo abaixo e habilitando o disablecontrols, so consigo ler a tabela de lancamento somente uma vez..
procedure calculo;
var
acum: double;
begin
// dm.cdsfunc.DisableControls;
Screen.Cursor := crHourGlass;
dm.cdsfunc.First;
while not dm.cdsfunc.Eof do
begin
dm.cdsLanctos.First;
acum := 0;
while not dm.cdsLanctos.Eof do
begin
if dm.cdsLanctosDT_LANCTO.AsString = edit1.text then
acum := acum + dm.cdsLanctos.FieldByName('VALOR').AsFloat;
dm.cdsLanctos.Next;
end;
dm.cdsFunc.Edit;
dm.cdsFunc.FieldByName('VALES').AsFloat := acum;
dm.cdsFunc.Post;
dm.cdsfunc.Next;
end;
dm.cdsfunc.First;
dm.cdsLanctos.First;
Screen.Cursor := crDefault;
// dm.cdsfunc.EnableControls;
end;
Ozamir Frias
Curtir tópico
+ 0Posts
15/06/2010
Marco Salles
tabela 2 => cdslanctos = campos: id, codigo, valor, data
relacionamento: CODIGO
numa tabela mestre detalhe, usando o codigo abaixo e habilitando o disablecontrols, so consigo ler a tabela de lancamento somente uma vez..
procedure calculo;
var
acum: double;
begin
// dm.cdsfunc.DisableControls;
Screen.Cursor := crHourGlass;
dm.cdsfunc.First;
while not dm.cdsfunc.Eof do
begin
dm.cdsLanctos.First;
acum := 0;
while not dm.cdsLanctos.Eof do
begin
if dm.cdsLanctosDT_LANCTO.AsString = edit1.text then
acum := acum + dm.cdsLanctos.FieldByName('VALOR').AsFloat;
dm.cdsLanctos.Next;
end;
dm.cdsFunc.Edit;
dm.cdsFunc.FieldByName('VALES').AsFloat := acum;
dm.cdsFunc.Post;
dm.cdsfunc.Next;
end;
dm.cdsfunc.First;
dm.cdsLanctos.First; ///****************Posicinada De Forma Errada ou no Minimo ESTRANHA
Screen.Cursor := crDefault;
// dm.cdsfunc.EnableControls;
end;
Gostei + 0
15/06/2010
Km Sistemas
procedure calculo;var acum: double;begin dm.cdsfunc.DisableControls; Screen.Cursor := crHourGlass; dm.cdsfunc.First; while not dm.cdsfunc.Eof do begin dm.cdsLanctos.close; dm.cdsLanctos.parambyname('CODIGO').asinteger := dm.cdsfunc.FieldByName('CODIGO').asinteger; dm.cdsLanctos.open; dm.cdsLanctos.First; acum := 0; while not dm.cdsLanctos.Eof do begin if dm.cdsLanctosDT_LANCTO.AsString = edit1.text then acum := acum + dm.cdsLanctos.FieldByName('VALOR').AsFloat; dm.cdsLanctos.Next; end; dm.cdsFunc.Edit; dm.cdsFunc.FieldByName('VALES').AsFloat := acum; dm.cdsFunc.Post;
dm.cdsfunc.Next; end;
dm.cdsfunc.First; dm.cdsLanctos.First;
Screen.Cursor := crDefault; dm.cdsfunc.EnableControls;end;Gostei + 0
16/06/2010
Fábio Cruz
tabela 2 => cdslanctos = campos: id, codigo, valor, data
relacionamento: CODIGO
numa tabela mestre detalhe, usando o codigo abaixo e habilitando o disablecontrols, so consigo ler a tabela de lancamento somente uma vez..
procedure calculo;
var
acum: double;
begin
// dm.cdsfunc.DisableControls;
Screen.Cursor := crHourGlass;
dm.cdsfunc.First;
while not dm.cdsfunc.Eof do
begin
dm.cdsLanctos.First;
acum := 0;
while not dm.cdsLanctos.Eof do
begin
if dm.cdsLanctosDT_LANCTO.AsString = edit1.text then
acum := acum + dm.cdsLanctos.FieldByName('VALOR').AsFloat;
dm.cdsLanctos.Next;
end;
dm.cdsFunc.Edit;
dm.cdsFunc.FieldByName('VALES').AsFloat := acum;
dm.cdsFunc.Post;
dm.cdsfunc.Next;
end;
dm.cdsfunc.First;
dm.cdsLanctos.First; ///****************Posicinada De Forma Errada ou no Minimo ESTRANHA
Screen.Cursor := crDefault;
// dm.cdsfunc.EnableControls;
end;
Mas se ele colocar o First dentro do bloco não vai entrar em um Loop infinito? Pois nunca irá satisfazer a condição EOF
Gostei + 0
16/06/2010
Marco Salles
if dm.cdsLanctosDT_LANCTO.AsString = edit1.text then
acum := acum + dm.cdsLanctos.FieldByName('VALOR').AsFloat;
ate sair do Loop da Tabela Lancamentos
Então , ele so vai conseguir ler depedendo do que tem no Edit.Text , e é´possivel que seje somente uma vez mesmo , ou mesmo ate nenhuma
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)