• Jueves 2 de Mayo de 2024, 05:33

Autor Tema:  busqueda de una fecha textbox  (Leído 6832 veces)

chispi26

  • Miembro activo
  • **
  • Mensajes: 28
    • Ver Perfil
busqueda de una fecha textbox
« en: Martes 26 de Enero de 2010, 19:56 »
0
hola mi duda es sobre busquedas estoy haciendo un sistema para un negocio de ropa,en una pantalla quiero mostrar todas las ventas de un dia es decir por una fecha,para ello uso un textbox donde ingreso una fecha a buscar y un listbox donde mostrar todos los registros referido a esa fecha, para ello uso select sql donde muestro en un cursor todos los campos referido a esa fecha donde el valor del textbox es igual a la fecha y el cursor se visualiza en el listbox en rowsource los campos de la tabla ventas son: codigo, fecha que es tipo dato,articulo y importe. Ejecuto el formulario funciona bien el asunto es que cuando la fecha no se encuentra quiero indicarle con un mensaje de que no se encotro esa fercha se me ocurrio usar un seek pero me tira error de "cannot access the selected table en el cursor del select" si alguien sabe darme un pista al asunto desde ya gracias salu2 ale.

aca va parte del codigo del boton  buscar

eMessageTitle2 = 'Sistema Winkel 2010'
eMessageText2 = 'No se encontro ventas a esa fecha'

nDialogType2 = 0 + 64

CLOSE TABLES all
CLOSE DATABASES all
USE ventas EXCLUSIVE
SET ORDER TO tag fecha
fecha=thisform.text1.Value
SEEK fecha
IF FOUND()
thisform.list1.rowsource =""
select fecha,codigo,articulo,importe from ventas where  thisform.text1.value=fecha ORDER BY fecha into cursor xx
thisform.list1.rowsource="xx"
thisform.list1.Refresh
ELSE
MESSAGEBOX(eMessageText2, nDialogType2, eMessageTitle2)
ENDIF

propiedades del listbox

columncount= 4

columnwidths=100,100,100,100

rowsourcetype=6-fields

ahi en imagenes subo lo que me tira la pantalla cuando se encuentra la fecha  muestra los registros en la segunda imagen cuando la fecha no se encuentra tira ese error nada mas salu2



 B)[attachment=1:2jumwlxk]resultado1.jpg[/attachment:2jumwlxk]
El mensaje contiene 2 archivos adjuntos. Debes ingresar o registrarte para poder verlos y descargarlos.

arielb

  • Moderador
  • ******
  • Mensajes: 771
  • Nacionalidad: pa
    • Ver Perfil
    • http://coder-pa.blogspot.com
Re: busqueda de una fecha textbox
« Respuesta #1 en: Martes 26 de Enero de 2010, 20:59 »
0
Hola bienvenido al foro.
Bueno por el error "cannot access the selected table en el cursor del select", quiere decir que no existe el cursor al que está apuntando

Código: Text
  1. IF FOUND()
  2.      thisform.list1.rowsource =""
  3.      select fecha,codigo,articulo,importe from ventas where thisform.text1.value=fecha ORDER BY fecha into cursor xx
  4.       thisform.list1.rowsource="xx"
  5.       thisform.list1.Refresh
  6. ELSE
  7.     MESSAGEBOX(eMessageText2, nDialogType2, eMessageTitle2)
  8. ENDIF
  9.  

Observando el código el cursor que le estás asignando al list lo estás haciendo si la condición se cumple cuando no se cumple ya no existe porque lo estás cerrando con el close table all, y ya las propiedades del list le asignaste los valores y sigue haciendo referencia.
"Porque de tal manera amó Dios al mundo que dio a su hijo unigénito para que todo aquél que en él crea no se pierda mas tenga vida eterna"
Juan 3:16

http://coder-pa.blogspot.com

chispi26

  • Miembro activo
  • **
  • Mensajes: 28
    • Ver Perfil
Re: busqueda de una fecha textbox
« Respuesta #2 en: Miércoles 27 de Enero de 2010, 01:54 »
0
y que le faltaria arreglar en este caso ya que hace referencia a un cursor el problema surge cuando hago mas de una busqueda sobre todo si no se encuentra la fecha a buscar puede ser que le falte alguna modificacion al codigo del boton buscar si alguien me puede ayudar desde ya gracias y gracias por la primera respuesta que por lo me menos me aclaran a que hace referencia a ese error ,salu2 ale.

arielb

  • Moderador
  • ******
  • Mensajes: 771
  • Nacionalidad: pa
    • Ver Perfil
    • http://coder-pa.blogspot.com
Re: busqueda de una fecha textbox
« Respuesta #3 en: Miércoles 27 de Enero de 2010, 15:30 »
0
Hay otras maneras pero para no realizar tantos cambios en el código intenta con esto.

Código: Text
  1. IF FOUND()
  2.      thisform.list1.rowsource =""
  3.      select fecha,codigo,articulo,importe from ventas where thisform.text1.value=fecha ORDER BY fecha into cursor xx
  4.       thisform.list1.rowsource="xx"
  5.       thisform.list1.Refresh
  6. ELSE
  7.     thisform.list1.rowsource=""
  8.       thisform.list1.Refresh
  9.     MESSAGEBOX(eMessageText2, nDialogType2, eMessageTitle2)
  10. ENDIF
  11.  
"Porque de tal manera amó Dios al mundo que dio a su hijo unigénito para que todo aquél que en él crea no se pierda mas tenga vida eterna"
Juan 3:16

http://coder-pa.blogspot.com

chispi26

  • Miembro activo
  • **
  • Mensajes: 28
    • Ver Perfil
Re: busqueda de una fecha textbox
« Respuesta #4 en: Miércoles 27 de Enero de 2010, 17:23 »
0
gente la idea esta bien se me ocurrio asi tambien la forma de solucionarlo pero sigue tirando ese error cuando no se encuentra en la tabla la fecha a buscar por eso aca en zip paso la tabla junto al formulario para revisarlo igualmente gracias por su ayuda salu2 ale.
El mensaje contiene 1 archivo adjunto. Debes ingresar o registrarte para poder verlo y descargarlo.

arielb

  • Moderador
  • ******
  • Mensajes: 771
  • Nacionalidad: pa
    • Ver Perfil
    • http://coder-pa.blogspot.com
Re: busqueda de una fecha textbox
« Respuesta #5 en: Jueves 28 de Enero de 2010, 05:31 »
0
Bueno estuve viendo el código con un poco más de calma y encontré ciertas cosas

en la misma pantalla estás creando un indice y a la ves lo aplicas para hacer un seek y después haces una consulta.
En temas de rendimiento no es lo más óptimo dado que a medida que tús datos vallan creciendo y que la aplicación tenga que hacer todo eso la hará más lenta, pues son imnecesarios hacerlos todos.
Siguiendo con el tema de renimiento es bueno crear índices, aunque no vallas a usar seek, para búsquedas aunque sea por sql, pero no en el mismo proceso.

Otro punto es que estabas usando una variable que se confundía con el nombre del campo de la tabla, dado a que visual fox no te obliga a declarar las variables daba cabida a ese error.
Lo otro es que la consulta estaba mal elaborada, de la forma que estaba siempre te iba a traer todos los registros y no iba hacer el filtro de la fecha en especifico.
Se le agregó algunas instrucciones, que bueno tú verás en que formato te conviene más trabajar las fecha con set date

Te dejo el código que te puede funcionar

Código: Text
  1. Close Databases All
  2. Use ventas Exclusive
  3.  
  4. txtfecha=Thisform.text1.Value
  5. SET DATE BRITISH
  6. SET EXACT ON
  7. SET SAFETY ON
  8.  
  9. If !Empty(txtfecha)  Then
  10.  
  11.     Select fecha,codigo,articulo,importe From ventas Where fecha=txtfecha Order By fecha Into Cursor xx
  12.     Select xx
  13.     If Reccount() == 0 Then
  14.         Messagebox(eMessageText2, nDialogType2, eMessageTitle2)
  15.     ENDIF
  16.     thisform.list1.rowsource="xx"
  17.                 thisform.list1.Refresh
  18. Else
  19.     Messagebox("Debe colocar una fecha válida")
  20. Endif
  21.  
"Porque de tal manera amó Dios al mundo que dio a su hijo unigénito para que todo aquél que en él crea no se pierda mas tenga vida eterna"
Juan 3:16

http://coder-pa.blogspot.com

chispi26

  • Miembro activo
  • **
  • Mensajes: 28
    • Ver Perfil
Re: busqueda de una fecha textbox
« Respuesta #6 en: Jueves 28 de Enero de 2010, 06:40 »
0
primero gracias por la aclaracion en realidad poco o casi nada uso el select sql estaba acostubrado a usar el seek para un solo dato pero aca estamos hablando de visualizar todas las ventas de un dia sobre una fecha hace rato que uso visual fox en realidad me acostubre en un principio a programar en fox 2.6 pero veo que las cosas en visual son distintas y todavia me falta mucho por aprender,gracias por tu aporte probare el codigo, unas dos dudas mas si yo quiero mandar a imprimir lo que visualizo en el listbox usando un message box que digan en caso de encontrar y visualizar la fecha desea imprimirlo o no se supone que tengo que realizar un reporte y llamar a ese reporte con alguna instruccion o hay un camino mas simple, y mi ultima duda hablando de fechas yo en una pantalla deseo saber las ventas mensuales decir el total de lo que se vendio en un mes en ese caso se deberia hacer algun compracion con alguna fecha o en base a un mes determinado con un combobox por ejemplo al seleccionar la opcion mayo visualize todas las ventas de mayo eso es todo salu2 ale.

