eduarcol
14-05-2004, 21:41:38
Hola amigos, Estoy diseñando un procedimiento para crear un campo existente y colocarlo como requerido, trabajo con Delphi 5 y Paradox por medio del BDE
El procedimiento es el siguiente:
ORIGINAL := tTable.Create(Application);
try
Original.DatabaseName := cRutaDatos;
Original.TableName := cLinDes;
Original.Active := True;
//Crea el query
sqSQL := TQuery.Create(Application);
//Determina si esta el indice
if Original.IndexFieldCount <= 2 then
begin
//Cierra las tablas
Original.Active := False;
//Crea la tabla temporal y la llena
Temporal := TTable.Create(Application);
try
Temporal.TableType := ttParadox;
Temporal.Name := 'Temporal';
Temporal.BatchMove(TBDEDataSet(Original), batCopy); //Aqui da el error
//Cambiala estructura de la tabla
Original.FieldDefs[Original.FieldDefs.IndexOf(cLinDes_Fecha)].Required := True;
Original.IndexDefs[Original.IndexDefs.IndexOf(cLinDes_I1)].Fields :=
cLinDes_CodigoDescarga + ';' + cLinDes_CodigoEmbarcacion + ';' +
cLinDes_Fecha;
Original.CreateTable;
//Actualiza de nuevo las tablas
Original.BatchMove(Temporal, batAppend);
finally
FreeandNil(Temporal);
end;
end; //Determina si esta el indice
El error que me genera es una excepcion de tipo EDBEngine Error y dice:
Invalid Parameter
Disculpen si esta largo pero solo coloque el bloque de codigo donde da el error
Por cierto la ayuda de Delphi dice:
TTable.BatchMove
Moves records from a dataset into this table.
function BatchMove(ASource: TBDEDataSet; AMode: TBatchMode): Longint;
batCopy Copy the structure and records from the source table into the destination table. If the destination table already exists,delete it, and replace it with the new copy of the source.
El procedimiento es el siguiente:
ORIGINAL := tTable.Create(Application);
try
Original.DatabaseName := cRutaDatos;
Original.TableName := cLinDes;
Original.Active := True;
//Crea el query
sqSQL := TQuery.Create(Application);
//Determina si esta el indice
if Original.IndexFieldCount <= 2 then
begin
//Cierra las tablas
Original.Active := False;
//Crea la tabla temporal y la llena
Temporal := TTable.Create(Application);
try
Temporal.TableType := ttParadox;
Temporal.Name := 'Temporal';
Temporal.BatchMove(TBDEDataSet(Original), batCopy); //Aqui da el error
//Cambiala estructura de la tabla
Original.FieldDefs[Original.FieldDefs.IndexOf(cLinDes_Fecha)].Required := True;
Original.IndexDefs[Original.IndexDefs.IndexOf(cLinDes_I1)].Fields :=
cLinDes_CodigoDescarga + ';' + cLinDes_CodigoEmbarcacion + ';' +
cLinDes_Fecha;
Original.CreateTable;
//Actualiza de nuevo las tablas
Original.BatchMove(Temporal, batAppend);
finally
FreeandNil(Temporal);
end;
end; //Determina si esta el indice
El error que me genera es una excepcion de tipo EDBEngine Error y dice:
Invalid Parameter
Disculpen si esta largo pero solo coloque el bloque de codigo donde da el error
Por cierto la ayuda de Delphi dice:
TTable.BatchMove
Moves records from a dataset into this table.
function BatchMove(ASource: TBDEDataSet; AMode: TBatchMode): Longint;
batCopy Copy the structure and records from the source table into the destination table. If the destination table already exists,delete it, and replace it with the new copy of the source.