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!