arielb

  • Moderador
  • ******
  • Mensajes: 771
  • Nacionalidad: pa
    • Ver Perfil
    • http://coder-pa.blogspot.com
Re: busqueda de una fecha textbox
« Respuesta #7 en: Jueves 28 de Enero de 2010, 16:40 »
0
Bueno lo más sencillo y rápido sería que crearas un reporte y que lo invoques desde código.
Como ya tienes un cursor abierto solo haces que el reporte apunte a ese cursor y te trae los datos que fueron encontrados según el filtro de la fecha.
Me parece que podrías poner un botón  no visible, que diga Imprimir, debajo del que dice "Mostrar resultado", y si el reccount() es mayor a cero lo pones visible.
Para obtener resultados en un rango de fecha puedes usar la función between()
que puede ser algo así

Código: SQL
  1. SELECT SUM(IMPORTE) FROM VENTAS WHERE BETWEEN(FECHA,CTOD('01/07/2009'),CTOD('30/07/2009'))
  2.  

Me parece que si usas un combo limitas al usuario que las consultas sean del mes en específico, y no por periodos, al menos que le pongas las dos opciones, existe por ahí una clase para vfp de un datepicker.
Lo digo porque a los encargados de ver resultados y esas cosas les gusta generar reportes por periodos y no solo de un mes.
Es decir pueden tomar un trimestre o un semestre para realizar comparaciones con años anteriores, o comparaciones con el primer trimestre con el actual, cosas así.

Saludos
"Porque de tal manera amó Dios al mundo que dio a su hijo unigénito para que todo aquél que en él crea no se pierda mas tenga vida eterna"
Juan 3:16

http://coder-pa.blogspot.com

chispi26

  • Miembro activo
  • **
  • Mensajes: 28
    • Ver Perfil
Re: busqueda de una fecha textbox
« Respuesta #8 en: Jueves 28 de Enero de 2010, 18:34 »
0
gracias sobre el control date picker lo ubico en visual basic pero nunca lo escuche hablar en visual foxpro y como añadirlo al form ademas de algun ejemplo el codigo tuyo es interesante el combobox se me ocurrio pq uso un combo para el mes y el otro para el año de modo si elijo mayo del 2009 me muestre todas las ventas de ese mes y año en un listbox ya que en un principio si tengo que mostrar todas las ventas se me olvido el detalle del año obviaente no sirve el codigo que se me ocurrio pq tendria que actualizar el codigo a cada rato, mira generalmente todo lo que se vende se hace a mano en una planilla hay una planilla para informar lo que se vendio en cada dia y otra para el mes en gral es un negocio chico de ropa no tiene tanta complejidad en ese sentido ahora si fuera otro tipo de negocio la cosa se complica mas en un buen punto de vista lo tuyo  cualq otra propuesta avisame salu2 ale.

arielb

  • Moderador
  • ******
  • Mensajes: 771
  • Nacionalidad: pa
    • Ver Perfil
    • http://coder-pa.blogspot.com
Re: busqueda de una fecha textbox
« Respuesta #9 en: Jueves 28 de Enero de 2010, 21:19 »
0
"Porque de tal manera amó Dios al mundo que dio a su hijo unigénito para que todo aquél que en él crea no se pierda mas tenga vida eterna"
Juan 3:16

http://coder-pa.blogspot.com

chispi26

  • Miembro activo
  • **
  • Mensajes: 28
    • Ver Perfil
Re: busqueda de una fecha textbox
« Respuesta #10 en: Viernes 29 de Enero de 2010, 01:55 »
0
mira estuve analizando el problema lo del combo es una idea muy practica ya que a l seleccionar el mes y año me muestra todas las ventas ordenados por fecha por ejemplo si el combo 1 elijo enero y el año yo yo declare el combo 2 hasta el 2020 aplicando la idea que me pasaste usando between para saber mostrar un dato en base a un rango en este caso si elijo enero 2009 el rango estaria entre el 01/01/09 y el 31/01/09 el control date picker es muy utilizado para hacer una agenda o recordatorio de algo pero lo que no ubico son las propiedades sobre lo que seleccionas en una mes dia y año seria barabro poner ejemplos de date picker por lo pronto realizare el programa de lo que te avise y te muestro los resultados en en una para que se verifique si falta alguna cosa salu2 ale.