Formulario para selección de informes
Publicado por Nelson Miltos (9 intervenciones) el 11/04/2012 19:57:41
Muy buenas desde ya agradezco por sus comentarios, soy novato y me encuentro programando un formulario para seleccion de informes:
Tratare de explicar como funciona y con que objetos trabajo
Objetos
a) list ( se visualiza el nombre de las tablas al cual deseamos consultar los datos)
b) combo box ( como rangos de inicio y fin )
c) boton de comando ( aceptar y cerrar )
d) grupo de opciones ( el cual permite ser odenado por codigo o descripcion)
Funcion
--------------
En tiempo de ejecucion en el campo list despliega los nombres de la tablas al cual deseamos consultar, al posicionarnos en una de ella ya en los combo box de inicio y fin despliega el primer y ultimo valor de cada tabla por si queramos claro esta imprimir todo el contenido de la tabla, al darle aceptar me impirme en pantalla el contenido en un listado.
Obervacion: El formulario me funciona bien cuando el valor de mi pk es numerico
Problema: no me funciona con cadena de caracteres, no importanto si los valores tambien son 1, 2. 4, 5; tambien el caso que detallo a continuacion
Tabla PROVEEDORES
CAMPOS
RUC NOMBRE
13815865 HUGO ACUÑA
6325879 FERNANDO MIRANDA
TABLA USUARIO
CAMPOS
USUARIO NOMBRE
Hacuna HUGO ACUÑA
Pcuevas PABLO CUEVAS
OBJETO LIST 1 EVENTO CLICK
--------------------------------------------------
IF ALLTRIM( this.Value) = "proveedor" && pregunta si el item seleccionado es igual a ciudad
thisform.combo1.Value = ""
thisform.combo2.Value = ""
thisform.combo1.RowSource = "proveedor.nomraz,ruc" && define los valores del combo con los campos de la tabla ciudad
thisform.combo1.RowSourceType = 6
thisform.combo2.RowSource = "proveedor.nomraz,ruc"
thisform.combo2.RowSourceType = 6
thisform.combo1.ListIndex = 1 && al primer combo le asigna el primer valor del combo
thisform.combo2.ListIndex = thisform.combo2.ListCount && al segundo combo del ultimo elemento cargado en el combo
endif
IF ALLTRIM( this.Value) = "usuario" && pregunta si el item seleccionado es igual a ciudad
thisform.combo1.Value = ""
thisform.combo2.Value = ""
thisform.combo1.RowSource = "usuario.nombre,clave" && define los valores del combo con los campos de la tabla ciudad
thisform.combo1.RowSourceType = 6
thisform.combo2.RowSource = "usuario.nombre,clave"
thisform.combo2.RowSourceType = 6
thisform.combo1.ListIndex = 1 && al primer combo le asigna el primer valor del combo
thisform.combo2.ListIndex = thisform.combo2.ListCount && al segundo combo del ultimo elemento cargado en el combo
ENDIF
thisform.Refresh
OBJETO BOTOM ACEPTAR
---------------------
IF ALLTRIM( thisform.list1.value) = "proveedor"
IF thisform.VOrden.value = 1
SELECT * FROM proveedor;
WHERE proveedor.ruc between thisform.combo1.value AND thisform.combo2.value;
ORDER BY proveedor.ruc;
into cursor tmp
ELSE
SELECT * FROM proveedor;
WHERE proveedor.ruc between thisform.combo1.value AND thisform.combo2.value;
ORDER BY proveedor.nomraz;
into cursor tmp
ENDIF
ENDIF
IF ALLTRIM( thisform.list1.value) = "usuario"
IF thisform.VOrden.value = 1
SELECT * FROM usuario;
WHERE usuario.clave between thisform.combo1.value AND thisform.combo2.value;
ORDER BY usuario.clave;
into cursor tmp
ELSE
SELECT * FROM usuario;
WHERE usuario.clave between thisform.combo1.value AND thisform.combo2.value;
ORDER BY usuario.nombre;
into cursor tmp
ENDIF
ENDIF
IF _tally = 0
= MESSAGEBOX( "No existen datos para listar", 0+64+0, "Informacion del Sistema")
ELSE
thisform.salida ()
ENDIF
SELECT tmp
USE
Tratare de explicar como funciona y con que objetos trabajo
Objetos
a) list ( se visualiza el nombre de las tablas al cual deseamos consultar los datos)
b) combo box ( como rangos de inicio y fin )
c) boton de comando ( aceptar y cerrar )
d) grupo de opciones ( el cual permite ser odenado por codigo o descripcion)
Funcion
--------------
En tiempo de ejecucion en el campo list despliega los nombres de la tablas al cual deseamos consultar, al posicionarnos en una de ella ya en los combo box de inicio y fin despliega el primer y ultimo valor de cada tabla por si queramos claro esta imprimir todo el contenido de la tabla, al darle aceptar me impirme en pantalla el contenido en un listado.
Obervacion: El formulario me funciona bien cuando el valor de mi pk es numerico
Problema: no me funciona con cadena de caracteres, no importanto si los valores tambien son 1, 2. 4, 5; tambien el caso que detallo a continuacion
Tabla PROVEEDORES
CAMPOS
RUC NOMBRE
13815865 HUGO ACUÑA
6325879 FERNANDO MIRANDA
TABLA USUARIO
CAMPOS
USUARIO NOMBRE
Hacuna HUGO ACUÑA
Pcuevas PABLO CUEVAS
OBJETO LIST 1 EVENTO CLICK
--------------------------------------------------
IF ALLTRIM( this.Value) = "proveedor" && pregunta si el item seleccionado es igual a ciudad
thisform.combo1.Value = ""
thisform.combo2.Value = ""
thisform.combo1.RowSource = "proveedor.nomraz,ruc" && define los valores del combo con los campos de la tabla ciudad
thisform.combo1.RowSourceType = 6
thisform.combo2.RowSource = "proveedor.nomraz,ruc"
thisform.combo2.RowSourceType = 6
thisform.combo1.ListIndex = 1 && al primer combo le asigna el primer valor del combo
thisform.combo2.ListIndex = thisform.combo2.ListCount && al segundo combo del ultimo elemento cargado en el combo
endif
IF ALLTRIM( this.Value) = "usuario" && pregunta si el item seleccionado es igual a ciudad
thisform.combo1.Value = ""
thisform.combo2.Value = ""
thisform.combo1.RowSource = "usuario.nombre,clave" && define los valores del combo con los campos de la tabla ciudad
thisform.combo1.RowSourceType = 6
thisform.combo2.RowSource = "usuario.nombre,clave"
thisform.combo2.RowSourceType = 6
thisform.combo1.ListIndex = 1 && al primer combo le asigna el primer valor del combo
thisform.combo2.ListIndex = thisform.combo2.ListCount && al segundo combo del ultimo elemento cargado en el combo
ENDIF
thisform.Refresh
OBJETO BOTOM ACEPTAR
---------------------
IF ALLTRIM( thisform.list1.value) = "proveedor"
IF thisform.VOrden.value = 1
SELECT * FROM proveedor;
WHERE proveedor.ruc between thisform.combo1.value AND thisform.combo2.value;
ORDER BY proveedor.ruc;
into cursor tmp
ELSE
SELECT * FROM proveedor;
WHERE proveedor.ruc between thisform.combo1.value AND thisform.combo2.value;
ORDER BY proveedor.nomraz;
into cursor tmp
ENDIF
ENDIF
IF ALLTRIM( thisform.list1.value) = "usuario"
IF thisform.VOrden.value = 1
SELECT * FROM usuario;
WHERE usuario.clave between thisform.combo1.value AND thisform.combo2.value;
ORDER BY usuario.clave;
into cursor tmp
ELSE
SELECT * FROM usuario;
WHERE usuario.clave between thisform.combo1.value AND thisform.combo2.value;
ORDER BY usuario.nombre;
into cursor tmp
ENDIF
ENDIF
IF _tally = 0
= MESSAGEBOX( "No existen datos para listar", 0+64+0, "Informacion del Sistema")
ELSE
thisform.salida ()
ENDIF
SELECT tmp
USE
Valora esta pregunta


0