Ver Mensaje Individual
  #13  
Antiguo 11-11-2011
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.418
Reputación: 24
fjcg02 Va camino a la fama
Estás usando el mismos dataset para gestionar el while y para hacer las inserciones. Al hacer el SQL.Clear, lo destripas.
Además, las instrucciones SQL no tienes que volverlas a crear. Simplemente, cambias los valores de los parámetros y las ejecutas.
Observa cómo he realzaido los bucles. Tu código no tiene mucha lógica, ya que no tiene las iteraciones hechas correctamente.

Echa un vistazo a este código y dinos qué te parece. Indenta el código correctamente, tú mismo lo agradecerás.

Código Delphi [-]
Procedure TF_CargosA.InsertaRegistros;
var fccodigo : string;
begin
  // defines la query de clientes
    DataM.Q_Clientes.SQL.Clear;
    DataM.Q_Clientes.Close;
    DataM.Q_Clientes.SQL.Add('SELECT FC_CODIGO FROM SCLIENTES');

  // defines la query de actualización
    DataM.Q_CargosF.SQL.Clear;
    DataM.Q_CargosF.Close;
    DataM.Q_CargosF.SQL.Add('INSERT INTO SCARGOSFIJOS  (FCF_CLIENTE,FCF_CODIGOPRODUCTO)');
    DataM.Q_CargosF.SQL.Add('VALUES  (aram1, aram2)');

  // abres la q de clientes y te posicionas en el primero
    DataM.Q_Clientes.Open;
    First;
  // recorres la query de clientes
    while not DataM.Q_Clientes.Eof do
      begin;
        // por cada registro, lanzas la query de actualización
        fccodigo := FieldByName('FC_CODIGO').AsString;
        DataM.Q_CargosF.ParamByName('param1').AsString := fccodigo;
        DataM.Q_CargosF.ParamByName('param2').AsString := Edit1.Text;
        DataM.Q_CargosF.ExecSQL;

        // siguiente registro de clientes
        Next;
     end; //while

end;

Espero que te sirva de ayuda

Un saludo
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -
Responder Con Cita