Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-12-2009
cocute cocute is offline
Miembro
 
Registrado: nov 2008
Posts: 403
Poder: 16
cocute Va por buen camino
hay algun comando para duplicar una ficha de una tkbmemtable?

hay algun comando para duplicar una ficha de una Tkbmemtable?
con table1.insert añado
con table2.delete borro
existe algun comando tipo table1.duplicate para duplicar la ficha seleccionada
¿o tengo que hacerlo a mano?

he encontrado esta funcion pero no me funciona bien, no se porque me quedan campos sin copiar, uso delphi 2010.

Código PHP:
procedure DuplicateCurrentRecord(aDataSet TDataSet); 
var 
  
Data : array of variant
  
aRecord : array of TVarRec
  
integer
  
max integer
begin 
  max 
:= aDataSet.fields.count -1
  
// set the lenghth of the arecord array to be the same as the number of 
  // elements in the data array 
  
SetLength(arecord,max+1); 
  
SetLength(data,max+1); 

  
// set the variant type pointers to the data array 
  
for := 0 to max do 
  
begin 
    arecord
[i].VType := vtVariant
    
arecord[i].VVariant := @data[i]; 
  
end

  
// Copy the Record to the Array 
  
for := 0 to max do 
    
Data[i] := aDataSet.fields[i].value

  
// finally append the record in one go 
  
aDataSet.AppendRecord(aRecord); 
end
lo he pasado para que funcione con kbmemtable pero como digo no me duplica todos los campos de las fichas,
los demas los deja en blanco, es raro porque a veces me duplica los dos primeros, otras veces los tres primeros....

Código PHP:
procedure DuplicateCurrentRecord(aDataSet TkbmMemTable);

 var
  
Data : array of variant;
  
aRecord : array of TVarRec;
  
integer;
  
max integer;
begin
  max 
:= aDataSet.RecordCount -1;
  
// set the lenghth of the arecord array to be the same as the number of
  // elements in the data array
  
SetLength(arecord,max+1);
  
SetLength(data,max+1);

  
// set the variant type pointers to the data array
  
for := 0 to max do
  
begin
    arecord
[i].VType := vtVariant;
    
arecord[i].VVariant := @data[i];
  
end;

  
// Copy the Record to the Array
  
for := 0 to max do
    
Data[i] := aDataSet.fields[i].value;

  
// finally append the record in one go
  
aDataSet.AppendRecord(aRecord);
end

Última edición por cocute fecha: 19-12-2009 a las 12:27:32.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Mensaje para no duplicar la clave primaria de la base de datos ivansito PHP 8 08-08-2007 00:53:51
duplicar un form para posteriormente modificar solo unos datos Ade Varios 4 13-11-2006 13:05:17
Ayuda para imprimir una ficha destrukthor Impresión 5 05-10-2006 01:14:04
Comando para Mirar el Uso de la CPU ggram2 Linux 2 07-04-2006 01:08:28
para no dejar duplicar registros en InterBase Giniromero Firebird e Interbase 5 21-06-2003 02:05:03


La franja horaria es GMT +2. Ahora son las 09:41:56.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi