Buenas a todos,
a ver si alguien me puede echar una mano.
Tengo una aplicacion que hace traspasos entre dos bases de datos de firebird que son similares. Estoy usando los componentes TIBSql para hacer la lectura "SELECT" de la base de datos Origen y para la escritura en la base de datos destisno "INSERT".
Estoy utilizando también Delphi XE5, pero me da igual si es para otra versión de delphi.
Quería saber como podría obtener el tamaño en bytes de los datos leidos en la consulta, sin lanzar una consulta adicional.
Explico un poco el ejemplo que hay acontinuacion:
- QMostrar: es un TIBSQL con un select a una tabla en la base de datos origen.
- QInserta: es un TIBSQL con un insert a una tabla en la base de datos destino.
- lselcampos: Es una lista con los titulos de las columnas del select. En el select y en el insert se llamaran igual.
Qmostrar podría ser:
Código SQL
[-]Select CODIGO, NOMBRE, PRECIO, IMAGEN_BLOB from articulo order by codigo asc
QInserta :
Código SQL
[-]insert into articulo (CODIGO, NOMBRE, PRECIO, IMAGEN_BLOB) values (:CODIGO,:NOMBRE,:PRECIO,:IMAGEN_BLOB)
Código:
lselcampos: ['CODIGO', 'NOMBRE', 'PRECIO', 'IMAGEN_BLOB']
Código Delphi
[-]var ivar:TIBXSQLVar;
i:integer;
begin
QMostrar.ExecQuery;
while not(QMostrar.Eof) do
begin
for i:=0 to lselcampos.Count-1 do
begin
QInserta.ParamByName(lselcampos[i]).Clear;
ivar:=QMostrar.FieldByName(lselcampos[i]);
if Not(ivar.isNull)then
begin
QInserta.ParamByName(lselcampos[i]).Assign(ivar);
end;
end;
QInserta.ExecQuery
end;
end;
Espero podais ayudarme. Gracias