SoloCodigo
Programación General => Visual Basic 6.0 e inferiores => Mensaje iniciado por: Omarrpat en Miércoles 28 de Mayo de 2003, 17:04
-
Que tal amigo tengo el siguiente problema con sql aplicado en un recordset en vb, el sql enseguida:
strCadGenerica = "SELECT tblNotificaciones.IDNotificacion, tblNotificaciones.Fecha, tblAfectado.Edad, "
strCadGenerica = strCadGenerica & "tblAfectado.IDSexo, tblAfectado.IDEstado, tblNotificaciones.IDDiaSemana, "
strCadGenerica = strCadGenerica & "tblNotificaciones.IDSitio, tblNotificaciones.EdadAgresor, tblNotificaciones.IDSexo, "
strCadGenerica = strCadGenerica & "tblNotificaciones.IDServicioAtencion, tblNotificaciones.AvisoMinisterioPublico "
strCadGenerica = strCadGenerica & "FROM tblAfectado INNER JOIN tblNotificaciones ON tblAfectado.IDAfectado = tblNotificaciones.IDAfectado "
'strCadGenerica = strCadGenerica & "WHERE (((tblNotificaciones.Fecha)>=#" & dtFechIni & "#) AND ((tblNotificaciones.Fecha)<=#" & dtFechFin & "#));"
'strCadGenerica = strCadGenerica & "WHERE (((tblNotificaciones.Fecha)>=#" & dtFechIni & "# And (tblNotificaciones.Fecha)<=#" & dtFechFin & "#));"
strCadGenerica = strCadGenerica & "WHERE ( ((tblNotificaciones.Fecha)>=#" & dtFechIni & "#) And ((tblNotificaciones.Fecha)<=#" & dtFechFin & "#) );"
este trabaja correctamente en acces pero cuando lo parametrizo me da problemas, ademas si cambio el And por un Or da resultados, pero si lo dejo con un And, el recordset contiene 0 registros.
necesito la ayuda urgente, este codigo es para seleccionar en un periodo de tiempo, entre fechas es decir.
gracias por su ayuda.:ayuda:
-
Hola Omarrpat:
A ver si te ayudo...
Lo primero es que colocaste tres veces la clausula WHERE, solamante necesitas colocarla una vez, no más! ahh, y quítale el punto y coma al final de la sentencia (";").
Lo segundo es que debes cerciorarte de que las variables "fechIni" y "FechFin" se hayan declarado de typo Fecha; Lo puedes hacer así:
fechaini = date()
fechafin = date()
o.... en la sentencia SQL puedes darle formato a la variable así:
"Select ..... From .... Where tabla.campo >= #" & Format(FechIni, "dd/mm/yyyy") & "# and tabla.campo <= #" & Format(FechFin, "dd/mm/yyyy") & "#"
Estudia y Consulta más acerca de la función Format(), es muy buena.
Espero te sirva....
....
-
Hola:
yo creo que:
(((tblNotificaciones.Fecha)>=#" & dtFechIni & "#) AND ((tblNotificaciones.Fecha)<=#" & dtFechFin & "#));"
puedes resumirlo con
tblNotificaciones.Fecha Between #" & dtFechIni & "# AND #" & dtFechFin & "#;"
no estoy muy seguro con el # ; no he trabajado con Access en SQL Server le pongo ' = apostrofe para indicarle intervalo de fechas, revisa y a ver como te va.
Saludos;
-
Quedo igual, pero es muy raro en ocaciones trabaj y otras no, creo que el rs no se refresca es decir si cierro el reporte, y luego lo vuelvo a abrir, aparece el mismo , es recorset no se refresca, y deberia de hacerlo :think:
pero muchas gracias por tratar de hecharme la mano
:beer:
lo curioso es que las consultas si las realizo con fechas en especifico, no con variables trabajan bien :question:
como
Between #01/01/2003# AND #28/02/2003#
-
Entonces despues de generar la sentencia SQL refresca el RecordSet con .refresh o .requery
Así se actualiza el recordset que necesitas o depura el programa paso a paso con la tecla F8 y verifica el contenido de las variables tipo fecha que estas trabajando, ya que puede ser que cuando ejecutas por primera vez el reporte, las variables tengan el contenido que necesites, pero cuando lo ejecutes por segunda vez, sigan teniendo el mismo contenido..... No sé, aveces pasa!
Suerte!!!!!:suerte: