Fórum como atualizar tabelas em tempo execução?? #321215

12/05/2006

0

Olá Senhores, tenho uma tabela de entrada de produtos, TabEntraProdutos quando faço uma operação de entrada de produtos, e depois vou olhar no relatório (ReportBuilder) a operação não está listada lá, para que apareça eu tenho que sair do sistema e quando volto navamente ele está lá. faço referencia a tabela através do Datamodule1.ADOTabEntraProduto, uso o ACCESS

Desde já muitíssimo obrigado.


Alvaro_web

Alvaro_web

Responder

Posts

12/05/2006

Jonas_giron

vc esta dando o CommitTrans para confirmar a operação?


Responder

Gostei + 0

12/05/2006

Alvaro_web

Amigão, sou novato em delphi, vc poderia me mostra como se faz, onde colocar, o commit, eu fiz o seguinte:
no clik do botao
Datamodule1.ADOTabProduto.close;
Datamodule1.ADOTabProduto.open;
Datamodule1.ADOTabProduto.refresh;
Datamodule1.ADOTabProduto.update;

Onde eu coloco o commit??


Responder

Gostei + 0

12/05/2006

Emerson Nascimento

você aplica o commit ao salvar o registro.


Responder

Gostei + 0

12/05/2006

Alvaro_web

procedure TFrmEntraProduto.sbConfirmaClick(Sender: TObject);
begin
if StrToInt(DBEdit8.Text) <= 0 then
begin
ShowMessage(´Valor informado não é válido!´);
Exit;
end
else
DataModule1.ADOTabEntraProduto.Post;
DataModule1.ADOTabProduto.Edit;
DataModule1.ADOTabProdutoqtde.Value:=DataModule1.ADOTabProdutoqtde.Value+DataModule1.ADOTabEntraProdutoqtde.AsVariant;
DataModule1.ADOTabProduto.Post;
DataModule1.ADOTabProduto.Close;
DataModule1.ADOTabProduto.Open;
DataModule1.ADOTabProduto.Refresh;
DataModule1.ADOTabProduto.UpdateStatus;
Datamodule1.ADOTabEntraProduto.Close;
DataModule1.ADOTabEntraProduto.Open;
Datamodule1.ADOTabEntraProduto.Refresh;
Datamodule1.ADOTabEntraProduto.UpdateStatus;
Datamodule1.ADOTabFornecedor.Close;
DataModule1.ADOTabFornecedor.Open;
Datamodule1.ADOTabFornecedor.Refresh;
Datamodule1.ADOTabFornecedor.UpdateStatus;
DBLookupComboBox2.SetFocus;
end;

Este é o código para inserir produtos! o que acha??


Responder

Gostei + 0

12/05/2006

Emerson Nascimento

esses Refreshs e Updates só servem pro usuário corrente. pra que seja visível na rede, é necessário ´comitar´ os dados.

seria algo assim:
with DataModule1 do
begin
  ADOTabEntraProduto.Post; // grava em cache
  ADOTabProduto.Edit; 
  ADOTabProdutoqtde.Value:=
    ADOTabProdutoqtde.Value+ADOTabEntraProdutoqtde.AsVariant; 
  ADOTabProduto.Post; 

  // grava todas as alterações no banco (fisicamente)
  ADOTabProduto.Connection.CommitTrans;

  ADOTabProduto.Close; 
  ADOTabProduto.Open; 
  ADOTabProduto.UpdateStatus; // ??? 
end;



Responder

Gostei + 0

12/05/2006

Alvaro_web

Valeu amigão vc é de luxo,
meu sistema é de estoque e não roda em rede, se eu fizer no final do código assim:

Datamodule1.ADOConnection1.BeginTrans;
Datamodule1.ADOConnection1.CommitTrans;

Fica certo??


Responder

Gostei + 0

12/05/2006

Emerson Nascimento

não conheço os componentes ADO. [b:36bea54277]teoricamente a transação é aberta automaticamente ao executar uma edição nos registros[/b:36bea54277]. por isso eu coloquei apenas o CommitTrans, pois suponho que a transação foi aberta ao iniciar a edição (entenda-se por edição qualquer inclusão, alteração ou exclusão de registros cujos datasets estejam conectados àquele ADOConnection).

se a transação não for aberta automaticamente, você deve abri-la ao iniciar a edição e comitar ao gravar as alterações. seria algo assim:
with DataModule1 do 
begin 
  //inicia a transação
  ADOTabProduto.Connection.BeginTrans;

  ADOTabEntraProduto.Post; // grava em cache 
  ADOTabProduto.Edit; 
  ADOTabProdutoqtde.Value:= 
    ADOTabProdutoqtde.Value+ADOTabEntraProdutoqtde.AsVariant; 
  ADOTabProduto.Post; 

  // grava todas as alterações no banco (fisicamente) 
  ADOTabProduto.Connection.CommitTrans; 

  ADOTabProduto.Close; 
  ADOTabProduto.Open; 
  ADOTabProduto.UpdateStatus; // ??? 
end;



Responder

Gostei + 0

12/05/2006

Alvaro_web

Muito obrigado amigão resolveu minha dúvida, um forte abraço


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar