Ver Mensaje Individual
  #11  
Antiguo 15-02-2012
juliannemiro juliannemiro is offline
Miembro
NULL
 
Registrado: nov 2011
Posts: 27
Reputación: 0
juliannemiro Va por buen camino
Hola. Estoy de nuevo!

Te cuento que he solucionado el problema creando una VISTA en el SQLServer:

Código SQL [-]
SELECT     b.id_asistencias, c.apellido AS Apellido, c.nombre AS Nombre, b.id_asistencias_tipo, 
    b.computa, b.valor, b.obs AS Observación, f.id_estado, f.id_alumno, d .id_curso, b.fecha,
            CASE b.id_asistencias_tipo
              WHEN 1 THEN 'Presente'
              WHEN 2 THEN 'Ausente'
              WHEN 3 THEN 'Tarde'
            ELSE 'retiro' END AS x_asistencia                   
FROM         asistencias b LEFT JOIN
                      alumnos_cursos a ON a.id_alumno = b.id_alumno INNER JOIN
                      personas c ON c.id_persona = a.id_alumno LEFT JOIN
                      cursos d ON a.id_curso = d .id_curso AND b.n_anioLectivo = d .n_anio LEFT JOIN
                      asistencias_tipos e ON b.id_asistencias_tipo = e.id_asistencias_tipo LEFT JOIN
                      alumnos f ON c.id_persona = f.id_alumno




Asique ese error ya no esta mas. El problema es el siguiente.

Cuando cambio el valor del ID_ASISTENCIA_TIPO en la DBGRID, me cambia la X_ASISTENCIA correctamente. Pero cuando salgo del campo(me cambio de registro), el ID_ASISTENCIA_TIPO se mantiene con el cambio, pero la X_ASISTENCIA vuelve a tomar el valor que tenía antes.

El código que estoy usando es el siguiente


Código Delphi [-]
procedure TFormAsistencia.DBGridMateriasCursoKeyPress(Sender: TObject;
  var Key: Char);
begin

  with Sender as TDBGrid do
   if SelectedField.FieldName = 'id_asistencias_tipo' then
   begin
     DataSourceAsistenciasGrid.DataSet.Edit;
     DBGridMateriasCurso.Columns[4].ReadOnly := false;
     Key := UpCase(Key);
     if Upcase(Key) = '1' then
     DataSourceAsistenciasGrid.DataSet.FieldByName('x_asistencia').AsString:= 'Presente';
     if Upcase(Key) = '2' then
     DataSourceAsistenciasGrid.DataSet.FieldByName('x_asistencia').AsString:= 'Ausente';
     if Upcase(Key) = '3' then
     DataSourceAsistenciasGrid.DataSet.FieldByName('x_asistencia').AsString:= 'Tarde';
     if Upcase(Key) = '4' then
     DataSourceAsistenciasGrid.DataSet.FieldByName('x_asistencia').AsString:= 'Retiro Anticipado';
     DBGridMateriasCurso.Columns[4].ReadOnly := true;
   end;


Cual puede ser el problema?

Gracias como siempre por la buena predisposición!
Responder Con Cita