Fórum Interbase atualizando em rede(IBTransaction) #236585

07/06/2004

0

Tenho a Maquina A e a Maquina B, quando a Maquina A faz
uma inclusao ou exclusao ou alteracao a Maquina B, nao
aparece para a Maquina B

Alguem pode me dar alguma dica?

Obs. estou usando um botao para incluir(qry.append)e
um botao para salvar(qry.post)
Gostaria qeu alguem me desse um exemplo....

Me ajudem

evandro


Evandro_araujo

Evandro_araujo

Responder

Posts

08/06/2004

Essistemas

Olha vou te ser sincero, normalmente não se usa uma query para adicionar registros desta forma dando um append.
Se pode utilizar as ferramentas da pela IBX, normalmente depois de uma inserção vc fechar essa transação e tudo o que fez ficara disponiveis em outros terminais !
If DataModule.Transacao.Active = False Then
DataModule.Transacao.Active :=True ;
DataModule.Transacao.Commit ;

Agora eu utilizo classe p/ trabalhar com o banco, não utiliza componentes dataware, para mim foi a melhor forma que encontrei p/ trabalar com BDS, uma coisa aprendi trabalhar com Bds, vc tem que utilizar os comando em SQL Mesmo !, p/ que vc tenha velocidade. vou te passar um exemplo de uma classe o que precisar estamos por ai !!



unit Tperda;

interface
Uses
Windows, Messages, SysUtils,Dialogs,IBQuery,Db,Controls;
Type
TB_Perda =Class(Tobject)
Tb_Perdas:TIBQuery;
DataPerdas:TDataSource;
Data1,Data2:String;
Produto,Motivo,Quant,Nr:String ;
Total,Custo : Currency ;
Function LerDados : Boolean ;
Function Inserir : Boolean ;
Function GravaDados : Boolean ;
Function PerdaData : Boolean ;
Function Excluir : Boolean ;
Function InformarSize(Campo : String) : Integer ;
public
constructor Create ;
Destructor Destroy ; Override ;
end ;
implementation
Uses Unit25;
constructor Tb_Perda.Create ;
begin
Tb_Perdas:=TIBQuery.Create(nil) ;
DataPerdas:=TDataSource.Create(nil) ;
Tb_Perdas.DataBase:=DataModule25.Conexao ;
DataPerdas.DataSet:=Tb_Perdas ;
end;

Destructor TB_Perda.Destroy ;
begin
Tb_Perdas.Free ;
DataPerdas.Free ;
end;

Function Tb_Perda.InformarSize( Campo : String ) : integer ;
begin
Result := 0 ;
Campo := UpperCase( Campo ) ;
if Campo = ´PRODUTO´ then
Result := 50
else if Campo = ´MOTIVO´ then
Result := 40
end;
Function Tb_Perda.LerDados : Boolean;
Begin
With Tb_Perdas,SQL do
Begin
Try
Clear ;
Add(´Select * From Perda Order by Produto ´);
Active:=True;
Result:=True;
Except
MessageDlg(´IMPOSSIVEL, CARREGAR OS DADOS !...´,mtError,[mbOK],0);
Result:=False;
end;
end;
end;

Function Tb_Perda.PerdaData : Boolean;
Begin
With Tb_Perdas,SQL do
Begin
Try
Clear ;
Add(´Select * from PERDA Where Data>=:Vdata1 and Data <=:VData2´);
ParamByName(´Vdata1´).AsString:=Data1;
ParamByName(´Vdata2´).AsString:=Data2;
Active:=True;
Result:=True;
Except
MessageDlg(´IMPOSSIVEL, CARREGAR OS DADOS ...´,mtError,[mbOK],0);
Result:=False;
end ;
end ;
end ;

Function Tb_Perda.Inserir : Boolean;
Begin
With Tb_Perdas,SQL do
Begin
Try
Clear ;
Add(´insert into PERDA´);
Add(´(PRODUTO,MOTIVO,QUANTIDADE,DATA,PRECO_COMPRA,TOTAL)´);
Add(´values´);
Add(´(:VPRODUTO,:VMOTIVO,:VQUANTIDADE,:VDATA,:VCUSTO,:VTOTAL)´);
ParamByname(´VProduto´ ).AsString := Produto ;
ParamByname(´VMotivo´ ).AsString := Motivo ;
ParamByname(´VQuantidade´).AsString := Quant ;
ParamByname(´VData´ ).AsString := DateTostr(now) ;
ParamByname(´VTotal´ ).AsFloat := Total ;
ParamByname(´VCusto´ ).AsFloat := Custo ;
ExecSql ;
Add(´Commit´);
Result:=True;
Except
MessageDlg(´IMPOSSIVEL, ADICIONAR DADOS !...´,mtError,[mbOK],0);
Result:=False;
end;
end;
end;

Function Tb_Perda.GravaDados : Boolean;
Begin
With Tb_Perdas,SQL do
Begin
Try
Clear ;
Add(´update PERDA´);
Add(´set´);
Add(´PRODUTO = :VPRODUTO,´);
Add(´MOTIVO = :VMOTIVO,´);
Add(´QUANTIDADE = :VQUANTIDADE,´);
Add(´DATA = :VDATA´);
Add(´where´);
Add(´MOTIVO = :VMOTIVO´);
ParamByname(´VProduto´).AsString :=Produto ;
ParamByname(´VMotivo´).AsString :=Motivo ;
ParamByname(´VQuantidade´).AsString :=Quant ;
ParamByname(´VData´).AsDate :=TDate(now) ;
ExecSql ;
Add(´Commit´);
Result:=True;
Except
MessageDlg(´IMPOSSIVEL, GRAVAR OS DADOS !...´,mtError,[mbOK],0);
Result:=False;
end;
end;
end;

Function Tb_Perda.Excluir : Boolean;
Begin
With Tb_Perdas,SQL do
Begin
Try
Clear ;
Add(´Delete from PERDA´);
Add(´Where (Nr)= :VNr ´) ;
ParamByName(´VNr´).AsString:=Nr;
ExecSql ;
Add(´Commit´);
Result:=True;
Except
MessageDlg(´IMPOSSÍVEL, EXCLUIR PERDA !...´,mtError,[mbOK],0);
Result:=False;
end;
end;
end;
end.


Responder

Gostei + 0

08/06/2004

Eniorm

Tenho a Maquina A e a Maquina B, quando a Maquina A faz uma inclusao ou exclusao ou alteracao a Maquina B, nao aparece para a Maquina B Alguem pode me dar alguma dica? Obs. estou usando um botao para incluir(qry.append)e um botao para salvar(qry.post) Gostaria qeu alguem me desse um exemplo.... Me ajudem evandro


Eu não uso o Apend, uso o Insert... até ai td bem.
Falta fazer a configuração do IBTransaction, de 2 cliques
nele e escolha a opção read commited.

ei toda vez em que vc dar Post, logo em seguida de o
ApplyUpdates e depois Commit ou CommitRetaining no
IBTransaction.
T+


Responder

Gostei + 0

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

Aceitar