Inserir dados autoinc em tabela já com dados

Delphi

28/02/2011

Tenha uma tabela com mais de 30.000 linhas.
Preciso editar um campo em todas as linhas com valores não duplicados, tipo 1,2,3,4... 30000
Como faço para insetir? Depois esse campo também terá que ser autoinclemento para os novos das inseridos.
Lembrando que a tabela já tem um um campo autoinc que é o código.
Meu banco é firebird, estou utilizando Dbexpress e Delphi 7.
Lucas Souza

Lucas Souza

Curtidas 0

Respostas

Wilson Junior

Wilson Junior

28/02/2011

Crie um GENERATOR no BeforePost vc pode atribuir o valor do GENERATOR para o seu campo de AutoInc, esta é apenas uma sugestão, pois existem N maneiras de serem feitas.

Espero ter colaborado.
GOSTEI 0
Marco Salles

Marco Salles

28/02/2011

Tenha uma tabela com mais de 30.000 linhas.
Preciso editar um campo em todas as linhas com valores não duplicados, tipo 1,2,3,4... 30000
Como faço para insetir? Depois esse campo também terá que ser autoinclemento para os novos das inseridos.
Lembrando que a tabela já tem um um campo autoinc que é o código.
Meu banco é firebird, estou utilizando Dbexpress e Delphi 7.
O Paulista entendeu de uma maneira eu confesso que não entendi  
Vc tem uma tabela com 30.000 linhas. ..
OK  
Preciso editar um campo em todas as linhas com valores não duplicados, tipo 1,2,3,4... 30000
Vc vai editar um campo , e este campo nao pode ter valores duplicados ..  OK  
Como faço para insetir? Depois esse campo também terá que ser autoinclemento para os novos das inseridos.
Lembrando que a tabela já tem um um campo autoinc que é o código.

Para que dois campos AutoIncrementos ??? e se esses campos ficarem com valores iguais ???  
 
GOSTEI 0
Lucas Souza

Lucas Souza

28/02/2011

Marco

Já tenho um generator para um campo da tabela, posso criar dois para o outro campo?

Além desse campo ter o autoinclemento para novos dados, preciso atribuir valores para esse campo nos dados que já existe, tipo, a tamble já tem 30.000 registros, o campo novo criei agora, preciso que seja preenchido esse campo em todos os registros.
Grato pela resposta
GOSTEI 0
Lucas Souza

Lucas Souza

28/02/2011

Marco

O caso é o seguinte:

Tenho uma tabela PACIENTES

Essa tabela possui 30000 registros

Campos:
CODPACIENTE (AutoInc)
NOME
ENDERECO
TELEFONE
CIDADE

surgiu a necessidade de acrescentar outro campo "PRONTUARIO", mas esse campo não será igual ao campo CODPACIENTE

Agora não sei como fazer, pra editar os paciente já cadastrados com o novo campo e autoinclementar o campo PRONTUARIO para novos pacientes.




GOSTEI 0
Marco Salles

Marco Salles

28/02/2011

Marco e Paulista já tenho um generator para um campo da tabela, posso criar dois para o outro campo?
  Acho que sim ...

Além desse campo ter o autoinclemento para novos dados, preciso atribuir valores para esse campo nos dados que já existe, tipo, a tamble já tem 30.000 registros, o campo novo criei agora, preciso que seja preenchido esse campo em todos os registros.
Grato pela respostas
  Acho que isso é tranquilo .. Fazer um Update nesse campo . No proprio IbExpert da para fazer isto .  
Marco e Paulista

O caso é o seguinte:

Tenho uma tabela PACIENTES

Essa tabela possui 30000 registros

Campos:
CODPACIENTE (AutoInc)
NOME
ENDERECO
TELEFONE
CIDADE

surgiu a necessidade de acrescentar outro campo "PRONTUARIO", mas esse campo não será igual ao campo CODPACIENTE
  Bem que ele não sera igual é o simples fato da sua existencia . O Fato é que se ele for for gerado a partir de um Autoincremento , ele sera na mesma base que o campo codigo Por exemplo , vc pode começar um Gerator com o valor 500  (como exemplo) Assim para o Registro Campo=1 o Protuario sera 500 Assim para o Registro Campo=2 o Protuario sera 501 Assim para o Registro Campo=3 o Protuario sera 502 Assim para o Registro Campo=3 o Protuario sera 503   e assim sucessivamente ... So não vejo vantagem nenhuma nisso ..

Agora não sei como fazer, pra editar os paciente já cadastrados com o novo campo e autoinclementar o campo PRONTUARIO para novos pacientes.
Para editar como eu disse parece não ter problema , a redudancia para mim é colocar este campo como autoincremento para novos pacientes .. Em outra palavra , mesmo que vc não queiraque Prontuário seje diferente de CODPACIENTE , na prática ele tera o mesmo efeito , e isto para mim é uma redundancia..
GOSTEI 0
Lucas Souza

Lucas Souza

28/02/2011

Preciso editar o campo PRONTUARIO porque já existe vários porntuários cadastrados no banco do hostipal (Fora do sistema) com números de até 25.000.
Por isso preciso editar os dados do novo campo para dados acima de 25.000.
Fico grato pela ajuda.
só não consegui fazer o update do Ibexpert, pode dar uma força?
Agradeço novamente
GOSTEI 0
Wilson Junior

Wilson Junior

28/02/2011

Crie um GENERATOR para o seu campo prontuário e o inicialize com 25.000 assim você terá os seus prontuários todos a partir do 25.001.

Espero ter colaborado.
GOSTEI 0
Lucas Souza

Lucas Souza

28/02/2011

Paulista

Tudo bem!
Criei o generator, mas somente ira inclementar para os pacientes inseridos daqui pra frente, para os pacientes já cadastrados, o campo PRONTUARIO fica em branco.
preciso preencher o campo PRONTUARIO dos pacientes já cadastrados.
Grato
GOSTEI 0
Marco Salles

Marco Salles

28/02/2011

Paulista

Tudo bem!
Criei o generator, mas somente ira inclementar para os pacientes inseridos daqui pra frente, para os pacientes já cadastrados, o campo PRONTUARIO fica em branco.
preciso preencher o campo PRONTUARIO dos pacientes já cadastrados.
Grato
Olha lucas eu acho que uma solução para o preenchimento dos pacientes ja cadastrados seria uma stored procedure que pode ser feito pelo ibexpert mesmo. o que a stored procedure irá fazer , ela ira percorrer todos os 30000 registros da sua tabela e no no campo PRONTUARIO Ele ira editar para que o seu valor começe com 25000 ... e aumentando de modo sequencial , de uma so vez em um único processo garantindo a atomicidade dessas ediçoes   caso queira eu lhe mostro como deve ficar o codigo bem como executar pelo IBExpert   Sobre sua segunda questão Na minha opinião é um desperdicio vc criar dois campos auto_incrementos para esta tabela . Não há necessidade disso pense ... CODIGOPACIENTE 1 -->>> PRONTUARIO  25000 CODIGOPACIENTE 2 -->>> PRONTUARIO  25001 CODIGOPACIENTE 3 -->>> PRONTUARIO  25002 CODIGOPACIENTE 4 -->>> PRONTUARIO  25003 CODIGOPACIENTE 5 -->>> PRONTUARIO  25004   Seguindo esta linha (que na realidade é a sua linha) , qnd o CODIGOPACIENTE Tiver um Valor "N " O Prontuario terá um Valor ( N + 25000 ) ...   como fazer isto ???? Ora na sua Trriger que ja esta definida para o CAMPO CODIGOPACIENTE Inclua  
AS
BEGIN
  IF (NEW.CODIGOPACIENTE IS NULL) THEN
    begin
       NEW.CODIGOPACIENTE = GEN_ID(GEN_CODIGOPACIENTE_ID,1);
       NEW.PRONTUARIO =   NEW.CODIGOPACIENTE  + 250000;
    end
END
  Na minha opinião , é uma maneira que ira te atender sem criar um trabalho desnecessário para o servidor que no fim irá gerar o mesmo resultado
GOSTEI 0
Wilson Junior

Wilson Junior

28/02/2011

Concordo com o Marco.
GOSTEI 0
Lucas Souza

Lucas Souza

28/02/2011

Marco

Quem sabe sabe!

Entendi agora seu raciocínio, na verdade, eu nem precisaria do campo prontuário, posso indicar pro sistema que o número do prontuário do paciente é o COD_PACIENTE + 25.000  correto?

Fico muito grato pela ajuda.
GOSTEI 0
Lucas Souza

Lucas Souza

28/02/2011

Marco

Quem sabe sabe!

Entendi agora seu raciocínio, na verdade, eu nem precisaria do campo prontuário, posso indicar pro sistema que o número do prontuário do paciente é o COD_PACIENTE + 25.000  correto?

Fico muito grato pela ajuda.
GOSTEI 0
Marco Salles

Marco Salles

28/02/2011

Marco

Entendi agora seu raciocínio, na verdade, eu nem precisaria do campo prontuário, posso indicar pro sistema que o número do prontuário do paciente é o COD_PACIENTE + 25.000  correto?

Fico muito grato pela ajuda.
Sempre achei redudante ter dois autoincremento . Mas seguindo a sua linha de raiocineo:   "posso indicar pro sistema que o número do prontuário do paciente é o COD_PACIENTE + 25.000"   Vc quer fazer isto no Post ???? Se for acho que dá certo tb , apesar de gostar mais deste incremento na Triguer Sabe porque ???? Porque sua margem de preocupação será menor. Tai um exemplo que não ocorrerá , mas poderá ocorrer. Caso uma pessoa menos informada , insira dados nesta tabela utilizando outro Aplicativo . O gerador vai cuidar de Atribuir o valor correto para o CODIGOPACIENTE , mas quem vai atribuir o valor do + 25000 para o seu campo PRONTUÁRIO ???? Existe esta possibilidade ??? remota ,quase zero , mas ha de convir que existe   Agora , mas nada impeça que seje no BeforePost ou um outro evento responsavel por este Tráfego      
GOSTEI 0
POSTAR