CODIGO AUTO-INCREMENTO NOVATO
olá, Rodrigo
eu não tinha pensando em multi usuários a principio, eu tinha pensado somente em 1 usuario mesmo...mas migrando para uma um ambiente varios usuario o sistema teria limitações... vc teria alguma dica para que trabalhe de uma maneira diferente. pq da maneira que o meu esta hj o cliente tem que digitar o codigo... ai em uma utilização mais prolongada digamos que tenha 150 registros de cliente no banco de dados, como ele vai saber qual esta vago ou não? ele teria ficar procurando...? era essa minha preucupação entende ser algo dinamico...eu agradeço pela atenção grande abraço
eu não tinha pensando em multi usuários a principio, eu tinha pensado somente em 1 usuario mesmo...mas migrando para uma um ambiente varios usuario o sistema teria limitações... vc teria alguma dica para que trabalhe de uma maneira diferente. pq da maneira que o meu esta hj o cliente tem que digitar o codigo... ai em uma utilização mais prolongada digamos que tenha 150 registros de cliente no banco de dados, como ele vai saber qual esta vago ou não? ele teria ficar procurando...? era essa minha preucupação entende ser algo dinamico...eu agradeço pela atenção grande abraço
Se você não quiser alterar o colocar o auto-incremento no bd tem duas opções:
1) Colocar um botão NOVO para o usuário clicar, fazer o que o JILNEY sugeriu, indo no bd e dar um SELECT MAX(COD) FROM TABELA e colocar na caixa de texto qual o ultimo codigo + 1
2) Fazer o que a apção 1 faz antes da sua rotina que salva no bd, sem que o usuário se incomode com isso. Se a caixa de texto do códito for = 0 ou "" então você pega qual pe o proximo número, senão é atuzlização
1) Colocar um botão NOVO para o usuário clicar, fazer o que o JILNEY sugeriu, indo no bd e dar um SELECT MAX(COD) FROM TABELA e colocar na caixa de texto qual o ultimo codigo + 1
2) Fazer o que a apção 1 faz antes da sua rotina que salva no bd, sem que o usuário se incomode com isso. Se a caixa de texto do códito for = 0 ou "" então você pega qual pe o proximo número, senão é atuzlização
Kaupoa, eu utilizo uma adaptação de uma dica que o Julio Batist escreveu, onde ele ensina a criar numero sequencial para base de dados.
Criando Sequence com SQL Server
Você pode adaptar para sua base de dados (Access), creio eu.
Bom, o que fiz de diferente foi criar uma tabela auxiliar, chamada número vago, pois se um usuário gerar o código e desistir de incluir esse sequencial será "quebrado", então guardo os códigos não utilizados nessa tabela, e quanto abro um forme verifique primeiro se existe número vago, se tiver pego, mostro em um TextBox e Deleto dessa tabela auxiliar, se não tiver gero um novo sequencial (o número que está no banco + 1).
obs.: para pegar o número na tabela numerovago, eu utilizo um select com ordenação crescente, pegando sempre o menor disponÃÂÂvel.
Essa adaptação tem me atendido na boa, e pode ser utilizada em modo Multiusuário.
Criando Sequence com SQL Server
Você pode adaptar para sua base de dados (Access), creio eu.
Bom, o que fiz de diferente foi criar uma tabela auxiliar, chamada número vago, pois se um usuário gerar o código e desistir de incluir esse sequencial será "quebrado", então guardo os códigos não utilizados nessa tabela, e quanto abro um forme verifique primeiro se existe número vago, se tiver pego, mostro em um TextBox e Deleto dessa tabela auxiliar, se não tiver gero um novo sequencial (o número que está no banco + 1).
obs.: para pegar o número na tabela numerovago, eu utilizo um select com ordenação crescente, pegando sempre o menor disponÃÂÂvel.
Essa adaptação tem me atendido na boa, e pode ser utilizada em modo Multiusuário.
Muito bem. Tendo-se em vista um sistema multi-usuário, num sistema utilizando-se ADO (sem controle - ADODC) e Access com autonumeração.
Pode-se utilizar a rotina que sugeri acima, para pegar o último código inserido no seu banco de dados, assim que executar o programa, no evento Form1_Activate.
Faça uma função, num módulo .bas, para gravação do NOVO registro, tipo assim:
Depois disso, vc pode colocar o valor dessa variável onde quizer (textBox, Label, ...). Particularmente prefiro num Label, pq ninguém poderá alterá-lo.
E ai KAUPOA, ficou mais claro agora?
Pode-se utilizar a rotina que sugeri acima, para pegar o último código inserido no seu banco de dados, assim que executar o programa, no evento Form1_Activate.
Faça uma função, num módulo .bas, para gravação do NOVO registro, tipo assim:
Public Function fGrava_Busca() 'OK
'grava e busca o último registro
'Tabela Codigo -> Trimestre, Ano, Grupo e Ocorrencia (Cod - fornecido pelo BD)
With DataEnv
cSQL = "INSERT INTO Codigo (Trimestre, Ano, Grupo, SubGrupo, Ocorrencia) VALUES (" & tpDados.vTrim & ", " & _
tpDados.vAno & ", '" & tpDados.vGrupo & "', '" & tpDados.vGrCod & "', '" & tpDados.vOcorrencia & "')"
'comando para gravação
.ConectaBD.Execute cSQL, , adCmdText
'COMANDO PARA PEGAR O VLR. DO COD
.rsCodigo.Open ("SELECT @@IDENTITY")
'Colocando o valor do Código em uma variável Publica
tpDados.vCod = .rsCodigo(0)
'Fechando sua Base de Dados
.rsCodigo.Close
End With
End Function
Depois disso, vc pode colocar o valor dessa variável onde quizer (textBox, Label, ...). Particularmente prefiro num Label, pq ninguém poderá alterá-lo.
E ai KAUPOA, ficou mais claro agora?
ai pessoal, muito obrigado pelas dicas, eu vou testalar e ler atentamente o que vc's me passaram, muito obrigado a todos, grande abraços
Pesquisando um pouco mais, também achei esse artigo, que também pode colaborar com esse tópico:
Programação Padronizada I
Programação Padronizada II
Programação Padronizada I
Programação Padronizada II
ai Piolho,
muito obrigado pela dica, eu ainda nao li, mas pelo que eu estava olhando bem rapidamente, parece bem interesante...grande abraço
muito obrigado pela dica, eu ainda nao li, mas pelo que eu estava olhando bem rapidamente, parece bem interesante...grande abraço
Bom..nesse caso..proponho o seguinte..
Qdo o usuário clica no Incluir, ja acha o código e já o insere no banco...somente o código.
qdo a pessoa for salvar o registro, ele primeiro se posiciona no código q ele incluiu qdo clicou no Incluir e fazer como que se fosse, a edição do registro!! entendeu a idéia.
assim n terá problema de 2 usuários colocarem o mesmo código!!
boa sorte
Entendi sim,
mas eu tenho um problema muito grande ainda...não conheço muito a ferramento e como fazer o que vc me propos
se vc puder me ajudar a me dar uma ideia de como fazer isso eu agradeço
grande abraço
mas eu tenho um problema muito grande ainda...não conheço muito a ferramento e como fazer o que vc me propos
se vc puder me ajudar a me dar uma ideia de como fazer isso eu agradeço
grande abraço
Tópico encerrado , respostas não são mais permitidas