Duda en campos a consultar en SQL

Hola Alfredo, mira soy bastante nuevo en el tema y quisiera que me ayudaras con unas dudas en unas consultas.
El tema es el siguiente; al seleccionar una "Carrera" lleno un listbox en vb con materias (asignaturas) (Ingles, matemática, etc) a esa materias yo le quiero guardar información de que materias dependen, te explico mejor; no se podrá cursar Ingles 2 si antes tener Ingles uno, (en Argentina se llama Correlativas).
Bueno en mi consulta selecciono las materias que pertenecen a la carrera, si son del primer año, mando un mensaje diciendo que las materias de primer año no poseen "Correlativas", si son de segundo muestro las materias de primero, y si son de tercero muestro las de primero y segundo. Todo esto esta andando bien pero se me paso en alto algo. "Hay Materias que duran 4 meses (cuatrimestrales) y tiene de correlativa una materia de ese mismo año, y esas materias no las estoy mostrando"
Bueno queria tratar de explicarte un poco el entorno, ahora te muestro el codigo q tengo y mis dudas
SELECT nombre FROM Materia WHERE curso < "cursoseleccionado" and carrera = "carreraseleccionada"
En la tabla materia tengo el campo duración donde supongamos: 1 es anual 2 cuatrimestral.
¿Cómo puedo modificar la consulta para que si la materia es cuatrimestrales muestre las materias cuatrimestrales del mismo año?
Se que curso ya no seria menor a curso seleccionado seria <=,
lo que me pasa es que si agrego Periodo = 2 (cuatrmiestral) estoy teniendo el problema de que no me muestra las materias de los años anteriores que son anuales.
Espero que me puedas orientar como puedo recuperar esos datos y también que se haya entendido mi duda.
Y si puede ser tengo otra duda de que no se si es correcto lo que hago o es una mala practica.
Para saber el curso de la materia ejecuto una consulta y guardo el resultado en una variable, cierro el recordset y lo vuelvo abrir ejecutando una consulta donde incluyo a esa variable.
A modo de ejemplo:
Rs.open "SELECT curso FROM Materia WHERE idmateria= materiaseleccionada
variable_curso= rs(0).value
Rs.close
Rs.open SELECT...... WHERE curso= variable_curso
rs.close
Fue un método que se me ocurrió y funcionó pero tengo dudas sobre si es una mala forma de trabajar o la mayoría lo hace así.
Bueno disculpa que te escribiera tanto, espero que me puedas ayudar, desde ya muchas gracias
Respuesta
1
Respecto a la segunda de tus dudas se me hace muy bien que habrás y cierres los recordset pues así garantizas que no dejas cursorres abiertos y tu programa no consumirá tanta memoria, además de que te evita algunos errores inesperados. Lo único en contra es que al abrir y cerrar tu programa se hace un poco más lento.
De la primer pregunta no estoy seguro de haber entendido bien, pero creo que si quieres que muestre las anuales (1) y las Custrimestrales (2) y no tienes más opciones de periodos entonces la restricción del periodo sale sobrando. En caso de tener más periodos usa Where curso = variable curso and (periodo =1 or periodo = 2), este último where solo para ilustrar como metarias la rstricción de periodo en tu sentencia
Mucha suerte

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas