Banco de dados FIREBIRD

Firebird

09/01/2020

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

Curtidas 0

Respostas

Manoel Junior

Manoel Junior

09/01/2020

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

Julio Cesar

09/01/2020

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ó.
GOSTEI 0
Luiz Santos

Luiz Santos

09/01/2020

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
GOSTEI 0
Anderson Gonçalves

Anderson Gonçalves

09/01/2020

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.
GOSTEI 0
POSTAR