Problema con Fecha en SQL
Me explico, brevemente Pido el año en un combobox y el Mes en otro combobox, junto las fechas por las consultas son mensuales y hago lo siguente
ldFecha1 = CtoD("01/" + pcValMes + "/" + Alltrim(Str(pnVarAno)))
ldFecha2 = CtoD("31/" + pcValMes + "/" + Alltrim(Str(pnVarAno)))
Luego de esto realizo lo siguiente Consulta SQL para mostrarla en un Grid, se que son las fechas por que realizo la consulta sin las fechas y veo en el grid la consulta.
ThisForm.grdInventario.RecordSource = 'Select Movi_ti_mo, Movi_bo_or, Movi_arti,' + ;
'Movi_glosa, Movi_cant, Movi_Prec, Movi_fecha From hfmovi Where movi_bo_or = pcVarBodega and movi_ti_mo = 7 and hfmovi.movi_fecha between ' + dtoc(ldFecha1) + ' and ' + dtoc(ldFecha2) + ' into cursor grdInventario'
Espero puedan ayudarme, muchas gracias
ldFecha1 = CtoD("01/" + pcValMes + "/" + Alltrim(Str(pnVarAno)))
ldFecha2 = CtoD("31/" + pcValMes + "/" + Alltrim(Str(pnVarAno)))
Luego de esto realizo lo siguiente Consulta SQL para mostrarla en un Grid, se que son las fechas por que realizo la consulta sin las fechas y veo en el grid la consulta.
ThisForm.grdInventario.RecordSource = 'Select Movi_ti_mo, Movi_bo_or, Movi_arti,' + ;
'Movi_glosa, Movi_cant, Movi_Prec, Movi_fecha From hfmovi Where movi_bo_or = pcVarBodega and movi_ti_mo = 7 and hfmovi.movi_fecha between ' + dtoc(ldFecha1) + ' and ' + dtoc(ldFecha2) + ' into cursor grdInventario'
Espero puedan ayudarme, muchas gracias
Hola:
Espero entender lo que quieres hacer y de alguna manera el por que no funciona tu consulta. Primero verifica el tipo de datos que te devuelven los comboxes, si es numerico debes forzar la conversion a caracter con la funcion STR y ademas indicarle el numero de digitos que debe considerar porque si no se lo indicas obtienes resultados inesperados. Por ejemplo, para el año:
varAno=2005 (numerico)
varAnoc=str(varAno,4) (caracter, tomando los 4 digitos)
para el mes:
varmes=05 (numerico)
varmesc=str(varmes,4) (caracter, tomando los 2digitos)
entoces la cadena quedaria:
idfecha=ctod("01/"+varmesc+"/"+varAnoc)
Asà puedes ir construyendo tus cadenas para aplicarle la funcion ctod()
Tambien checa el tipo de evento que utilizas para tomar el valor que te regresa el combo. Yo normalmente utilizo VALID pues me parece que es el que funciona mejor
Por otro lado, para el tipo de aplicacion que pretendes realizar con las fechas te recomiendo mejor utilizar el control spinner, en lugar del combobox.
Espero haberte podido ayudar, suerte
Espero entender lo que quieres hacer y de alguna manera el por que no funciona tu consulta. Primero verifica el tipo de datos que te devuelven los comboxes, si es numerico debes forzar la conversion a caracter con la funcion STR y ademas indicarle el numero de digitos que debe considerar porque si no se lo indicas obtienes resultados inesperados. Por ejemplo, para el año:
varAno=2005 (numerico)
varAnoc=str(varAno,4) (caracter, tomando los 4 digitos)
para el mes:
varmes=05 (numerico)
varmesc=str(varmes,4) (caracter, tomando los 2digitos)
entoces la cadena quedaria:
idfecha=ctod("01/"+varmesc+"/"+varAnoc)
Asà puedes ir construyendo tus cadenas para aplicarle la funcion ctod()
Tambien checa el tipo de evento que utilizas para tomar el valor que te regresa el combo. Yo normalmente utilizo VALID pues me parece que es el que funciona mejor
Por otro lado, para el tipo de aplicacion que pretendes realizar con las fechas te recomiendo mejor utilizar el control spinner, en lugar del combobox.
Espero haberte podido ayudar, suerte
El problema esta en la fecha hize le misma consulta en la ventana de comandos, pero con este formato de fecha {^2005-01-31}, si te fijas hay un simbolo delante de la fecha, sin este simbolo la consulta no funciona y no sabria explicarte por que, pero ese es el motivo
