• Sábado 2 de Marzo de 2024, 14:32

Autor Tema:  ¿como puedo hacer esto????  (Leído 2035 veces)

willysistemas

  • Miembro activo
  • **
  • Mensajes: 42
    • Ver Perfil
¿como puedo hacer esto????
« en: Martes 23 de Febrero de 2010, 02:07 »
0
Hola estoy tratando de implementar un sistema de matricula de estudiantes de un colegio, la idea es que la matricula se haga cada año pero me surge la duda como hacer para selecinar el año de trabajo y que el sistema me cargue unicamente los registross correspondientes a ese año para poder tranajar con ellos. he diseñado un form como el de la imagen[attachment=0:1vosj1u4]Sin título-1.jpg[/attachment:1vosj1u4] no se como seria el codigo si alguien me da una idea lo agradeceria mucho
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.
Chaka Zulu

Nebire

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: ¿como puedo hacer esto????
« Respuesta #1 en: Jueves 25 de Febrero de 2010, 11:10 »
0
Cita de: "willysistemas"
Hola estoy tratando de implementar un sistema de matricula de estudiantes de un colegio, la idea es que la matricula se haga cada año pero me surge la duda como hacer para selecinar el año de trabajo y que el sistema me cargue unicamente los registross correspondientes a ese año para poder tranajar con ellos. he diseñado un form como el de la imagen[attachment=0:17fdbmrq]Sin título-1.jpg[/attachment:17fdbmrq] no se como seria el codigo si alguien me da una idea lo agradeceria mucho

Usa un control datetimepicker para mostrar un calendario y/o limitar la fecha.
Si haces búsqeudas en el foro por el nombre del control, hallarás ejemplos para manejar las propiedades que precisas...
«Ma non troppo»
----> ModoVacaciones = False<----

willysistemas

  • Miembro activo
  • **
  • Mensajes: 42
    • Ver Perfil
Re: ¿como puedo hacer esto????
« Respuesta #2 en: Viernes 26 de Febrero de 2010, 03:49 »
0
Nebire, gracias por responder pero creo que no me hice entender, la idea es seleccionar el año de trabajo y que se carguen los datos correspondiente a ese año, lo que pasa es que el sistema guarda la informacion de estudiantes especificamente la matricula de alumnos de colegio y estos datos se actualizan cada año cada que el alumno cambia de grado pero van quedando los datos entonces se hace necesario poder escoger el año de trabajo para poder tarabajar con esos datos. asi por ejemplo si yo quiero trabajar solo con los datos de un año anterior tendria que escoger de esa lista para poderlos visualizar.
Chaka Zulu

Nebire

  • Miembro HIPER activo
  • ****
  • Mensajes: 670
    • Ver Perfil
Re: ¿como puedo hacer esto????
« Respuesta #3 en: Viernes 26 de Febrero de 2010, 12:36 »
0
Incluso ahora no te explicas lo suficiente.

Me parece entender que puedes querer esto otro...
Un método que describa como guardar los datos relevqntes de modo que puedas luego obtener un conjunto de ellos filtrando por año.
Bien si fuera esto, como tampoco indicas el método para guardar los datos (asumo que es una base de datos), entonces lo  adecuado es
que tengas un campo Año en tu base de datos.
Supongamos que los campos que contiene una tabla son (esta tabla podría llamarse DatosCurso):
IdAlumno: un identificador único autoincrementable enlazado a otra tabla que contiene datos específicos del alumno, (nombre apellidos,fecha nacimiento, teléfono, localidad, calle...)
Grado: el que está cursando actualmente,  1º, 2º, 3,º.... sean en semestres o anualidades...
Materia:  El curso que realiza... Psicología, Medicina...
Por tanto sería acorde introducir un campo más llamado año:
Año: año en que el alumno referenciado cursa tal materia y tal grado....

