Ver Mensaje Individual
  #3  
Antiguo 03-11-2010
Mystery Mystery is offline
Miembro
 
Registrado: jul 2007
Ubicación: Santiago de Cuba
Posts: 69
Reputación: 17
Mystery Va por buen camino
Red face

Hola Al bueno primeramente creo que debo una disculpa por el mensaje tan tétrico que he enviado...
Primeramente explicare que es lo que deseo hacer…
Bueno necesito realizar una aplicación que copie la estructura y los datos de una base de datos Access (Cualquiera que especifique el usuario) a un Servidor SQL Server que yo le especifique.
Ahora bien se que existen herramientas en SQL Server que me permiten copiar datos a gran velocidad como los DTS… pero no me sirven pues la BD Access es variable por así decirlo.
Entonces no he hallado otra manera que la especificada
Código Delphi [-]
  Var
     Arr:Variant;
  begin
     arr:=VarArrayCreate([0, TbOrigen.FieldCount-1], varVariant);
    while not TbOrigen.Eof do begin
      for i:=0 to TbOrigen.FieldCount-1 do
        arr[i]:= TbOrigen.Fields[i].VALUE;
      Tb_Destino.AppendRecord([arr]);
      TbOrigen.Next;
    end;
  end;
El error que me envia es el siguiente
“Could not convert variant of type (Array Variant) into type (String).”
Ahora si en el AppendRecord lo pongo asi…
Código Delphi [-]
  Tb_Destino.AppendRecord(arr);
De todas formas Al como tu dices es muy lento pues yo lo hacia asi…
Código Delphi [-]
    while not Tb_Origen.Eof do begin
      for i:=0 to Tb_Origen.FieldCount-1 do
        Tb_Destino.Fields[i].AsString:= Tb_Origen.Fields[i].AsString;
      try
        Tb_Destino.Post;
      except
        Tb_Destino.Cancel;
      end;
      Tb_Origen.Next;
    end;
y realmente en tablas con mas de 100 000 registros se demoraba bastante. Entonces me dijeron que de la primera forma es mas rápido pero no he dado en como hacerlo.
Entonces si alguien conoce algún método distinto a este pero que sea mas optimo que no dude en publicarlo…
Mil gracias de antemano sin más
Mystery

Última edición por Mystery fecha: 03-11-2010 a las 15:29:46.
Responder Con Cita