Neste codigo trabalho com um clientdataset temporario para armazenar
os numeros de serie. Supondo que a ordem de entrada fosse um numero de serie que não existe, e sem seguida um que já existe, a operaçao teria que ser desfeita pelo seguinte motivo: sem esvaziar o dataset, o usuario vai e digita outro numero, so que ai começa a duplicar, pelo fato do primeiro existente já estar gravado. Precisaria dar um rollback mas não sei como fazer...
Onde estao os abort, é onde preciso fazer os rollback.
procedure TOB060.BitBtn1Click(Sender: TObject);
begin
pr006.ce024b.first;
cgrid.first;
while not pr006.ce024b.eof do
begin
if ((pr006.ce024bseqfab.Value = '') and (pr006.ce024bnumfab.value = 1)) then
Pergunta
MICHELI_MARTINS
Boa tarde. Vou tentar explicar a situação.
Neste codigo trabalho com um clientdataset temporario para armazenar
os numeros de serie. Supondo que a ordem de entrada fosse um numero de serie que não existe, e sem seguida um que já existe, a operaçao teria que ser desfeita pelo seguinte motivo: sem esvaziar o dataset, o usuario vai e digita outro numero, so que ai começa a duplicar, pelo fato do primeiro existente já estar gravado. Precisaria dar um rollback mas não sei como fazer...
Onde estao os abort, é onde preciso fazer os rollback.
procedure TOB060.BitBtn1Click(Sender: TObject);
begin
pr006.ce024b.first;
cgrid.first;
while not pr006.ce024b.eof do
begin
if ((pr006.ce024bseqfab.Value = '') and (pr006.ce024bnumfab.value = 1)) then
begin
with arq925 do
begin
Close;
parambyname('wcodobr').value := wcodemp;
parambyname('wnumfab').value := cgridseqfab.value;
parambyname('wcodcon').value := pr006.ce024bcodpro.Value;
open;
if arq925.isempty then
begin
ShowMessage('Numeração Fábrica não Cadastrado.');
abort;
end;
if (arq925retira.value = 'S') and (arq925finali.value=1) and (pr006.ce024alocori.value <> 999) then
begin
showmessage('Este medidor foi retirado de obra com destino ao laboratorio.');
abort;
end;
if (arq925retira.value = 'S') and (arq925finali.value<>1) and (pr006.ce024alocori.value = 999) then
begin
showmessage('Este medidor foi retirado de obra com destino ao estoque.');
abort;
end;
if arq925status.value <> '' then
begin
arq906.close;
arq906.parambyname('wcodcli').value := arq000codcli.value;
arq906.parambyname('wcodcon').value := arq925codcon.value;
if copy(arq000tipser.value,1,3)='STC' then
begin
arq906.parambyname('wusomat1').value := 0;
arq906.parambyname('wusomat2').value := 2;
end;
if copy(arq000tipser.value,1,3)='CCM' then
begin
arq906.parambyname('wusomat1').value := 0;
arq906.parambyname('wusomat2').value := 1;
end;
if copy(arq000tipser.value,1,3)='SIP' then
begin
arq906.parambyname('wusomat1').value := 0;
arq906.parambyname('wusomat2').value := 3;
end;
arq906.open;
if arq925status.value = 'D' then
showmessage('Item não disponivel. já foi devolvido.')
else
ShowMessage('Item já incluso e não esta disponivel');
abort;
end;
end;
pr006.ce024b.edit;
pr006.ce024bseqfab.value:= cgridseqfab.value;
pr006.ce024b.post;
cgrid.next;
end;
pr006.ce024b.next;
end;
ob060.close;
end;
Link para o comentário
Compartilhar em outros sites
1 resposta 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.