Estoy realizando un programa en el cual tengo que hacer una consulta, tanto por fecha como por hora y carácter al mismo tiempo. Para verificar disponiblilidad, y no se como hacer que el programa reconozca que en esa misma fecha caben varias horas... ¿no se si me explico? Y la verdad es que nunca he trabajado con lenguaje SQL... No se si alguien por favor me puede ayudar... Le estaré muy agradecido...
1 Respuesta
Respuesta de ktmexi
1
1
ktmexi, Soy desarrollador con tecnologias Microsoft desde el 2000
Bueno mira, si no he entendido mal tu consulta lo que deseas es realizar una consulta que traiga para una fecha dada todos los registros, ¿es así? De todas formas con la función que te voy a detallar podrías usarla la forma que más te sirva. Ejemplo: "Select * from TABLA where CAMPOFECHA >= cvdate('28/01/2008 00:00:00','dd/MM/yyyy hh:mm:ss') and CAMPOFECHA <= cvdate('28/01/2008 23:59:59','dd/MM/yyyy hh:mm:ss') Lo importante aquí es la función cvdate que tienes que indicarle la fecha y hora y elformato en que se encuentra.
Si bueno es más o menos haci, pues mira lo que necesito es hacer un programa para apartados y tengo que crear un botón que verifique que la fecha, la hora y el laboratorio estén libres pero no se como hacer para que el sistema reconozca que pueden haber varias horas dentro de esa fecha, es decir que no diga que no esta disponibla porque esa fecha ya esta en la base de datos, entonces que pase de la fecha a la hora... no se si me explico. Y bueno aplique lo que me decías pero no estoy seguro de que sea haci: SQL = "Select * from apartado where fecha >= cvdate('18/09/2008 00:00:00','dd/MM/yyyy hh:mm:ss') and CAMPOFECHA <= cvdate('31/09/2008 23:59:59','dd/MM/yyyy hh:mm:ss')" <span style="font-style: italic;"><span style="font-weight: bold;">If SQL.NoMatch Then</span></span> MsgBox "Disponible" Else MsgBox "No Disponible" End If Pero me tira un error en la parte que esta en negrita: diciéndome que se requiere un objeto. Espero me puedas ayudar porque como te había dicho nunca he trabajado con este lenguaje, pero si me interesa mucho aprender a manejarlo... muchas gracias por tu ayuda.
Pues mira, primero que nada falto sustituir justo luego del "and" en la consulta el CAMPOFECHA por "fecha". Ahora me quedó más clara la situación de lo que tu deseas hacer.. supongamos que tu quieres saber si para el día 18/09/2008 a las 15:00 para el laboratorio "5" ya exiswte un apartado. Entonces tu consulta seria algo así: SQL = "Select count(*) from apartado Where fecha = cvdate('19/08/2008 15:00:00','dd/MM/yyyy hh:mm:ss') AND laboratorio_id = 5 " Asumiendo que el campo que indica el laboratorio se llama "laboratorio_id" tu debes sustituir por tu nombre de campo. Esa consulta lo que hará será devolverte un "count" de cuantos registros se encontraron con dichos criterios, si tu consulta retorna un "0" quiere decir que para esa fecha, hora y laboratorio no existen registros y podrías realizar un apartado, si es mayor a "0" quiere decir que ya existe para dicha hora Variantes para la consulta, ya que no se cual es perido de tiempo que dura un apartado, pero supongamos que 1 apartado dura 1 hora, entonces no te interesa preguntar por los minutos, simplemente por la hora "15" entonces podrías hacer así.. SQL = "Select count(*) from apartado Where fecha = cvdate('19/08/2008 15','dd/MM/yyyy hh') AND laboratorio_id = 5" Presta atención en ese ejemplo que de la consulta del campo fecha saque los minutos y segundos Espero haber sido de ayuda, si así lo consideras por favor no olvides finalizar y puntuar la respuesta.
Bueno antes de todo muchas gracias por tu ayuda. Pues bien mira si aplique la información que me distes anteriormente pero no se si realmente puede funcionarme porque me da un error en la linea >>If SQL.NoMatch Then<< y el error es que se requiere un ebjeto en realidad no se que quiere decir eso, y por lo mismo no se si esta bien la rutina, no se si me puedas ayudar con esto. Y otra cosa que note entendí muy bien es que tu dices en la siguiente line: SQL = "Select count(*) from apartado Where fecha = cvdate('19/08/2008 15','dd/MM/yyyy hh') AND laboratorio_id = 5" bueno creo que es asi, que en el ampo fecha se consulten la fecha y la hora al mismo tiempo? Por favor dime si me equivoco. Y cvdate que es lo que hace. Mira te voy a decir como es que debería funcionar este boton; primero tendría que hacer una consulta primero por la fecha, luego dentro de esa fecha buscar horas disponibles y después los laboratorios disponibles... espero si me puedas ayudar y gracias en serio por tomarte el tiempo de hacerlo.
En esa consulta el cvdate puedes usarlo para preguntar tanto por fecha y hora como por fecha u hora por separado solo debes especificar el formato de lo que consultas, es decir que si quieres consultar por fecha y hora usas como formato dd/MM/yyyy hh:mm:ss si deseas sola la fecha usas la primer parte como formato y si deseas consultar una hora en particular usas como formato la segunda parte. Al where de la consulta puedes agregarle tantos and como desees, para poder agregar a la consulta ademas de la fecha y hora una condición para consultar también por el laboratorio.. etc etc.. Bueno amigo, espero haya podido ayudarte, te recomiendo que bajes algún manual de sentencias sql y algo de programación.. por ejemplo te recomiendo unos libros muy sencillos de entender con muchos ejemplo, bien fácil para agarrarle la mano a estas cosas.. Aprenda VB como si estuviera en primero. El nombre parece algo tonto pero de verdad ayuda. No olvides finalizar y puntuar la respuesta.