ninh@
|
SÃO PAULO SP - BRASIL
|
|
Postada em 26/10/2005 15:58 hs
Eu tenho uma tabelano access com campo codigo(chave) tipo numero(inteiro longo). Quando um registro é excluido a sequencia da numeração fica com buracos. Usualmente, o que é feito para resolver isto? é feito a reposição na hora de incluir novo registro? é feito periodicamente no banco de dados? não devo reutilizar o codigo? ?????????
|
|
|
|
Daniel
|
SÃO PAULO SP - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 26/10/2005 16:24 hs
Eu aconselharia voce a não reutilizar os números, normalmente isso acaba gerando problemas, principalmente se voce tiver outras tabelas relacionadas com esse código. Mas isso é a minha opnião, eu na realidade evito ao máximo a exclusão de registro prefiro normalmente criar um campo flag ativo (sim/não), assim se tiver tabelas relacionadas não perco a informação.
dsmn
|
|
|
Erico
|
SALVADOR BA - BRASIL
|
|
Postada em 26/10/2005 16:33 hs
Depende da sua aplicação. Existem tabelas dependentes? Permita a exlusão apenas se não existirem registros dependentes (integridade referencial). Com isso vc pode codificar uma rotina que ache o primeiro código disponível para a inclusão. Isso na hora de incluir. Se for uma tabela de movimentação seria melhor marcar como excluido ou então permitir um lançamento de extorno. Isso faz com que possamos controlar os erros de digitação. Só conhecendo a sua aplicação e a necessidade do cliente para escolher o melhor procedimento.
A.Erico S.Peixoto -------------------- Analista de Sistemas
|
|
|
Alfterra
|
SÃO PAULO SP - BRASIL
|
|
ENUNCIADA !
|
|
|
|
ninh@
|
SÃO PAULO SP - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 26/10/2005 17:23 hs
não, esta tabela não tem relacionamento. Este é meu primeiro programa e o cliente num colabora, cada hora pede uma coisa diferente... Alfterra, posso ver esta sua rotina?? eu fiz este codigo, mas como estou iniciando em programação, gostaria de saber como os profissionais fazem... Case "incluir" Dim cont As Integer cn.Close With cn .ConnectionString = CNN .Open End With strSQL = "SELECT * FROM eventuais ORDER BY codigo" rsEventuais.Open strSQL, cn, adOpenStatic, adLockOptimistic If rsEventuais.RecordCount = 0 Then rsEventuais.AddNew Else rsEventuais.MoveMin End If cont = 1 Do While Not rsEventuais.EOF If rsEventuais.Fields("codigo").Value <> cont Then rsEventuais.AddNew txtCodigo.Text = cont Exit Do End If cont = cont + 1 rsEventuais.MoveNext Loop If cont > rsEventuais.RecordCount Then rsEventuais.AddNew txtCodigo.Text = cont End If ProgressBar.Value = 0 Call Limpar_campos
Case "incluir" Dim i, nRegistros As Integer cn.Close With cn .ConnectionString = CNN .Open End With strSQL = "SELECT * FROM eventuais ORDER BY codigo" rsEventuais.Open strSQL, cn, adOpenStatic, adLockOptimistic If rsEventuais.RecordCount = 0 Then rsEventuais.AddNew Else rsEventuais.MoveMin End If cont = 1 Do While Not rsEventuais.EOF If rsEventuais.Fields("codigo").Value <> cont Then rsEventuais.AddNew txtCodigo.Text = cont Exit Do End If cont = cont + 1 rsEventuais.MoveNext Loop If cont > rsEventuais.RecordCount Then rsEventuais.AddNew txtCodigo.Text = cont End If ProgressBar.Value = 0 Call Limpar_campos Valeu pessoal...
|
|
|
Alfterra
|
SÃO PAULO SP - BRASIL
|
|
ENUNCIADA !
|
|
|
Postada em 26/10/2005 19:41 hs
eu uso essa rotina pra cadastrar user, com ela é bom pq nao tem perigo de repetir e com isso ocassionar erro, mais pode perfeitamente ser colocada onde quiser... Dim IDatual As Integer For i = 1 To TbSenha.RecordCount DoEvents IDatual = TbSenha.Fields("ID").Value If i < IDatual Then .TextID.Text = i Exit For Else TbSenha.MoveNext End If Next i
|
|
|