PDA

Ver la Versión Completa : duplicar varios registros de una tabla


gmontes
05-09-2011, 20:27:11
como puedo duplicar varios registros dentro de la misma tabla.

lo intentes con un insert con un select , pero se ciclo :o

alguna idea??

guillotmarc
06-09-2011, 10:31:59
¿ Nos enseñas lo instrucción que has intentado ?

Casimiro Notevi
06-09-2011, 10:51:15
Queremos ver el código :)

oscarac
06-09-2011, 15:44:18
no soy muy experto en delphi pero te dejo una idea que se me ocurre

2 arrays,
1 para almacenar los nombres de los campos (Fieldbyname, field, etc)
1 para almacenar los valores de los campos (del que queremos copiar)

entonces hacemos el append y vaciamos en ese nuevo registro el segundo array con los campos almacenados en el primero

se entiende? djie que era una idea:D

gmontes
06-09-2011, 16:15:19
ok, se que no se debe hacer, pero dentro de ibexpert esto es lo que puse.

INSERT INTO cdetallefac SELECT * FROM cdetallefac WHERE documento='H6234'

:o si, fue sobre la misma tabla

cuando vi que estaba tratando de insertar el registro 165045600 dije, algo anda mal :o

fue un lapsus brutus

oscarac
06-09-2011, 16:27:29
mmmm y que te parecio mi idea?
quiza alguien con mas experiencia en delphi pueda plasmarla, a veces es util repetir uno o varios registros

Quim Herrera
06-09-2011, 17:57:07
Hola,

Prueba esto:


procedure DuplicaReg( Dataset: TDataset);
var
aField : Variant ;
ANomCamps: Variant;
i,numcamps : Integer ;
begin

aField := VarArrayCreate( [0, Dataset.Fieldcount-1], VarVariant);
aNomCamps := VarArrayCreate( [0, Dataset.IBTable1.Fieldcount-1], VarVariant);
numcamps:= Dataset.Fieldcount;

For i := 0 to (numcamps-1) Do
Begin
ANomCamps [i] := Dataset.fields[i].FieldName;
aField[i] := Dataset.fields[i].Value ;
End;
Dataset.append;
For i := 0 to (numcamps-1) Do
Begin
Dataset.FieldByName(ANomCamps[i] ).Value := aField[i ] ;
End;
Dataset.Post;

end;



Puedes utilizar un IBDataset o un IBTable.
No olvides de hacer el commit

Saludos,

Quim Herrera

gmontes
06-09-2011, 17:57:46
mmmm y que te parecio mi idea?
quiza alguien con mas experiencia en delphi pueda plasmarla, a veces es util repetir uno o varios registros

lo que no queria era programar, queria hacerlo desde ibexpert, pero creo que es mas limpia tu idea. gracias

oscarac
06-09-2011, 18:41:31
Quim herrera lo hizo
parece que no estoy tan mal con las ideas no? :p:p

gmontes
06-09-2011, 22:11:35
gracias Quim Herrera

lo voy a probar

guillotmarc
07-09-2011, 16:40:17
¿ Puedes actualizar a la última versión de Firebird ?, puesto que en las últimas versiones corrigieron este comportamiento y tu instrucción ya funcionará como esperas.

Saludos.

gmontes
07-09-2011, 20:18:04
¿ Puedes actualizar a la última versión de Firebird ?, puesto que en las últimas versiones corrigieron este comportamiento y tu instrucción ya funcionará como esperas.

Saludos.

tengo la 2.1.3 instalada. ok