Visual Basic - Problema con consulta sql

Life is soft - evento anual de software empresarial
   
Vista:

Problema con consulta sql

Publicado por mart (6 intervenciones) el 30/11/2010 22:32:18
Buenas!...tengo un problema con una consulta de un formulario..

Me vá a buscar correctamente los datos a la base pero no me los pone en los textboxes.

Codigo = InputBox("Ingrese el número de Código del alumno")
If Codigo = "" Then
MsgBox "Debe ingresar un número de Código del alumno", vbExclamation, "Mensaje"
Deshabilitar
Exit Sub
End If

If Not Conectar() Then Exit Sub
sql = "select * from Presentismo where Codigo_Alumno = " & Codigo & ""
Set Rs = Cn.Execute(sql)
If Not Rs.EOF Then
AlumnoCodigo = Rs!Codigo_Alumno
Else
MsgBox "El código de alumno es incorrecto"
Exit Sub
End If

Curso = InputBox("Ingrese el número de Curso del alumno")
If Curso = "" Then
MsgBox "Ingreso cancelado", vbExclamation, "Mensaje"
Deshabilitar
Exit Sub
End If

If Not Conectar() Then Exit Sub
sql = "select * from Presentismo where Codigo_Curso = '" & Curso & "'"
Set Rs = Cn.Execute(sql)
If Not Rs.EOF Then
CursoCodigo = Rs!Codigo_Curso
Else
MsgBox "El código de curso de alumno es incorrecto"
Exit Sub
End If

Fecha = InputBox("Ingrese la Fecha de Curso del alumno")
If Fecha = "" Then
MsgBox "Ingreso cancelado", vbExclamation, "Mensaje"
Deshabilitar
Exit Sub
Else
Nuevafecha = Format(Fecha, "mm/dd/yyyy")
End If

If Not Conectar() Then Exit Sub
sql = "select * from Presentismo where Fecha = '" & Nuevafecha & "'"
Set Rs = Cn.Execute(sql)
If Not Rs.EOF Then
Fechanueva = Rs!Fecha
Else
MsgBox "La fecha es incorrecta"
Exit Sub
End If

Por ejemplo, hago el debugueo desde acá apareciendomé todos los datos correctos consultados y guardados en las variables "Alumno, Curso, fecha nueva" y cuando llego al if del fín de archivo me salta al end if sin ponerme nada en los textboxes.

If Not Conectar() Then Exit Sub
sql = "select * from Presentismo where Codigo_Alumno = " & AlumnoCodigo & " and Codigo_Curso = '" & CursoCodigo & "' and Fecha = '" & Fechanueva & "'"
Set Rs = Cn.Execute(sql)
If Not Rs.EOF Then
txtCodigoa.Text = IIf(IsNull(Rs!Codigo_Alumno), "", Rs!Codigo_Alumno)
txtCodigoc.Text = IIf(IsNull(Rs!Codigo_Curso), "", Rs!Codigo_Curso)
txtFecha.Text = IIf(IsNull(Rs!Fecha), "", Rs!Fecha)
txtEstado.Text = IIf(IsNull(Rs!Estado), "", Rs!Estado)
Codigonuevo = AlumnoCodigo
Cursonuevo = CursoCodigo
fechaformato = Fechanueva
End If

habilitar

End Sub

Saludos!!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Problema con consulta sql

Publicado por pepe (20 intervenciones) el 01/12/2010 00:35:17
Te puede parecer una tonteria, pero si del if salta al end if es porque simplemente la consulta no tiene regisros.

Un problema podría ser los delimitadores para el campo Fecha, si dicho campo está definido como texto el uso del apostrofe ' es correcto, pero si es de tipo fecha los delimitadores deben ser # para access, otros DB como SQL usan otro. Ej: #01/01/2010#.

Aunque me temo que el problema es más profundo. Analicemos un momento el código:

- El usuario ingresa un código de alumno.
- Obtenemos todos los registros de "Presentismo" con el CodigoAlumno introducido.
- Almacenamos el valor de CódigoAlumno del primer registro (todos son iguales)

- El usuario ingresa el Curso.
- Obtenemos todos los registros con el curso introducido (PARA CUALQUIER ALUMNO)
- Almacenamos el valor de Curso del primer registro (todos son iguales)

- El usuario ingresa la Fecha.
- Obtenemos registros con la Fecha (PARA CUALQUIER ALUMNO Y CURSO)
- Almacenamos el valor de Fecha del primer registro (todos son iguales)

Finalmente realizamos una consulta solicitando los registros que COINCIDAN con los 3 datos proporcionados, pero puede no haber registros para el alumno pepe del curso 4 con fecha 10/10/2010.

No tengo claro el objetivo, espero haberte ayudado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema con consulta sql

Publicado por mart (6 intervenciones) el 01/12/2010 07:10:51
Hola!!!!. Hay registros que de hecho, los tengo en un listbox para fijarme el código de alumno, el curso y la fecha, para poder hacer la consulta y que me traiga los demás datos del alumno para mostrarlos en un textbox.
El objetivo es hacer una consulta sobre el estado de presentismo o ausentismo. Yo usé ese códigopero me aparecen vacíos los textboxes por más que que en las variables se guarden los mismos datos de los registros que están en las bases.

Las comillas dobles y simples en el campo fecha, me sirvieron para hacer el alta. No me trajeron problema.

-sql = "insert into Presentismo (Codigo_Alumno, Codigo_Curso, Fecha, Estado) values (" & cmbCodigoa & ", '" & txtCurso.Text & "', '" & Nuevafecha & "', '" & txtEstado.Text & "')"-

...eso sí, lo que me pareció extraño es que tuve que hacerle un format al dtpicker "mm/dd/yyyy" que usé en el formulario de altas, para colocar las fechas porque sql usa mes día año y el dt picker estaba configurado, día mes año. Lo que me llamó la atención que en la base, en vez de aparecerme como se formateó, (mes día año), me llega con la configuración del dtpicker, día mes año.

Saludos!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Problema con consulta sql

Publicado por mart (6 intervenciones) el 01/12/2010 07:43:53
Listo, solucionado. En este paso:

Fecha = InputBox("Ingrese la Fecha de Curso del alumno")
If Fecha = "" Then
MsgBox "Ingreso cancelado", vbExclamation, "Mensaje"
Deshabilitar
Exit Sub
Else
Nuevafecha = Format(Fecha, "mm/dd/yyyy")
End If

If Not Conectar() Then Exit Sub
sql = "select * from Presentismo where Fecha = '" & Nuevafecha & "'"
Set Rs = Cn.Execute(sql)
If Not Rs.EOF Then
Fechanueva = Rs!Fecha
' acá hay que volver formatear la fecha que trae de la base
Fechanueva = Format(Fechanueva, "mm/dd/yyyy")
Else
MsgBox "La fecha es incorrecta"
Exit Sub
End If

Saludos!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar