Ver Mensaje Individual
  #2  
Antiguo 02-04-2008
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Reputación: 29
Lepe Va por buen camino
Una pequeña puntualización:
Código Delphi [-]
cv:= dm.IBDataSet1; 
// copio el dataset del DataModule a uno locar. (AQUI LA MADRE DEL CORDERO)
No estás copiando nada. En memoria RAM, solo tienes un conjuto de registros al que accedes desde dos punteros:
- uno el "dm.Ibdataset1"
- otro puntero el "cv"

Si cierras la consulta mediante el "cv" o mediante el "dm.Ibdataset1", estás actuando sobre los mismos datos.

Lo normal es tener un IBdataset por cada tabla que quieras modificar. En todas las aplicaciones, tengo una rutina del tipo:
Código Delphi [-]
function CreaQry(const TheSql:string):Tibquery;
begin
   Result := Tibquery.create(nil);
   Result.Database := midtb;
   Result.Transaction := trans1;
   Result.sql.text := TheSql;
end;

Ahora solo tienes que llamar a la función así:
Código Delphi [-]
var q:Tibquery;
begin 
  q := CreaQry('update tabla set miCampo = 3 where codigo =2');
  q.ExecSql;
  q.Sql.Text := 'select * from tabla';
  q.Open;
  ....
  FreeAndnil(q);

Saludos
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita