Registrar Notas de Alumnos por Cursos en DataWindow

Tengo las siguientes tablas: alumno(alu_id,alu_nombres,alu_fechanac,...,esp_id), tabla especialidad (esp_id, esp_nombre), cursos (cur_id,cur_nombre,cur_horas), notas (not_id, alu_id, cur_id, esp_id,cur_nota1,cur_nota2,cur_nota3). Mi pregunta es la siguiente como hago para las notas de los alumnos al elegir cada especialidad y curso respectivo; mi tabla notas no tiene ningún registro todavía, porque no tengo idea de como hacer para llenarlo de datos. Mis tablas están relacionadas.

1 respuesta

Respuesta
1
Lo que tienes que hacer es:
1. Creas un datawindow de la tabla especialidad de tipo grid y ocultas el campo esp_id (propiedad visible desmarcado).
2. Creas un datawindow de la tabla cursos de tipo grid y ocultas el campo cur_id.
3.Creas un datawindow de la tabla alumno de tipo grid y ocultas el campo alu_id.
4. Creas un datawindow de tipo freeform de la tabla notas (ya que esta tabla tiene como llaves foráneas las llaves primarias de alumno, especialidad y cursos).
*En el datawindow notas, en el campo [esp_id] te vas a la ficha [edit] y en la opcion [style type] elijes dropdowndw mas abajo en el campo [datawindow] lo enlazas con el datawindow especialidad y en la casilla [display column] pones [esp_nombre] y en el casilla [data column] pones [esp_id].
5.Repites el punto 4. con los campo cur_id (lo enlazas con el datawindow cursos) y alu_id (lo enlazas con el datawindow alumno) del datawindow notas.
6. Para filtrar por especialidad (ya que la tabla alumno tiene como llave foránea el campo [esp_id] de la tabla especialidad) tienes que crear un datawindow child en el evento itemchanged del datawindow control que aloja al datawindow objeto notas.
7. Por ultimo tendrás que crear un commandbutton llamado grabar o algo similar para grabar los datos introducidos en los campos del datawindow notas.
Seria así: evento clicked del botón grabar:
if dw_notas.update<>-1 then
commint Using slqca;
else
rollback using sqlca;
end if
Muchas gracias por la rapidez de tu respuesta, acertada, no se tal vez me indicaras como poder hacer esto:
Especialidad: un lista para seleccionar
Curso: También con el listado de cursos de la especialidad previamente seleccionada
Nº Apellidos y Nombres Nota1 Nota 2 Nota 3
1 asasasasa 12 14 15
2 sdfsdfsd3434 10 10 12
Es decir quisiera que cuando seleccione una especialidad y un curso me muestre todos los alumnos que se encuentran en la tabla alumnos y que pertenecen a dicha esepcialidad. Muchas gracias una vez más por tu ayuda brindada. [email protected]
*Como tedije en el punto 6.
*Tendras que crear un datawindow child (al datawindow alumno) para filtrar los alumno que pertenecen a una determinada especialidad.
Nota: Un datawindow child actuara como si fuera un datawindow cualquiera, claro con algunas restricciones.
*Esto lo haras en el evento [itemchanged] del datawindow notas.
*Mas o menos seria asi:
*evento [itemchanged] del datawindow notas:
* Al seleccionar un item de la lista especialidad tendra que filtrarnos los alumnos correspondientes a esa especialidad, entonces deberemos tomar el campo [esp_id] en una variable del tipo que has definido el campo [esp_id] en la base de datos.
//suponiendo que el campo [esp_id] es de tipo long
long ll_especialidad //defino una variable de tipo long llamado ll_especialidad
/***********************************/
//1. Primero tomamos el campo [esp_id]
ll_especialidad= this.object.esp_id.current[row]
//2. Luego declaramos una variable alumno de tipo DataWindowChild
DataWindowChild ldwch_alumno
//3. Creamos un datawindow child (usamos el datawindow alumno que creaste anteriormente) del campo [alu_id] del datawindow notas
this.GetChild("alu_id", ldwch_alumno)
//4. Nos conectamos a la base de datos
ldwch_alumno.SetTransObject(SQLCA)
//5. Mostramos los datos
ldwch_alumno.Retrieve()
//6. Filtramos los alumnos que corresponden a esa especialidad
ldwch_alumno.SetFilter("string(esp_id) = '" + string(ll_especialidad) + "')
ldwch_alumno.Filter()
//7. Ordenamos en forma ascendente los alumnos por nombres
ldwch_alumno.setsort("alu_nombres a")
ldwch_alumno.sort( )
 /***********************************/
Creo que con eso te solucionara tu inquietud.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas