Pues eso mis estimados, en un proyecto que tengo anteriormente guardaba una cantidad de información insertandolo uno a uno y eso hace que la aplicación se alente un poco en determinado momentos, luego he decubierto una funcionalidad en FIreDAC que facilita realizar insert masivos de un sólo golpe, esto es lo que tengo:
procedure TOrdenTrabajoP.InsertOTServicios(const ADetalles: TList<TServiciosDetRec>; AListChecked: TListView; AIndex: Integer; ADataSet,ADataSetDel: TFDQuery; AUser,ADevice: String; isNew: Boolean = False); var i: Integer; begin if not isNew then EliminaServicios(ADataSetDel,AIndex,AUser,ADevice); ADataSet.Params.ArraySize := ADetalles.Count; for i := 0 to ADataSet.Params.ArraySize -1 do begin ADataSet.ParamByName('id').AsIntegers[i] := AIndex; ADataSet.ParamByName('nombre').AsStrings[i] := ADetalles.Items[i].SNombre; ADataSet.ParamByName('serv').AsIntegers[i] := ADetalles.Items[i].SCodigo; ADataSet.ParamByName('check').AsIntegers[i] := AListChecked.Items[ADetalles.IndexOf(ADetalles.Items[i])].Checked.ToInteger; end; ADataSet.Execute(ADataSet.Params.ArraySize); end;
Pero me he encontrado con un inconveniente y es que los textos e guardan como "?????Et?" y así por el estilo, de la forma clásica de ejecutar un insert por cada registro no sucedía, pero en este caso sí, ¿alguno de ustedes se han enfrentado con esta situación?.
Saludos