Fórum Delphi7 x Firebird x Rede. #371510
23/06/2009
0
Preciso de ajuda quanto a um programa que fiz e que esta em rede.
Simplesmente nao estou conseguindo atualizar as tabelas em tempo real tipo quando o usuario 1 cadastra um novo produto o programa gera a chave primaria 1 se o usuario 2 tambem estava com o programa aberto e cadastra um novo produto vai gerar a chave 1 novamente.
Ja tentei ativar e desativar a Query/ dar um refresh, mas nao esta funcionando.
Por favor preciso resolver isso com urgencia...
Sidimarsilva
Curtir tópico
+ 0Posts
23/06/2009
Woinch
Ex.
Criar uma tabela Numerador com os campos Tabela, Campo, Valor
Essa função irá consultar o valor referente ao campo e a tabela que você quer fazer a inserção e acrescentar ´UM´ no valor. Após a inserção nessa tabela deve ser feita com o valor da chave primaria que foi retornado do campo Valor da tabela Numerador. Todas as inserções na tabela devem passar por essa função primeiro para pegar um Numerador válido e automaticamente incrementar o valor correspondente a esse numerador na tabela de Numeradores.
Qualquer dúvida favor responder.
Gostei + 0
23/06/2009
Sidimarsilva
Esqueci de postar o codigo que estou usando.
Eu estou usando o codigo.
QryAux.Close;
QryAux.SQL.Clear;
QryAux.SQL.Add(´select max(mar_id)+1 as prox from marca´);
QryAux.ExecSQL;
QryAux.Open;
QryMarcaMAR_ID.AsInteger:=QryAux.fieldbyname(´prox´).AsInteger;
=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=/=
Woinch, desculpe mas pelo problema que estou encontrando acho que criar uma nova tabela nao adiantaria pois se o usuario um criar um novo registro nao a nova tabela (com os codigos), não seria atualizada certo?
Gostei + 0
23/06/2009
Emerson Nascimento
é a melhor forma de garantir esse incremento.
uma forma simples de trabalhar com generators:
na sua ferramenta de administração do banco, crie o generator.
[b:2d25cc5ec5]CREATE GENERATOR GEN_MARCA;[/b:2d25cc5ec5] -- generator da tabela marca
[b:2d25cc5ec5]SET GENERATOR GEN_MARCA TO 25;[/b:2d25cc5ec5] -- substitua o 25 pelo ID atual da tabela
daí, para atribuir o numero sem preocupação quanto à duplicidade, faça desta forma:
QryAux.Close; QryAux.SQL.Clear; QryAux.SQL.Add(´SELECT GEN_ID(GEN_MARCA,1) PROXIMO FROM RDB$DATABASE´); QryAux.Open; QryMarcaMAR_ID.AsInteger := QryAux.fieldbyname(´proximo´).AsInteger; QryAux.Close;
Gostei + 0
23/06/2009
Sidimarsilva
Realmente deu certo nao da mais erro de chave...
Agora alguem poderia me ajudar quanto a atualizaçao: Tipo o usuario 1 ver os dados cadastrados pelo usuario 2 sem ter que sair e entrar novamente?
Obrigado.
Gostei + 0
23/06/2009
L_carlos
Luiz
Gostei + 0
24/06/2009
Sidimarsilva
Quanto a atualização eu mudei a propriedade TransactIsolationLevel para tiReadCommitted e mude o ReadOnly para False.
Aparentemente resolveu o problema Obrigado mais uma vez pessoal... t+.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)