como atualizar tabelas em tempo execução??
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.
Desde já muitíssimo obrigado.
Alvaro_web
Curtidas 0
Respostas
Jonas_giron
12/05/2006
vc esta dando o CommitTrans para confirmar a operação?
GOSTEI 0
Alvaro_web
12/05/2006
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??
no clik do botao
Datamodule1.ADOTabProduto.close;
Datamodule1.ADOTabProduto.open;
Datamodule1.ADOTabProduto.refresh;
Datamodule1.ADOTabProduto.update;
Onde eu coloco o commit??
GOSTEI 0
Emerson Nascimento
12/05/2006
você aplica o commit ao salvar o registro.
GOSTEI 0
Alvaro_web
12/05/2006
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??
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??
GOSTEI 0
Emerson Nascimento
12/05/2006
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:
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;
GOSTEI 0
Alvaro_web
12/05/2006
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??
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??
GOSTEI 0
Emerson Nascimento
12/05/2006
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:
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;
GOSTEI 0
Alvaro_web
12/05/2006
Muito obrigado amigão resolveu minha dúvida, um forte abraço
GOSTEI 0