Como copiar um registro de uma Tabela para outra ?
22/06/2008
0
Ola Amigos do DevMedia
Boa Tarde
Preciso que todos os campos de um registro, sejam inseridos para uma linha em branco da mesma tabela, ou para outra tabela, com o APPEND OU INSERT.
Estou fazendo assim:
Guardo todos os campos do Registro em Variaveis, e depois que dou o Append, e Post ja tenho lá o Registro Gravado.
Mao nao esta certo: E se eu Tiver um registro com 80 Campos??? vou ter que criar 80 variaveis....
Por Favor, me deem a dica, deve haver um jeito mais fácil...
O exemplo no meu caso, é gravar a venda em varias parcelas..
BD access, e AdoDataSet
Atenciosamente.
Jotas
Boa Tarde
Preciso que todos os campos de um registro, sejam inseridos para uma linha em branco da mesma tabela, ou para outra tabela, com o APPEND OU INSERT.
Estou fazendo assim:
Guardo todos os campos do Registro em Variaveis, e depois que dou o Append, e Post ja tenho lá o Registro Gravado.
Mao nao esta certo: E se eu Tiver um registro com 80 Campos??? vou ter que criar 80 variaveis....
Por Favor, me deem a dica, deve haver um jeito mais fácil...
O exemplo no meu caso, é gravar a venda em varias parcelas..
BD access, e AdoDataSet
Atenciosamente.
Jotas
Jotas
Curtir tópico
+ 0
Responder
Posts
22/06/2008
Emerson Nascimento
crie um dataset virtual para guardar o registro a ser ´clonado´.
algo assim:
não trabalho com ADO, então algumas propriedades utilizadas podem ser diferentes.
corrija conforme o necessário. esse código é só para dar uma linha de raciocínio. espero que ajude.
algo assim:
var cdsClone: TClientDataset; i: integer; begin cdsClone := TClientDataset.Create(nil); cdsClone.FieldDefs.Assign( ADODataset.FieldDefs ); // cria um dataset vazio com os mesmos campos // do dataset original (ADODataset) cdsClone.CreateDataset; // crio o registro ´clone´ com os mesmos valores do registro origem cdsClone.Append; for i := 0 to ADODataset.FieldCount -1 do if not ADODataset.Fields[i].IsNull then cdsClone.FieldByName(ADODataset.Fields[i].FieldName).Value := ADODataset.Fields[i].Value; cdsClone.Post; // agora reproduzo o clone no próprio ADODataset ADODataset.Append; for i := 0 to cdsClone.FieldCount -1 do if not cdsClone.Fields[i].IsNull then ADODataset.FieldByName(cdsClone.Fields[i].FieldName).Value := cdsClone.Fields[i].Value; ADODataset.Post; cdsClone.Free; end;
não trabalho com ADO, então algumas propriedades utilizadas podem ser diferentes.
corrija conforme o necessário. esse código é só para dar uma linha de raciocínio. espero que ajude.
Responder
24/06/2008
Jotas
Ola Emerson
Boa Tarde.
O Codigo, que vc mandou, funciona perfeitamente, sem ter que modificar nada....
Mas tive que criar no BD, uma tabela Clone, pois nao sei criar o DataSetVirtual
Por Exemplo: VAR CdsClone: TclientDataSet ... como uso o TAdoDataSet eu deveria colocar assim: VAR CdsClone: TAdoDataSet ....
Mas nao aparece pra mim na lista, esse objeto.
Onde, e, em que Local do Programa, devo criar o DataSetVirtual???
Desculpe pela minha ignorância, mas é porque sou Novato
Desde Já te agradeço,
jotas.
Boa Tarde.
O Codigo, que vc mandou, funciona perfeitamente, sem ter que modificar nada....
Mas tive que criar no BD, uma tabela Clone, pois nao sei criar o DataSetVirtual
Por Exemplo: VAR CdsClone: TclientDataSet ... como uso o TAdoDataSet eu deveria colocar assim: VAR CdsClone: TAdoDataSet ....
Mas nao aparece pra mim na lista, esse objeto.
Onde, e, em que Local do Programa, devo criar o DataSetVirtual???
Desculpe pela minha ignorância, mas é porque sou Novato
Desde Já te agradeço,
jotas.
Responder
Clique aqui para fazer login e interagir na Comunidade :)