USUÁRIO:      SENHA:        SALVAR LOGIN ?    Adicione o VBWEB na sua lista de favoritos   Fale conosco 

 

  Fórum

  Visual Basic
Voltar
Autor Assunto:  Muitos podem não ter percebido
matty
SAO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 27/07/2004 00:56 hs         
Olá, eu "achei" um "erro" que pode ser cometido por muitos programadores, tenho certeza que a maioria já tenha achado um jeito de esquivar deste "erro", mas eu ainda não, na verdade nem tentei, bom o "erro" é esse:
 
normalmente para adicionarmos um novo registro em um banco de dados e mostrarmos um código, normalmente a chave primária, fazemos o seguinte:
 
rd.addnew
txtchave.text = rd.recordcount + 1
 
Bom, o problema é o seguinte, digamos que em uma tabela temos 10 registros, se adicionarmos um novo vamos para o registro número 11, pq o recordcount seria igual a 10, mas se deletarmos o registro número 3 por exemplo, o recordcount seria igual a 9 e se adicionarmos um novo, este terá como código, o número 10, q já existe, fazendo com que dê um erro na hora da gravação, já que vc estaria tentando gravar uma chave primária já existente.
Ou seja, esta programação só funcionária perfeitamente se apenas o último registro pudesse ser apagado, mas um usuário pode cometer este engano e consequentemente não conseguir adicionar mais nenhum registro. Minha pergunta é, como podemos esquivar deste erro? afinal, muitos de nós podemos usar esta programação e nunca termos nos dado conta deste errinho de matematica.
 
 
 
 
 
   
Roßerto
Pontos: 2843 Pontos: 2843 Pontos: 2843 Pontos: 2843 Pontos: 2843
SAO PAULO
SP - BRASIL
Postada em 27/07/2004 02:20 hs            
bom eu NÃO costumo cometer esse erro, eu não uso esse tipo de codigo
 
eu tenho uma tabela a parte onde eu gravo o proximo numero disponivel
sempre que eu gravo um registro, pego o numero atual incremento + 1 e atualizo
o proximo.
 
Roberto
     
Capetossauro
Pontos: 2843 Pontos: 2843 Pontos: 2843 Pontos: 2843
PRESIDENTE PRUDENTE
SP - BRASIL
Postada em 27/07/2004 04:01 hs            
Bem, eu já faço meio diferente, eu peço pra localizar o ultimo registro adicionado:
select max(campo) as ultimo
Dai somo 1 ao resultado. Dessa forma tambem não da B.O.

T+
     
Alfterra
Pontos: 2843 Pontos: 2843
SÃO PAULO
SP - BRASIL
ENUNCIADA !
Postada em 27/07/2004 08:51 hs            
Olá, e "EU" faço assim: procuro na tabela um sequência de código/ID 1,2,3,4,5, etc e caso econtre algum "buraco" acrescenta 1 se nao tiver pega o ultimo + 1 assim não interessa se apaga o 1,2....4,5....1000 sempre ele acha o 1º "buraco"...
 
TbCad.MoveMin
Dim Valor As Integer
Dim Ratual As Integer
    Valor = 1
 With Me
          .LimpaCadastro
          .FrameCadastro.Enabled = True
          .MaskRazao_Social.SetFocus
        Do While Not TbCad.EOF
           DoEvents
              Ratual = TbCad.Fields("ID").Value
                If Valor < Ratual Then
                   .MaskBoxID.Value = Valor
           Exit Do
                Else
                   .MaskBoxID.Value = Valor + 1
                End If
                   Valor = Valor + 1
                  TbCad.MoveNext
       Loop
end with
TÓPICO EDITADO
 
Supreme Being
Pontos: 2843
QUALQUER LUGAR NO QUADRANTE DA
.. - GALÁXIA.
Postada em 27/07/2004 09:15 hs            
Eu sempre vou acrescentando mais 1 no banco de dados, independentemente se o usuário deletou um registro do meio.
 
     
@ngel
RIO DE JANEIRO
RJ - BRASIL
Postada em 27/07/2004 09:50 hs            
bem, acredito que isto não seja um erro e sim uma forma de raciocinar um pouco falha.
Minha dica para acrescentar neste raciocínio, seria como já postaram: pegar o maior nº deste campo existente na tabela e adicionar mais 1.
SELECT MAX (campo_id) + 1
  FROM tabela
 
e os "buracos" ficam sem incomodar ninguém ...
 
"Para tudo há solução"
 

@ngel
     
Página(s): 1/1    


Seu Nome:

Seu eMail:

ALTERAR PARA MODO HTML
Mensagem:

[:)] = 
[:P] = 
[:(] = 
[;)] = 

HTML DESLIGADO

     
 VOLTAR

  



CyberWEB Network Ltda.    © Copyright 2000-2024   -   Todos os direitos reservados.
Powered by HostingZone - A melhor hospedagem para seu site
Topo da página