Fórum Baixa Itens #322334
27/05/2006
0
Oi amigos!!!
Fiz uma rotina, com uma ajuda de nossos amigos do forúm, que faz a baixa de itens (cartuchos) de uma solicitação (processo parecido com o do pedido de vendas). Acabei fazendo uma modificação, quando é gravado cada item na tabela de ITENS, é gerado um histórico para ele, pois será baseado quando estiver montando o relatório. O código funciona perfeitamente, porém leva aproximadamente 4 segundos para efetuar o processo quando clico no botão BAIXAR ITENS, com 1 ou 5 itens, aí tanto faz. A minha dúvida é em relação a este tempo, será que não está um pouco longo? Seria o mais recomendando colocar alguma mensagem pedindo para aguardar?
Segue abaixo o código para que possam verificar se há algo errado.
Obs.: Estou utilizando FIREBIRD + DELPHI 2005 + DBEXPRESS + SQLDATASET + DATASETPROVIDER + CLIENTDATASET + DATASOURCE
Desde já agradeço a atenção de todos.
Um abraço,
Rogério
/////////////////////////////////////////////////////////////////////////////////
procedure TfrmAtenderSolic.btnBaixarItensClick(Sender: TObject);
var
QtdeSolic, QtdeEstoque, CodigoCartucho, CodigoItem : integer;
ItemStatus : string;
begin
QtdeSolic := strtoint(dbedtQtde.Text);
QtdeEstoque := strtoint(dbedtEstoque.Text);
btnBaixarItens.Enabled := false;
btnFinalizarSolic.Enabled := true;
with dmSolicitacao do
begin
cdsItensPend.First;
while not cdsItensPend.Eof do
begin
QtdeEstoque := strtoint(dbedtEstoque.Text);
QtdeSolic := strtoint(dbedtQtde.Text);
CodigoCartucho := strtoint(copy(dbedtModelo.Text, 1, 3));
ItemStatus := cdsItensPend.FieldByName(´STATUS´).AsString;
if (QtdeEstoque >= QtdeSolic) then
begin
// Faz a verificação do STATUS do item
// se estiver como PENDENTE, realiza a baixa no estoque
// e muda o status para ENVIADO
if ItemStatus = ´PENDENTE´ then
begin
// Baixa o estoque
baixaEstoque(CodigoCartucho, QtdeSolic);
// Atualiza o status do item para ´ENVIADO´
CodigoItem := dmSolicitacao.cdsItensPend.FieldByName(´COD_ITEM´).AsInteger;
statusItem(CodigoItem, ´ENVIADO´);
ItemStatus := ´ENVIADO´;
end
else
ItemStatus := ´PENDENTE´;
end;
// Grava histórico do item
with dmHistorico.cdsInserirHistItem do
begin
FetchParams;
close;
Params.ParamByName(´COD_SOLIC´).AsInteger :=
dmSolicitacao.cdsSolicPend.FieldByName(´COD_SOLIC´).AsInteger;
Params.ParamByName(´COD_CART´).AsInteger :=
dmSolicitacao.cdsItensPend.FieldByName(´COD_CART´).AsInteger;
Params.ParamByName(´MODELO´).AsString :=
dmSolicitacao.cdsItensPend.FieldByName(´MODELO´).AsString;
Params.ParamByName(´MARCA´).AsString :=
dmSolicitacao.cdsItensPend.FieldByName(´MARCA´).AsString;
Params.ParamByName(´QTDE_ENT´).AsInteger :=
dmSolicitacao.cdsItensPend.FieldByName(´QTDE_ENT´).AsInteger;
Params.ParamByName(´STATUS´).AsString := ItemStatus;
execute;
end;
cdsItensPend.Next;
end;
end;
dmSolicitacao.cdsSolicPend.Refresh;
dmSolicitacao.cdsItensPend.Last;
end;
/////////////////////////////////////////////////////////////////////////////////
Fiz uma rotina, com uma ajuda de nossos amigos do forúm, que faz a baixa de itens (cartuchos) de uma solicitação (processo parecido com o do pedido de vendas). Acabei fazendo uma modificação, quando é gravado cada item na tabela de ITENS, é gerado um histórico para ele, pois será baseado quando estiver montando o relatório. O código funciona perfeitamente, porém leva aproximadamente 4 segundos para efetuar o processo quando clico no botão BAIXAR ITENS, com 1 ou 5 itens, aí tanto faz. A minha dúvida é em relação a este tempo, será que não está um pouco longo? Seria o mais recomendando colocar alguma mensagem pedindo para aguardar?
Segue abaixo o código para que possam verificar se há algo errado.
Obs.: Estou utilizando FIREBIRD + DELPHI 2005 + DBEXPRESS + SQLDATASET + DATASETPROVIDER + CLIENTDATASET + DATASOURCE
Desde já agradeço a atenção de todos.
Um abraço,
Rogério
/////////////////////////////////////////////////////////////////////////////////
procedure TfrmAtenderSolic.btnBaixarItensClick(Sender: TObject);
var
QtdeSolic, QtdeEstoque, CodigoCartucho, CodigoItem : integer;
ItemStatus : string;
begin
QtdeSolic := strtoint(dbedtQtde.Text);
QtdeEstoque := strtoint(dbedtEstoque.Text);
btnBaixarItens.Enabled := false;
btnFinalizarSolic.Enabled := true;
with dmSolicitacao do
begin
cdsItensPend.First;
while not cdsItensPend.Eof do
begin
QtdeEstoque := strtoint(dbedtEstoque.Text);
QtdeSolic := strtoint(dbedtQtde.Text);
CodigoCartucho := strtoint(copy(dbedtModelo.Text, 1, 3));
ItemStatus := cdsItensPend.FieldByName(´STATUS´).AsString;
if (QtdeEstoque >= QtdeSolic) then
begin
// Faz a verificação do STATUS do item
// se estiver como PENDENTE, realiza a baixa no estoque
// e muda o status para ENVIADO
if ItemStatus = ´PENDENTE´ then
begin
// Baixa o estoque
baixaEstoque(CodigoCartucho, QtdeSolic);
// Atualiza o status do item para ´ENVIADO´
CodigoItem := dmSolicitacao.cdsItensPend.FieldByName(´COD_ITEM´).AsInteger;
statusItem(CodigoItem, ´ENVIADO´);
ItemStatus := ´ENVIADO´;
end
else
ItemStatus := ´PENDENTE´;
end;
// Grava histórico do item
with dmHistorico.cdsInserirHistItem do
begin
FetchParams;
close;
Params.ParamByName(´COD_SOLIC´).AsInteger :=
dmSolicitacao.cdsSolicPend.FieldByName(´COD_SOLIC´).AsInteger;
Params.ParamByName(´COD_CART´).AsInteger :=
dmSolicitacao.cdsItensPend.FieldByName(´COD_CART´).AsInteger;
Params.ParamByName(´MODELO´).AsString :=
dmSolicitacao.cdsItensPend.FieldByName(´MODELO´).AsString;
Params.ParamByName(´MARCA´).AsString :=
dmSolicitacao.cdsItensPend.FieldByName(´MARCA´).AsString;
Params.ParamByName(´QTDE_ENT´).AsInteger :=
dmSolicitacao.cdsItensPend.FieldByName(´QTDE_ENT´).AsInteger;
Params.ParamByName(´STATUS´).AsString := ItemStatus;
execute;
end;
cdsItensPend.Next;
end;
end;
dmSolicitacao.cdsSolicPend.Refresh;
dmSolicitacao.cdsItensPend.Last;
end;
/////////////////////////////////////////////////////////////////////////////////
Roger1976
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)