Paradox em Rede
Olá pessoal,
Estou com um probleminha em minha aplicação, todos os usuários estão acessando o mesmo registro, em rede.
Eu coloquei em meu formulário de cadastro o seguinte, no evento OnCreate:
-----------------------------------------------------------------------------------
DMDados.TBCadastro.FlushBuffers;
-----------------------------------------------------------------------------------
No evento OnEditError da tabela TBCadastro:
-----------------------------------------------------------------------------------
procedure TDMDados.TBCadastroEditError(DataSet: TDataSet;
E: EDatabaseError; var Action: TDataAction);
Var
wErro, wRet: Word;
begin
If E is EDBEngineError Then
Begin
wErro:=(E as EDBEngineError).Errors[1].ErrorCode;
If (wErro = 10241) Then
Begin
wRet:=Application.MessageBox(´Outro usuário está editando este registro!´+#13+´Tentar novamente?´,´ARENÇÃO´, MB_YESNO + MB_ICONQUESTION);
If wRet = IDYes Then
Action:=daRetry
Else
Action:=daAbort;
End;
End;
end;
-----------------------------------------------------------------------------------
E no evento OnPostErro da tabela TBCadastro:
-----------------------------------------------------------------------------------
procedure TDMDados.TBCadastroPostError(DataSet: TDataSet;
E: EDatabaseError; var Action: TDataAction);
Var
ErroMens :String;
begin
ErroMens := E.Message;
if ErroMens = ´Key violation.´ then begin ShowMessage(´Duplicação na Chave Primária.´);
action := daAbort;
End;
end;
-----------------------------------------------------------------------------------
Mas só q se um usuário mandar editar um registro q já está sendo utilizado por outro a mensagem não aparece e este segundo usuário acessa tranqüilamente o registro.
O q mais posso fazer para q dois ou mais usuários não editem o mesmo registro?
Grato,
Ilano.
Estou com um probleminha em minha aplicação, todos os usuários estão acessando o mesmo registro, em rede.
Eu coloquei em meu formulário de cadastro o seguinte, no evento OnCreate:
-----------------------------------------------------------------------------------
DMDados.TBCadastro.FlushBuffers;
-----------------------------------------------------------------------------------
No evento OnEditError da tabela TBCadastro:
-----------------------------------------------------------------------------------
procedure TDMDados.TBCadastroEditError(DataSet: TDataSet;
E: EDatabaseError; var Action: TDataAction);
Var
wErro, wRet: Word;
begin
If E is EDBEngineError Then
Begin
wErro:=(E as EDBEngineError).Errors[1].ErrorCode;
If (wErro = 10241) Then
Begin
wRet:=Application.MessageBox(´Outro usuário está editando este registro!´+#13+´Tentar novamente?´,´ARENÇÃO´, MB_YESNO + MB_ICONQUESTION);
If wRet = IDYes Then
Action:=daRetry
Else
Action:=daAbort;
End;
End;
end;
-----------------------------------------------------------------------------------
E no evento OnPostErro da tabela TBCadastro:
-----------------------------------------------------------------------------------
procedure TDMDados.TBCadastroPostError(DataSet: TDataSet;
E: EDatabaseError; var Action: TDataAction);
Var
ErroMens :String;
begin
ErroMens := E.Message;
if ErroMens = ´Key violation.´ then begin ShowMessage(´Duplicação na Chave Primária.´);
action := daAbort;
End;
end;
-----------------------------------------------------------------------------------
Mas só q se um usuário mandar editar um registro q já está sendo utilizado por outro a mensagem não aparece e este segundo usuário acessa tranqüilamente o registro.
O q mais posso fazer para q dois ou mais usuários não editem o mesmo registro?
Grato,
Ilano.
Ilanocf
Curtidas 0
Respostas
Roberto_conetsys
07/07/2003
Ola Ilano
Quem administra o acesso as tabelas em rede é o BDE, e realmente se voce estiver editando um registro em rede o BDE não permiti que seja editado por outro usuário.
Normalmente não é preciso tratar este erro, somente configurar o BDE adequadamente.
Quem administra o acesso as tabelas em rede é o BDE, e realmente se voce estiver editando um registro em rede o BDE não permiti que seja editado por outro usuário.
Normalmente não é preciso tratar este erro, somente configurar o BDE adequadamente.
GOSTEI 0
Ilanocf
07/07/2003
Olá Roberto,
Bem, peguei algumas dicas sobre como configurar o BDE em rede, veja se está faltando algo:
Após criar um Alias no primeiro computador (A) q será:
Juazeiro
Path: C:\Juazeiro\Dados
Vou para um segundo computador (B) e faço:
1º) Crio um Alias:
Juazeiro
Path: \\14dep03\c\Juazeiro\Dados *****Caminho para computador A
2º) Configuration / Drivers / Native / Paradox;
3º) NETDIR: \\14dep03\c\Juazeiro\Dados
4º) Configuration / Drivers / Native / System / INIT;
5º) LOCAL SHARE: True.
Não precisei colocar as tabelas no computador B pois o B está em rede com o A, certo?
Existe algo mais a fazer?
Bem, peguei algumas dicas sobre como configurar o BDE em rede, veja se está faltando algo:
Após criar um Alias no primeiro computador (A) q será:
Juazeiro
Path: C:\Juazeiro\Dados
Vou para um segundo computador (B) e faço:
1º) Crio um Alias:
Juazeiro
Path: \\14dep03\c\Juazeiro\Dados *****Caminho para computador A
2º) Configuration / Drivers / Native / Paradox;
3º) NETDIR: \\14dep03\c\Juazeiro\Dados
4º) Configuration / Drivers / Native / System / INIT;
5º) LOCAL SHARE: True.
Não precisei colocar as tabelas no computador B pois o B está em rede com o A, certo?
Existe algo mais a fazer?
GOSTEI 0
Helderjr
07/07/2003
Ilano,
Só verifique uma coisa, o Local Share=True somente no servidor (Micro A ) os demais Local Share = False.
Só verifique uma coisa, o Local Share=True somente no servidor (Micro A ) os demais Local Share = False.
GOSTEI 0