Banco de dados FIREBIRD

09/01/2020

0

Bom dia a todos, estive afastado um pouco da programação em delphi queria saber se no Firebird existe uma forma de um ou mais usuários acessarem o mesmo baco de dados editando os mesmo campos e salvando em seguida, em tempo real não lembro se no Firebird tem um procedimento assim.
Julio Cesar

Julio Cesar

Responder

Posts

10/01/2020

Manoel Junior

Bom dia, Julio. Não consegui entender sua pergunta, eu trabalho com Firebird...
Responder

10/01/2020

Julio Cesar

Bom dia, Julio. Não consegui entender sua pergunta, eu trabalho com Firebird...


Ola, e assim tenho programa de chamados técnicos e uso o banco e um servidor e tenho outros terminais que fazem o acesso ao banco para leitura e edição, quando entra um chamado novo eu cadastro normal e salvo mais ao mesmo tempo tiver outro terminal registrando um dados qualquer no mesmo banco ele da um erro porque não consegue salvar, claro já esta em edição então queria saber se tem um procedimento para implementar, para que não tenha peca de dados. Não sei se tem solução com um banco só.
Responder

10/01/2020

Luiz Santos

Julio, normalmente as transações são isoladas e só são confirmadas após o comando COMMIT.
Então mais de uma pessoa consegue editar o mesmo banco / tabela ao mesmo tempo.

Grande abraço
Responder

15/01/2020

Anderson Gonçalves

Julio, normalmente as transações são isoladas e só são confirmadas após o comando COMMIT.
Então mais de uma pessoa consegue editar o mesmo banco / tabela ao mesmo tempo.

Grande abraço


Depende amigo, se ele estiver com a tabela aberta outra pessoa não vai conseguir manipular os dados ao mesmo tempo, ele vai impedir, então ele deverá utilizar Query com comando Insert em tempo de execução para manipular a mesma tabela por 2 ou mais usuários.

Assim:

Usando Componentes ADO (ADOQuery) com conexão ODBC faça assim:

With ADOQuery do
begin
close;
sql.clear;
sql.add('insert into tbCliente');
sql.add('(clicodigo, clinome, clirg)');
sql.add('values');
sql.add('(:clicodigo, :clinome, :clirg)');
parameters.parambyname('clicodigo').value := StrToInt(Codigo.text); // Campo Código da Chave Primária (Autoincrementado);
parameters.parambyname('clinome').value := Trim(Nome.text); // O comando TRIM é para tirar espaços deixados pelo usuário.
parameters.parambyname('clirg').value := Trim(RG.text);
ExecSQL;
end;

Se você estiver usando TABELA e ela estiver aberta em uma tela de algum usuário o banco de dados não permitirá que outro abra ao mesmo tempo ou você usa uma ADOQuery como mostrei ou usa um ClientDataSet para preenchimento dos dados em um DBGRID mas ai é outro método de trabalho, então dá uma pesquisada melhor ai e veja o que serve para você.

Espero ter ajudado.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar