Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Copiar Registro


Pirambu!

Pergunta

Estou precisando copiar uns registros de uma tabela para a mesma, o Problema é que estar identificando a chaveprimaria que também é AutoIncremento, eu utilizei esse codigo

Tentei apenas fazer a copia do registro e deu Erro

//realiza a copia
begin
Table2.Insert;
for Num := 0 to Table1.FieldCount - 1 do
Table2.Fields[Num].Assign(Table1.Fields[Num]);
Table2.FieldByName(Chave).Value:= '';
Table2.Post;
end;
Tentei identificar a Chaveprimaria e dizer que é nula, e deu erro
proced...
var
Num: SmallInt;
i:integer;
Chave:string;
begin

//Identifica a Chave primaria
table1.IndexDefs.Update;
for I:=0 to table1.IndexDefs.Count-1 do
begin
if table1.IndexDefs.Items[I].Options = [ixPrimary..ixUnique] then
chave:=Table1.IndexDefs.Items[I].Fields;
end;
Label1.Caption:=Chave;

//realiza a copia
begin
Table2.Insert;
for Num := 0 to Table1.FieldCount - 1 do
Table2.Fields[Num].Assign(Table1.Fields[Num]);
Table2.FieldByName(Chave).Value:= '';
Table2.Post;
end;
END;

Alguém sabe como posso fazer este tipo de copia do registro onde contém o um AutoIncremento?

Obs.: estou usando banco de dados ACCESS 2003

Link para o comentário
Compartilhar em outros sites

5 respostass a esta questão

Posts Recomendados

  • 0
Estou precisando copiar uns registros de uma tabela para a mesma

para a mesma ? ou para outra ?

veja este comando

Table2.Fields[Num].Assign(Table1.Fields[Num]);

neste caso voce esta copiando para a tabela 2 os registros e os campos da tabela 1

e neste sentido, num campo autoincrementoo o valor será automaticamente atribuido.

for i := 1 to Tabela1.RecordCount do
      begin

         Tabela2.Last;
         Tabela2.Insert;

         for Num := 0 to Tabela1.FieldCount-1 do
            begin
                  Tabela2.Edit;
                  Tabela2.Fields[Num].Assign(Tabela1.Fields[Num]);
                  Tabela2.Post;
            end;
         Tabela1.Next;
     end;

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Jhonas, eu coloquei duas table para a mesma tabela, a copia dos registro é pra mesma tabela, eu tentei colocar uma Query1 como origem, e uma tabela como destino, eu tentei a forma que você indicou mas não funcionou deu o mesmo erro.

var
Num: SmallInt;
i:integer;
begin

for i := 0 to Qorigem.RecordCount do
  begin
      Tdestino.Last;
      Tdestino.Insert;

      For Num := 0 to Qorigem.FieldCount-1 do
        begin
            TDestino.Edit;
            Tdestino.Fields[num].Assign(Qorigem.Fields[num]);
            TDestino.Post;
        end;
      TDestino.Next;
  end;

estar dando esse erro "Field'codregitro'Cannot be modified".

Link para o comentário
Compartilhar em outros sites

  • 0

estar dando esse erro "Field'codregitro'Cannot be modified".

O campo Codregitro não pode ser modificado

eu coloquei duas table para a mesma tabela, a copia dos registro é pra mesma tabela

Não existe uma incoerencia nisto ? como voce quer copiar o registro que já existe na tabela para ela mesma ?

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Jhonas, Estou tentando copiar todas as informaçoes do registro menos o ponto onde é autoincremento,

na tabela tenhos esse campos.

Tabela de informações.

eu tenhos uma tabela de Cadfuncionario e outra com CursoFuncionario

em CadFunc eu os campos: Matricula,nome,data....

em CursoFuncionario eu os Campos: Matricula,NumCurso,Data,NomeCurso...

As duas tabelas estão ligadas pela "Matricula" o que eu estou querendo fazer é o seguinte, filtrar na tabela de "CursoFuncionario" um funcionario pela matricula e Copiar todos os registro dos cursos do funcionario filtrado para um outro funcionário que iria indicar qual matricula seria.

o problema é que na Tabela CursoFuncionario tem um AutoIncremento que estar travando o Copia do registro.

Link para o comentário
Compartilhar em outros sites

  • 0

Conseguir resolver meu problema com a copia de registro para a mesma tabela desta forma.

while not QOrigem.Eof do
begin
a:=0;
TDestino.Insert;
      while a < QOrigem.Fields.Count do
      begin
          TDestino.Fields[a].value := QOrigem.Fields[a].value;
          a:=a+1;
      end;
Tdestino.fieldbyname('Matricula').value:= QfuncionarioMatricula.value;
TDestino.Post;
QOrigem.next;
end;

Abraço.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...