Ver Mensaje Individual
  #1  
Antiguo 27-10-2006
Avatar de anghell77
anghell77 anghell77 is offline
Miembro
 
Registrado: may 2006
Posts: 194
Reputación: 19
anghell77 Va por buen camino
cláusula Order by impide actualizar en tiempo real?

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.....//Datos que requiere el query  para ejecutarse, son instrucciones SQL, para filtrar los datos.
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:
Cita:
DataModule2.Bim1
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;
///aqui lo que mencionaba, siguen los items 1: 2: 3: etc para los cuales tambien cambia la consulta a Bim2, Bim3, Bim4, etc
 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 [-]
//dentro del evento del botón que dispara la consulta:
 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;//Este es el código que me enseñó lepe para modificar datos en tiempo de ejecución de los datos arrojados por el Query

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}
__________________
"...Ayer Bastaba un Sueño..."

Última edición por anghell77 fecha: 27-10-2006 a las 10:42:19.
Responder Con Cita