De acuerdo al código proporcionado por lepe
aqui y que lo añado que permite modificar datos arrojados por una consulta en un DBGrid,:
Código Delphi
[-]Query1.....Query1.RequestLive:=true;
Query1.Open;
DBGrid1.Columns[0].ReadOnly:=false;
DBGrid1.Columns[1].ReadOnly:=false;
Estoy ahora con ésto:
Tengo, una sola tabla, que nada tiene que ver con el hilo antes mencionado, donde se almacena:
Cita:
Apellido, Nombre, Grado, Grupo, Turno, Sept, Oct, Bim1, Nov, Dic, Bim2, Ene, Feb, Bim3, Mar, Abr, Bim4, May, Jun, Bim5, Total.
|
Para capturar, apellidos, nombres y calificaciones mensuales y bimestrales de alumnos, los cuales pueden pertenecer a 1°, 2°, 3° y secciones A, B, C, D, E, F y G; y al turno Matutino o Vespertino.
Ahora bien, he puesto Combobox (para facilidad), para :
Cita:
Grado [1,2,3],
Grupo [A,B,C,D,E,F,G]
Turno [T.M., T.V.]
Bimestre [1,2,3,4,5]
|
La selección del bimestre condiciona los meses que deben arrojarse en el DBGrid con:
Veremos un ejemplo, aplicado, donde la consulta es:
Aplica desde
Cita:
DataModule2.Bim1 hasta DataModule2.Bim5
|
Considerando que, como dije, depende de la selección del Bimestre (Bimestre_CBX[es el combobox]) cambia el ítem y la consulta.
El código de la consulta:
Código SQL
[-]Select Apellido, Nombre, Sept, Oct, Bim1 where Grado=:entrada and Grupo=:entrada2 and turno=:entrada3
Código Delphi
[-]Case Bimestre_CBX.ItemIndex of
0:Begin
DBGrid1.DataSource:=DataModule2.Bim1_Source;
DataModule2.Bim1.Close;
DataModule2.Bim1.ParamByName('entrada').AsString:=Trim(Grado_CBX.Text);
DataModule2.Bim1.ParamByName('entrada2').AsString:=Trim(Grupo_CBX.Text);
DataModule2.Bim1.ParamByName('entrada3').AsString:=Trim(Turno);
DataModule2.Bim1.RequestLive:=true;
DataModule2.Bimestre1.Open;
end;
end;
DBGrid1.Columns.RebuildColumns;
Dbgrid1.Columns[0].ReadOnly := true;
Dbgrid1.Columns[1].ReadOnly := true;
end;
Veamos....esto funciona....me permite modificar las calificaciones que corresponden a los meses del bimestre X, pero, dado que puede que la entrada de los nombres no se haya dado alfabéticamente o simplemente se capturaron 5 de primero y 10 de segundo y sin orden albético implementé esto:
Una consulta, llamada Bimestrales la cual, no tiene código porque:
Código Delphi
[-]
Case Bimestre_CBX.ItemIndex of
DataModule2.Bimestrales.Close;
DataModule2.Bimestrales.SQL.Clear;
0: DataModule2.Bimestrales.SQL.Add('Select APELLIDO, NOMBRE, SEPT, OCT, BIM1 from Calificaciones where Grado=:entrada and Grupo=:entrada2 and Turno=:entrada3 Order By Apellido');
1: DataModule2.Bimestrales.SQL.Add('Select APELLIDO, NOMBRE, NOV, DIC, BIM2 from Calificaciones where Grado=:entrada and Grupo=:entrada2 and Turno=:entrada3 Order By Apellido');
2: DataModule2.Bimestrales.SQL.Add('Select APELLIDO, NOMBRE, ENE, FEB, BIM3 from Calificaciones where Grado=:entrada and Grupo=:entrada2 and Turno=:entrada3 Order By Apellido');
3: DataModule2.Bimestrales.SQL.Add('Select APELLIDO, NOMBRE, MAR, ABR, BIM4 from Calificaciones where Grado=:entrada and Grupo=:entrada2 and Turno=:entrada3 Order By Apellido');
4: DataModule2.Bimestrales.SQL.Add('Select APELLIDO, NOMBRE, MAY, JUN, BIM5 from Calificaciones where Grado=:entrada and Grupo=:entrada2 and Turno=:entrada3 Order By Apellido');
End;
DataModule2.Bimestrales.ParamByName('entrada').AsString:=Trim(Grado_CBX.Text);
DataModule2.Bimestrales.ParamByName('entrada2').AsString:=Trim(Grupo_CBX.Text);
DataModule2.Bimestrales.ParamByName('entrada3').AsString:=Trim(Turno);
DataModule2.Bimestrales.RequestLive:=true;
DataModule2.Bimestrales.Open;
DBGrid1.Columns.RebuildColumns;
Dbgrid1.Columns[0].ReadOnly := true;
Dbgrid1.Columns[1].ReadOnly := true;
La cláusula "ORDER BY" añadida en el código anterior, que no estaba en el primer código, no me permite modificar los datos de los meses correspondientes al Bimestre elegido....lo sé porque ya la quité en un ítem y en otro no, y en donde lo quité permitió modificar..caso contrario el otro
Alguna sugerencia??...Espero no haber hecho mucho desastre con esto...
pero prefiero el comentario por exceso de información que por falta....ahora puedo recibir uno por confusión y falta de explicación..
Agraedciendo el tiempo...es que no sé porque la cláusula no deja modificar..
{Saludos}