Instrução SQL.
Criei uma função para excluir determinadas informações em BD Interbase, já verifique e os registros estão sendo selecionados conforme parametro, o problema e que está escluir somente dois registro sendo que a tabela onde estou selecionando contem mais de 60.
Por favor alguel poderia me dizer o que esta acontecendo com está
acontecendo ?
[b]Obs: Estoque utilizando Ibquery com IBUpdateSql.
function Exclui_MapaDiario(VDATA: TdateTime): Boolean;
Var
wLanca: Boolean;
begin
Dm.Lmapa.Close;
Dm.Lmapa.SQL.Clear;
Dm.Lmapa.SQL.Add(´Select * From MAPADIARIO Where´);
Dm.Lmapa.SQL.Add(´Data < :iData´);
Dm.Lmapa.ParamByName(´iData´).AsDateTime := VDATA;
Dm.Lmapa.Prepare;
Dm.Lmapa.Open;
if not (Dm.Transa1.InTransaction) then
Dm.Transa1.StartTransaction;
wLanca := true;
Dm.Lmapa.First;
While not Dm.Lmapa.Eof do
begin
Try
Dm.Lmapa.Delete;
except
wLanca := false;
end;
end;
if wLanca then begin
Dm.Transa1.CommitRetaining;
end else begin
Dm.Lmapa.CancelUpdates;
Dm.Transa1.RollbackRetaining;
end;
Dm.Lmapa.Close;
Result := wLanca;
end;
Por favor alguel poderia me dizer o que esta acontecendo com está
acontecendo ?
[b]Obs: Estoque utilizando Ibquery com IBUpdateSql.
function Exclui_MapaDiario(VDATA: TdateTime): Boolean;
Var
wLanca: Boolean;
begin
Dm.Lmapa.Close;
Dm.Lmapa.SQL.Clear;
Dm.Lmapa.SQL.Add(´Select * From MAPADIARIO Where´);
Dm.Lmapa.SQL.Add(´Data < :iData´);
Dm.Lmapa.ParamByName(´iData´).AsDateTime := VDATA;
Dm.Lmapa.Prepare;
Dm.Lmapa.Open;
if not (Dm.Transa1.InTransaction) then
Dm.Transa1.StartTransaction;
wLanca := true;
Dm.Lmapa.First;
While not Dm.Lmapa.Eof do
begin
Try
Dm.Lmapa.Delete;
except
wLanca := false;
end;
end;
if wLanca then begin
Dm.Transa1.CommitRetaining;
end else begin
Dm.Lmapa.CancelUpdates;
Dm.Transa1.RollbackRetaining;
end;
Dm.Lmapa.Close;
Result := wLanca;
end;
Marcotema
Curtidas 0
Respostas
Marcelo.c
18/11/2003
Não há um campo com valores que diferenciem os registros ?
GOSTEI 0
Elbio
18/11/2003
Pq não tenta utilizar uma instrução SQL semelhante a essa?
DELETE FROM MAPADIARIO WHERE DATA < :iDATA;
(Outra coisa que pode verificar é que se o seu campo for do tipo TimeStamp pode dar problema...)
Espero ter ajudado.
[]´s
EGS.
DELETE FROM MAPADIARIO WHERE DATA < :iDATA;
(Outra coisa que pode verificar é que se o seu campo for do tipo TimeStamp pode dar problema...)
Espero ter ajudado.
[]´s
EGS.
Criei uma função para excluir determinadas informações em BD Interbase, já verifique e os registros estão sendo selecionados conforme parametro, o problema e que está escluir somente dois registro sendo que a tabela onde estou selecionando contem mais de 60.
Por favor alguel poderia me dizer o que esta acontecendo com está
acontecendo ?
[b]Obs: Estoque utilizando Ibquery com IBUpdateSql.
function Exclui_MapaDiario(VDATA: TdateTime): Boolean;
Var
wLanca: Boolean;
begin
Dm.Lmapa.Close;
Dm.Lmapa.SQL.Clear;
Dm.Lmapa.SQL.Add(´Select * From MAPADIARIO Where´);
Dm.Lmapa.SQL.Add(´Data < :iData´);
Dm.Lmapa.ParamByName(´iData´).AsDateTime := VDATA;
Dm.Lmapa.Prepare;
Dm.Lmapa.Open;
if not (Dm.Transa1.InTransaction) then
Dm.Transa1.StartTransaction;
wLanca := true;
Dm.Lmapa.First;
While not Dm.Lmapa.Eof do
begin
Try
Dm.Lmapa.Delete;
except
wLanca := false;
end;
end;
if wLanca then begin
Dm.Transa1.CommitRetaining;
end else begin
Dm.Lmapa.CancelUpdates;
Dm.Transa1.RollbackRetaining;
end;
Dm.Lmapa.Close;
Result := wLanca;
end;
GOSTEI 0