Hola, estoy intentado crear los "fields" (campos?) de un sqldataset dinamicamente, y me da el siguiente error ->
SQLDataSet1: Cannot modify a read-only dataset
El codigo es el siguiente ->
Código:
var i: Integer;
var T: TStringField;
begin
SQLDataSet1.Open;
SQLDataSet1.Edit;
SQLDataSet1.ClearFields;
SQLDataSet1.CommandText := 'SELECT '+'ov_cia.cia AS Companyia, '+'od_hospitalitzacio.data AS Dat, '
+'oa_data.SETMANA_DEL_ANY AS S, '+'oa_data.MES_DEL_ANY AS M, '
+'oa_data.TRIMESTRE AS Trimestre, '+'SUM(od_hospitalitzacio.ingressats) AS Ingr, '
+'SUM(od_hospitalitzacio.altes) AS Alt, '+'SUM(od_hospitalitzacio.ingressos) AS Ingres '
+'FROM '+'od_hospitalitzacio, '+'ov_cia, '+'oa_data '+'WHERE '
+'od_hospitalitzacio.id_cia = ov_cia.id_cia AND '
+'od_hospitalitzacio.data = oa_data.DATA AND '
+'oa_data.ANY4 = TO_NUMBER(TO_CHAR(SYSDATE-1, ' + QuotedStr('YYYY')
+ ')) '+'GROUP BY '+'od_hospitalitzacio.data, '+'oa_data.SETMANA_DEL_ANY, '
+'oa_data.MES_DEL_ANY, '+'oa_data.TRIMESTRE, '+'ov_cia.cia';
SQLDataSet1.Close;
T := TStringField.Create(SQLDataSet1);
T.FieldName := 'Prueba';
T.Name := SQLDataSet1.Name + T.FieldName;
T.Index := SQLDataSet1.FieldCount;
T.DataSet := SQLDataSet1;
SQLDataSet1.FieldDefs.UpDate;
SQLDataSet1.Open;
ShowMessage('Fields :' + IntToStr(SQLDataSet1.FieldCount));
for i := 0 to SQLDataSet1.FieldCount - 1 do
ShowMessage(SQLDataSet1.Fields[i].FieldName);
No he tocado mucho estos temas en delphi, y he estado buscando en google informacion sobre este error pero no encuentro nada ;( Tampoco se si hago bien el tema de crear los "fields", es lo que encontre en la ayuda del delphi... pero como me falla al principio pues tampoco he podido probar si es correcto.
PD: He puesto intros en el query para que no sea tan largo.