Hola,
tras las instrucciones que me disteis para usar ADO en Delphi 6, efectivamente he conseguido ver datos de la tabla en cuestion, el problema me surge cuando tengo que guardar datos, de una tabla ADO, a la de IB.
Me explicaré. Tengo este código:
Código:
//===============================
//========Tomamos los datos desde access a la tabla TODO
//=======copiamos los registros de una tabla a la otra
FrmDmodule.TbADOAsisImport.first;
//mientras no llegue al final de los registros
WHILE not FrmDmodule.TbADOAsisImport.EOF DO BEGIN
With FrmDmodule.TbIBAsistencia_todo do begin
FrmDmodule.TbIBAsistencia_todo.Insert;
FieldByName('CODIGO').Value := FrmDmodule.TbADOAsisImportCODIGO.Value;
FieldByName('GRUPO').Value := FrmDmodule.TbADOAsisImportGRUPO.Value;
FieldByName('FECHA').Value := FrmDmodule.TbADOAsisImportFECHA.Value;
FieldByName('NUMALU1').Value := FrmDmodule.TbADOAsisImportNUMALU1.Value;
FieldByName('ASISTENCIA1').Value := FrmDmodule.TbADOAsisImportASISTENCIA1.Value;
FieldByName('NUMALU2').Value := FrmDmodule.TbADOAsisImportNUMALU2.Value;
FieldByName('ASISTENCIA2').Value := FrmDmodule.TbADOAsisImportASISTENCIA2.Value;
FieldByName('NUMALU3').Value := FrmDmodule.TbADOAsisImportNUMALU3.Value;
FieldByName('ASISTENCIA3').Value := FrmDmodule.TbADOAsisImportASISTENCIA3.Value;
FieldByName('NUMALU4').Value := FrmDmodule.TbADOAsisImportNUMALU4.Value;
FieldByName('ASISTENCIA4').Value := FrmDmodule.TbADOAsisImportASISTENCIA4.Value;
FieldByName('NUMALU5').Value := FrmDmodule.TbADOAsisImportNUMALU5.Value;
FieldByName('ASISTENCIA5').Value := FrmDmodule.TbADOAsisImportASISTENCIA5.Value;
FieldByName('NUMALU6').Value := FrmDmodule.TbADOAsisImportNUMALU6.Value;
FieldByName('ASISTENCIA6').Value := FrmDmodule.TbADOAsisImportASISTENCIA6.Value;
FieldByName('NUMALU7').Value := FrmDmodule.TbADOAsisImportNUMALU7.Value;
FieldByName('ASISTENCIA7').Value := FrmDmodule.TbADOAsisImportASISTENCIA7.Value;
FieldByName('NUMALU8').Value := FrmDmodule.TbADOAsisImportNUMALU8.Value;
FieldByName('ASISTENCIA8').Value := FrmDmodule.TbADOAsisImportASISTENCIA8.Value;
FieldByName('NUMALU9').Value := FrmDmodule.TbADOAsisImportNUMALU9.Value;
FieldByName('ASISTENCIA9').Value := FrmDmodule.TbADOAsisImportASISTENCIA9.Value;
FieldByName('NUMALU10').Value := FrmDmodule.TbADOAsisImportNUMALU10.Value;
FieldByName('ASISTENCIA10').Value := FrmDmodule.TbADOAsisImportASISTENCIA10.Value;
FieldByName('NUMALU11').Value := FrmDmodule.TbADOAsisImportNUMALU11.Value;
FieldByName('ASISTENCIA11').Value := FrmDmodule.TbADOAsisImportASISTENCIA11.Value;
FieldByName('NUMALU12').Value := FrmDmodule.TbADOAsisImportNUMALU12.Value;
FieldByName('ASISTENCIA12').Value := FrmDmodule.TbADOAsisImportASISTENCIA12.Value;
FrmDmodule.TbIBAsistencia_todo.Post;
END;
End; //With
FrmDmodule.TbADOAsisImport.next;
END;//While del TbADOAsisImport
//Cerramos tablas
FrmDmodule.TbADOAsisImport.close;
FrmDmodule.IBTransHyperion.CommitRetaining;
Donde la tabla TbADOAsisImport es la que tiene los datos que quiero pasar a IB, y la que los tiene que recoger es la tabla TbIBAsistencia_todo.
El problema viene al copiar el último registro de la tabla de ADO a la de IB. No es necesario que todos los campos tengan datos, (no se obliga a la BD Access que así sea), pero si en el último registro, no encuentra datos para un campo concreto, ¡¡¿copia los del registro inmediatamente superior????!!!! para rellenar esos vacios??????!!!!
Si el registro que no tiene datos en todos los campos, NO es el último, todo funcionará OK
Esto es así justo cuando pasa por el Post, antes de pasar por el "next"
He puesto para que vaya mostrandome los valores cada pasada, y antes del post ya da el problema.
Por favor, alguien puede ayudarme, no se que hacer con este tema.
Muchas gracias,
virginia