Por tanto tú luego puedes hacer varias funciones para obtener datos de esta tabla (DatosCurso) (o de la tabla DatosAlumno)  las más lógicas serían...
(en el código de más abajo se muestra un ejemplo para que todas estas funciones por separado sean 1 sola).
Filtrar por materia:
01º Obtener todos los alumnos que cursan una materia (por ejemplo que estudien psicología)
05º Obtener todos los alumnos que cursan una materia filtrado por grado (por ejemplo que estudian psicología de 5º grado).
03º Obtener todos los alumnos que cursan una materia filtrado por año (por ejemplo que estudian psicología, en 2010)
07º Obtener todos los alumnos que cursan una materia filtrado por grado y año (por ejemplo que estudian psicologia de 5º grado en 2010)
Filtrar por grado:
04º Obtener todos los alumnos que tienen tal grado (por ejmplo todos los que acaban de iniciar (no han cursado 2º grado aún)
06º Obtener todos los alumnos que tienen tal grado filtrado por fecha (por ejmplo todos los que acaban de iniciar (no han cursado 2º grado aún), en 2010)
- el filtrado por grado, fecha y materia sería lo mismo que el 3º caso
Filtrar por fecha:
02º Obtener todos los alumnos que cursaron el año x (por ejmplo que estuvieron matriculados en 2008)
- Filtrar por año y grado es igual 6º
- filtrar por año y materia es igual que 3º
- filtrar por año, grado y materia es igual que 7º

Por tanto la base de estas querys podría ser obtener un recordset a partir de unas cadenas que podrían ser en su base constantes y donde cada vez lo que cambia son los parámetros.
El siguiente código sería un ejemplo de como obtener un recordset sin necesidad de crear tantas funciones explícitamente... para ello primero habría de llamarse a una función que crea una query en base a usar o no cualquiera de los 3 parámetros de filtrado, luego con dicha query pedimos el recordset, queda a tu esfuerzo (aparte de corregir algún fallo en el código, está hecho directamente) volcar el recordset al control/les tal como tengas diseñada la interfaz...

Código: Visual Basic
  1.  
  2. ' Prepara una query en base a los parámetros que utilicemos, sean estos cuales sean... si se omiten todos los parámetros, se recogerían todos los registros de dicha tabla.
  3. public function PreparaQuery(byref optional Materia as vaiant, byref optional Fecha as variant, byref optional Grado as variant, optional Cuantos as variant) as string
  4.        dim  b as string, w as string, m as string, g as string, f as string
  5.      
  6.        if isMissing(cuantos) then
  7.               if isNumeric(cuantos) then
  8.                      b = " TOP " & cstr(cuantos)   'seleccionará los x primeros, esto lo puedes modificar a tu gusto, se expone sólo como ejemplo de sugerencia
  9.                else
  10.                     b= " *"                                     ' seleccionará todos
  11.                end if
  12.        else
  13.             b= " *"                                            ' seleccionará todos
  14.        end if
  15.              
  16.        ' se usan los 3 campos (siempre que no se haya omitido alguno), se prepara esta parte en base a este hecho                    
  17.           m= Subwhere(Materia, "Materia")
  18.           f= Subwhere(Fecha, "Fecha")
  19.           g= Subwhere(Grado, "Grado")
  20.  
  21.            ' Si materia no fue omitido                    
  22.           if m <>"" then w = " WHERE " & m
  23.  
  24.           if w <>"" then
  25.                   if f <>"" then w = w " AND " & f     ' si fecha no fue omitido
  26.           else   ' materia fue omitido
  27.                   if f <>"" then w = " WHERE " & f     ' si fecha no fue omitido
  28.           end if  
  29.  
  30.            ' si al menos materia o fecha no fueron omitidos
  31.           if w <>"" then
  32.                   if g <>"" then w = w " AND " & g     ' si grado no fue omitido
  33.           else    ' materia y fecha fueron omitidos
  34.                   if g <>"" then w = " WHERE " & g     ' si grado no fue omitido
  35.           end if  
  36.  
  37.        PreparaQuery = "Select" &  b & " FROM tblDatosCurso" & iif( w<>"", w,"")
  38. end function
  39.  
  40. '  compone parte de los campos para el filtro.
  41. private function Subwhere( byref Valor as variant, byval Campo as string) as string
  42.          dim w as string
  43.  
  44.          on local error goto SaleWhere
  45.          if not ismissing(Valor ) then
  46.                  w = ucase$(trim$((Valor ))
  47.           end if
  48.           if w <> "" then
  49.                   w = " " & chr(34) & Campo & chr(34) & " = " & w
  50.           end if
  51.  
  52.          Subwhere=w
  53.  
  54.        exit function
  55. SaleWhere:
  56.        Subwhere=""
  57. end function
  58.  
  59. ' supongamos que utilizamos por debajo un control  adodc...
  60. public function GetDatosCurso(byval query as string) as ADODB.recordset
  61.         Dim Cmd As ADODB.Command, Conex As ADODB.Connection
  62.  
  63.         if query <> "" then
  64.               Set Conex = New ADODB.Connection
  65.               Conex.Open Adodc1.ConnectionString   ' utilizamos la conexión establecida con el objeto Adodc1
  66.               Set Cmd = New ADODB.Command
  67.               With Cmd
  68.                     Set .ActiveConnection = Conex
  69.                     .CommandType = adCmdText
  70.                     .CommandText = query  
  71.                     set  GetDatosCurso = .Execute(, , adCmdText)
  72.              End With
  73.         end if
  74. end function
  75.  
  76.  
NOTA: el código está puesto 'al vuelo'  de modo que a lo mejor necesitas hacer alguna corrección, (en la query  sobretodo)

Luego de obtenido el recorset si se quiere obtener datos del alumno, fuerza a seleccionar una fila (del control donde exhibas los datos) y en conjunto con un botón (o sin él, directamente al cambiar de fila), obtén los datos del alumno a través de su id alumno:
Código: Visual Basic
  1.  
  2.      "SELECT * FROM  tblDatosAlumno WHERE idalumno = fila(idseleccionado)" ' fila(idseleccionado) recoge el dato idAlumno correspondiente al registro seleccionado.
  3.  
  4.  
y vuelcas dicho contenido , sobre unos controles al efecto...
 
En fin no sé si esto lo que querías, porque no has sido lo suficientemente claro... o por lo menos yo no he terminado de comprender lo que reclamas.
«Ma non troppo»
----> ModoVacaciones = False<----