Notas para hacer un poco mas legible tu código:
Cada línea empieza por "Dmodulo."
Esto sugiere que todo este procedimiento debería ser parte del DataModule y no de Form que lo llama.
Código Delphi
[-]
begin
DModulo.InsertarEnMySQL;
end;
proceudre TDModulo.InsertarEnMySQL;
begin
RegistroMadre2.SQL.Clear ;
RegistroMadre2.SQL.Add('select * from RegistroMadre ');
RegistroMadre2.Open;
RegistroMadre2.First;
while not RegistroMadre2.Eof do
begin
if RegistroMadre2.FieldByName('NumeroCuenta').AsString>'' then
begin
Dias_M_I.SQL.Text:=Dias_M_I.InsertSQL.Text;
Dias_M_I.ParamByName('CEDULA').AsString:=RegistroMadre2.FieldByName('Cedula').AsString;
Dias_M_I.ExecSQL;
Dias_M_I.SelectSQL.Text:=('select * from RegistroMadre ');
SHOWMESSAGE('A sido Insertado');
end;
RegistroMadre2.Next;
end;
ibt.Commit;
end;
Luego además podrías utilizar "with do" para mejorarlo incluso un poco mas:
Código Delphi
[-]
proceudre TDModulo.InsertarEnMySQL;
begin
with RegistroMadre2 do
begin
SQL.Clear ;
SQL.Add('select * from RegistroMadre ');
Open;
First;
while not Eof do
begin
if FieldByName('NumeroCuenta').AsString>'' then
begin
Dias_M_I.SQL.Text:=Dias_M_I.InsertSQL.Text;
Dias_M_I.ParamByName('CEDULA').AsString:=FieldByName('Cedula').AsString;
Dias_M_I.ExecSQL;
Dias_M_I.SelectSQL.Text:=('select * from RegistroMadre ');
SHOWMESSAGE('A sido Insertado');
end;
Next;
end;
ibt.Commit;
end;
end;
Supongo además que la sentencia InsertSQL de la tabla DIAS_M_I necesitará más parámetros.
Algo así como "INSERT INTO REGISTRO HIJO (ID, NOMBRE, CEDULA) VALUES (:ID, :NOMBRE, :CEDULA)"
Esos parámetros también deberás asignarlos, o se insertarán como nulos o "vacíos".