Browse no muestra el resultado

Sr. Experto:
Primero gracias por la ayuda con la pregunta acerca de las variables, esta vez mi pregunta es la siguiente:
Tengo un formulario(form1), con dos cuadros de texto (text1 y text2), dos botones (command1 y command2), y varias etiquetas (label1, label2, l..., labeln), lo que quiero hacer en este formulario es una consulta en una tabla(tabla1) en un determinado rango de fechas.
El código que llevo es:
form1:load
use t_movimientos
private var1,var2 as string
var1=fecha
var2=fecha
set order to fecha
text1 y text2:
inputmask=99/99/99
date format=11 -dma
command1:click
browse all for dtoc(fecha) >= 'var1' and dtoc(fecha) <= 'var2' field fecha, orden_pago, nit_ben, detalle, valor
command2:click
close tables
thisform.release
Resumiendo lo que quiero es hacer una consulta entre unos valores(fechas) que defina el usuario y me muestre esos resultados, si me puedes ayudar a determinar en que parte del código estoy cometiendo algún error me seria muy útil, gracias de antemano
Respuesta
1
Intenta con
Browse all for between(fecha, var1, var2) field fecha, orden_pago, nit_ben, detalle, valor
Listo, ya cambie el procedimiento en el command1, pero ahora me aparece que no encuentra la var1, al ver esto, establecí las variables en el command1, pero ahora por más que ponga la fecha que ponga me muestra el mismo rango de fechas, que puede estar fallando, gracias de ante mano...
Eso sucede mi hermano porque tienes declarada las variables fuera de alcance.
Decláralas y asígnales valor en el evento click, allí mismo donde invocas el browse:
Local var1 as date, var2 as date
var1=thisform.text1.value
var2=thisform.text2.value
Browse all for between(fecha, var1, var2) field fecha, orden_pago, nit_ben, detalle, valor
saludos
Listo ya pasa las variables con este ultimo código, pero ahora me aparece "incompatibilidad entre el tipo de operador y el tipo de operando", y según el depurador de visual foxpro, dice que el error esta en el ultimo renglón de código.
browse all for between(fecha, var1,var2) field fecha, orden_pago, nit_ben, detalle, valor
no es por los nombres de los campos a mostrar por que ya probe con solo fecha, yo creeria que es en "browse all for between", cual crees que sea el error...
Gracias de antemano
Ese error significa que estamos comparando peras con manzanas.
Por ejemplo si el campo "fecha", no es de tipo fecha realmente. Verifica eso.
Claro que el campo es de tipo fecha, en el diseñador de tablas dice:
Nombre:fecha
Tipo:fecha
Ancho:8
Decimal:
Indice:?
Ademas, no CREO que sea por eso, sino que al mandar buscar la fecha el busca una fecha, pero en la tabla los tiene almacedos como carácter, podría ser una solución agregar el comando dtoc en algún lado.
Gracias de ante mano
Se contradice tu descripción.
Dices qué el campo es de tipo fecha, luego dices que los datos son de tipo carácter (?)
Mira, lo que ue trataba de explicar es que la tabla los tiene almacenados como tipo fecha, pero que tal vez, existe la posibilidad que al mandarla buscar como yo quiero el la busque como una cadena de texto y no como una fecha más.
Como te preguntaba anteriormente es posible que en algún lado falte un DTOC
En efecto puedes buscar por fecha en formato de texto. Pero debes hacer la transformación de fecha a texto, tanto en los textbox, como en el campo de tu tabla.
Yo estoy asumiendo que:
1. Estas metiendo fechas (no fechas en formato texto) en ambos textbox.
2. Que el campo fecha en tu tabla, es en realidad un dato en formato fecha.
3. Que estás teniendo presente que debes meter la fecha en el mismo formato (día-mes-año o año-mes-día o mes-día-año, etc) que tienes en tu campo fecha de la tabla.
Si estas tres premisas son correctas, avísame.
Tienes razón en la 2 y 3, pero la primera no te entiendo "1. Estas metiendo fechas (no fechas en formato texto) en ambos textbox." yo estoy metiendo o tratando de meter fechas en ambos textbox para generar un "lapso de tiempo", quedo atento a tus recomendaciones, De ante mano muchas gracias
En el punto 1 me refiero a que si tus dos controles textbox, los estas llenando con información de tipo fecha.
Para asegurarnos de esto, pongamos en el init del form:
thisform.text1.value=ctod("  /  /    ")
thisform.text2.value=ctod("  /  /    ")
ó
thisform.text1.value=date()
thisform.text2.value=date()
Es decir INICIALIZAMOS el valor de ambos controles con valores tipo fecha.
Avísame
Ya no genera ningún error, excepto lo que te comentaba alguna vez que ponga la fecha que ponga me sigue apareciendo el mismo rango de fecha:
Te reenvío todo el código que llevamos:
Formulario:
Init:
thisform.text1.value=ctod("  /  /    ")
thisform.text2.value=ctod("  /  /    ")
load:
use t_movimientos
private var1,var2 as string
var1=fecha
var2=fecha
set order to fecha
browse normal
text1 y 2:
dateformat:11 - DMA
inputmask:99/99/99
command1:
private var1,var2 as string
var1=fecha
var2=fecha
browse all for between(fecha, var1,var2) field fecha, orden_pago, nit_ben, detalle, valor
command2:
close tables
thisform.release
Esto es lo que llevo, pero pues a mi parecer y a riego de equivocarme el error esta en la configuración del text1 y 2, no c puede que yo tenga razón como puede que no.
Gracias de ante mano
Cambia El Browse por:
--------------
select fecha,orden_pago,nit_ben,detalle,valor;
from t_movimientos;
where between(fecha, var1,var2);
into Cursor MiRango
select MiRango
Browse
-----------
Avísame
Cambie los datos del command1 de la siguiente forma:
private var1,var2 as string
var1=fecha
var2=fecha
select fecha,orden_pago,nit_ben,detalle,valor;
from t_movimientos;
where between(fecha, var1,var2);
into Cursor MiRango
select MiRango
browse
Ademas el dateformat:10 - MDA lo cambie por causa del orden de la fecha, ahora me aparece el mismo rango que te comentaba anteriormente, pero solo muestra dos registros, ya no c me ocurre que más pueda ser.
Oook.
Entonces envíame el proyecto. Me indicas que form es y lo reviso en mi casa.
¿Te parece amigo?
Me parece que no es necesario el proyecto completo, sino solo el form del problema y la tabla que contenga los datos, pero para esto seria conveniente que me dieras el correo, para poder enviar:
Los dos Formularios que se crean y las tres partes de la Tabla de Datos.
Gracias de antemano.
Sr. Experto:
Ya debe estar la tabla y el formulario en el correo.
Agradezco de antemano la ayuda
Allí te mandé una primera respuesta. Habría que arreglar eso primero.
Ok ya t respondí por el correo
Ya te respondí.
Muchas gracias por todo, cualquier duda que me surja con respecto a este tema, te la comunicare por correo. Eres un maestro en este tema y nuevamente muchas gracias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas