Como se trabaja con cursores en Firebird

207 views
Skip to first unread message

rfsalasb

unread,
Nov 12, 2010, 6:13:11 PM11/12/10
to publicesvfoxpro, mundovisualfoxpro
Hola amigos del foro,... he estado prestando mucha atención a sus comentarios sobre el tema de BD más robustas y apropiadas, y por allí me encontré un documento de una empresa sobre el por qué decidieron optar por esta BD, los cuales son muy similares a mis requerimientos.
En fin, siempre he trabajado con la nativa de VFP, y ahora que estoy ya en proceso de probar con FB me surge una duda, ¿ cómo se trabaja con los cursores en este tipo de BD ? ... amplío.... uno en VFP puede hacer un select generando un cursor (que está en memoria) y luego trabajar con él, recorrerlo de arriba-abajo y todo lo que se quiere, y con el seek manda a buscar valores de este en otras tablas indexadas, etc... no sé si me explico bien,.... utilizando un bucle: scan-endscan o un do while-enddo. Ahora con este tipo de BD yo invoco la consulta construida con un SQLEXEC, me imagino que en la variable donde se me carga el resultado de este es el cursor, pero como me muevo/recorro sobre este ? ... que otra configuración hay que hacer en los formularios, en el dataenvironment para trabajar con FB, SQL, MYSQL o cualquiera de estas otras DB ?
Perdón si hago preguntas muy "jaladas" (tontas), pero es que me siento algo perdido, siento como que me estoy metiendo en un barril sin fondo y no se como evitar la "caida". jejejeje... Agradezco mucho sus aportes.

Otra,... para acceder a una BD en un servidor virtual, como sería el string de co

Walter R. Ojeda Valiente

unread,
Nov 12, 2010, 7:32:06 PM11/12/10
to publice...@googlegroups.com
Hola

Cuando haces un SELECT el Firebird te devuelve un cursor (es opcional, si quieres). Por ejemplo:

lnResultado = SQLExec(gnHandle, "SELECT * FROM CLIENTES", "TEMP")

BROWSE

La variable lnResultado te dice si la consulta se realizó exitosamente o no. Un valor positivo (es decir, mayor que cero) significa que sí, un valor negativo (generalmente es -1), te indica que hubo algún problema. Para saber cual fue el problema, debes mirar el contenido del vector AERROR().

En este caso el cursor se llama TEMP (por supuesto, puedes darle el nombre que tú quieras). Si te fijas en la barra de título del BROWSE verás que la tabla se llama TEMP.

A ese cursor lo puedes indexar, filtrar, navegar, etc., lo mismo que harías con cualquier tabla nativa.

El Firebird es muy poderoso y muy fácil de usar, si tienes dudas puedes preguntarme, es mi Base de Datos favorita.

Si lees inglés, te recomiendo el libro: "The Firebird book" de Helen Borrie. Aunque es del año 2004 y está actualizado solamente hasta la versión 1.5, es buenísimo, aprenderás muchísimo con ese libro. Si lees portugués, los libros "Firebird essencial" y "Firebird 2" de Carlos H. Cantú, son muy buenos también.

En el sitio web de Firebird hay mucha documentación aunque la gran mayoría está en inglés, pero como te dije antes, si tienes dudas puedes preguntarme, conozco algo de este tema.

Saludos.

Walter.

ultraton500

unread,
Nov 13, 2010, 3:29:10 AM11/13/10
to Comunidad de Visual Foxpro en Español
Walter,
y cómo se haría para obtener un cursor de fox a partir de una tabla de
Firebird, si es que se puede? (pregunto esto para evitar tener que
adaptar en mis programas, a la hora de migrar, todo el manejo de
cursores (indexaciones, recorridas, búsquedas, lecturas/escrituras,
etc.) y asi solo adaptaría las lecturas y escrituras en tablas
físicas. Sería un gran ahorro de tiempo y trabajo)
Gracias desde ya.
Saludos,
Javier.

Walter R. Ojeda Valiente

unread,
Nov 13, 2010, 3:42:24 AM11/13/10
to publice...@googlegroups.com
Hola Javier


lnResultado = SQLExec(gnHandle, "SELECT * FROM CLIENTES", "TEMP")

 BROWSE

La tabla CLIENTES es una tabla de Firebird. El cursor es TEMP (puedes ponerle el nombre que quieras).

Por supuesto, antes de ejecutar la función SQLEXEC() debes tener una conexión con tu base de datos.

De todas maneras, si lo que quieres es pasar de DBF a SQL te conviene hacer un sistema nuevo, porque aunque puedes hacerlo con cambios mínimos (como los que propones) no estarás obteniendo todos los beneficios de Cliente/Servidor.

Para obtener esos beneficios debes cambiar los conceptos y el diseño estructural. Además, si vas a hacer un sistema nuevo, deberías programar en 3 ó 4 capas y utilizar a full las clases (si es que actualmente no lo haces así).

Saludos.

Walter.

cesarz

unread,
Nov 13, 2010, 8:24:33 AM11/13/10
to Comunidad de Visual Foxpro en Español

ultraton500

unread,
Nov 15, 2010, 3:49:09 PM11/15/10
to Comunidad de Visual Foxpro en Español
Cómo estas Walter! Gracias por los consejos, actualmente lo que hago
es generar cursores para que el usuario los haga de goma y luego
guarde los cambios, pero voy a empezar a informarme y a hacer algunos
ensayos para encarar bien la tan esperada migración.
Agradezco siempre tus comentarios.
Saludos cordiales,
Javier.

ultraton500

unread,
Nov 15, 2010, 3:52:26 PM11/15/10
to Comunidad de Visual Foxpro en Español
Hola César, esos links me vienen muy bien y no solo a mi sino a los
que, como yo, quieren migrar a otra db.
Asi que muy agradecido.
Saludos,
Javier.

On 13 nov, 07:24, cesarz <ztc...@gmail.com> wrote:
> Hola foxeros, una recomendacion mas a los que van a comenzar a
> utilizar BD-SQL llamese firebird, postgres, sqlserver, mysql.
>
> Traten de estudiar y revisar mas acerca del cursoradapter, que es una
> excelente utilidad para trabajar con  bases de datos robustas.
>
> aqui otro modo para trabajar con db.sql
>
> http://www.portalfox.com/index.php?name=News&file=article&sid=930&mod...http://www.portalfox.com/index.php?name=News&file=article&sid=419&mod...http://www.portalfox.com/index.php?name=News&file=article&sid=996&mod...
>
> otroshttp://www.universalthread.com/ViewPageNewDownload.aspx?Session=344C7...
>
> http://www.universalthread.com/ViewPageNewDownload.aspx?Session=75776...

Walter R. Ojeda Valiente

unread,
Nov 15, 2010, 4:17:19 PM11/15/10
to publice...@googlegroups.com
Hola Javier

Lo que te aconsejo es que crees clases para todas tus tareas, eso te facilitará enormemente la vida.

En el caso del acceso a las bases de datos SQL, yo hice una clase que entre otras cosas me permite:
- Conectar con DSN
- Conectar sin DSN
- Desconectar
- Hallar el nombre del driver utilizado
- Ejecutar comandos (es un reemplazo de la función SQLExec())
- Verificar si hay una conexión activa
- Mostrar los registros en una grilla
- etc.

O sea que gracias a esa clase puedo utilizar bases de datos Firebird, Postgre, MySQL o la que desee, sin cambiar ni una línea de mi código. Solamente le digo cual motor de base de datos quiero utilizar y listo.

Además, antes de ejecutar un comando se verifica que haya una conexión activa. Si no la hay, intenta conectarse. Si no se pudo conectar, devuelve un valor indicando el error. Ese valor es luego utilizado para mostrarle al usuario el mensaje correspondiente.

En el caso particular de Firebird, está orientado 100% a Cliente/Servidor. Esto tiene la desventaja de que te obliga a rediseñar todo lo que hacías con .DBF, pero la gran ventaja de que tus aplicaciones son mucho más robustas, confiables, seguras y habilitadas para Internet.

Saludos.

Walter.

Walter R. Ojeda Valiente

unread,
Nov 15, 2010, 4:31:42 PM11/15/10
to publice...@googlegroups.com
Hola Javier

Algo más, que no te había comentado en el e-mail anterior:

Basicamente hay dos formas de conectarse a una base de datos SQL, según la duración de la conexión:
1. Conectarse al inicio de la aplicación, ejecutar todos los comandos y desconectarse al final de la aplicación
2. Conectarse antes de ejecutar un comando, ejecutar el comando, desconectarse

La primera forma es la correcta cuando se trabaja como monousuario o en una red local.

La segunda forma es la correcta cuando se accede a través de Internet.

En mis aplicaciones eso es configurable, el usuario elige una forma o la otra y puede cambiar cuando lo desee.

Saludos.

Walter.

Walter Salcedo

unread,
Nov 15, 2010, 4:50:50 PM11/15/10
to Comunidad de Visual Foxpro en Español
Hola Amigos,
De nuevo recurro por su ayuda,
Tengo el siguiente formulario, en la cuarta pestaña del pageframe tengo lo siguiente:
image
trabajo con BD nativas, y deseo hacer un select  para que, dependiendo de las opciones (checks) del usuario pueda dar como resultado sólo los registros que cumplan la condición (según las opciones seleccionadas),
esto es para emitir una consulta o reporte.
Les agradeceré me ayuden porfavor
Gracias
Atte,
Walter Salcedo
 
 
-----Mensaje original-----
From: ultraton500
Sent: Monday, November 15, 2010 3:49 PM
To: Comunidad de Visual Foxpro en Español
Subject: [vfp] Re: Como se trabaja con cursores en Firebird
image[5].png

ultraton500

unread,
Nov 15, 2010, 6:00:41 PM11/15/10
to Comunidad de Visual Foxpro en Español
Hola, antes que nada, te diría que para la próxima comiences un tema
nuevo para asi no cortar el hilo de uno ya desarrollado.
En cuanto a tu consulta, la forma en que yo lo hago es confeccionando
y guardando en una variable la condición de la consulta según lo
tildado y luego la añado en el SELECT con magrosustitución.
Espero te sea de ayuda.
Saludos,
Javier.

On 15 nov, 15:50, "Walter Salcedo" <wes...@hotmail.com> wrote:
> Hola Amigos,
> De nuevo recurro por su ayuda,
> Tengo el siguiente formulario, en la cuarta pestaña del pageframe tengo lo siguiente:
>
>  image[5].png
> 181 KVerDescargar

ultraton500

unread,
Nov 15, 2010, 6:07:05 PM11/15/10
to Comunidad de Visual Foxpro en Español
Mil gracias Walter por tus consejos e información que son de gran
ayuda.
Esto va a ser todo un desafío para mi por lo que en mas de una
oportunidad me voy a aparecer por aquí pidiendo auxilio.
Saludos y gracias una vez mas,
Javier.

Walter Salcedo

unread,
Nov 15, 2010, 6:58:11 PM11/15/10
to publice...@googlegroups.com
Hola ULTRATON500
Disculpa pero, no sé a que te refieres con "antes que nada, te diría que para la próxima comiences un tema nuevo para asi no cortar el hilo de uno ya desarrollado"
si me lo indicas no cometeré el mismo error de nuevo, yo pensé que colocando en el asunto el tipo de ayuda bastaba.
En el mejor de los casos nuevamente mis disculpas a todo el foro.
En cuanto a mi consulta pueden darme un ejemplo por favor:
La idea es esta,
Teniendo varios grupos (optiongroup) de encuestas respecto a los proveedores (Tipos de Operadores, que pueden ser Hoteles, Restaurantes, Transportes,entre otros)
y según como hayan sido evaluados se les ha hecho un seguimiento para darle solución a estos comentarios (normalmente tratamos los comentarios negativos respecto al servicio de estos proveedores)
echo el seguimiento respectivo quedan en 3 estados (OK, Sin tramitar, En tramite).
 
A todo esto, quisiera un select en donde por ejm. el usuario hace la siguiente selección:
Desea sacar una consulta (o reporte) de los comentarios del grupo (PAX-COMMENTS),
de los proveedores (Hoteles, Restaurantes, Operadores, y cuanta selección haga de este)
luego de estos proveedores según su estado de “sin tramitar” y ”en tramite”
 
Como puedo hacer mi select ??
 
Pueden hacerme un select en base a esta consulta, por favor??
 
Gracias,
Atte,
Walter Salcedo
 
 
 
image
 
 
-----Mensaje original-----
From: ultraton500
Sent: Monday, November 15, 2010 6:00 PM
To: Comunidad de Visual Foxpro en Español
Subject: [vfp] Re: AYUDA CON SELECT

Jose Zurita

unread,
Nov 15, 2010, 7:44:43 PM11/15/10
to PublicesvFoxpro
Si me contactas vía MSN(jzu...@hotmail.com) o Skype(jzuryta), con gusto te ayudo. Estoy concetado casi todo el día, desde las 7.30 hora mexico


From: wes...@hotmail.com
To: publice...@googlegroups.com
Subject: [vfp] AYUDA CON SELECT
Date: Mon, 15 Nov 2010 18:58:11 -0500

ultraton500

unread,
Nov 16, 2010, 12:23:44 AM11/16/10
to Comunidad de Visual Foxpro en Español
Perdón Walter, hay un malentendido aquí, yo sigo este grupo desde la
pág. web

(https://groups.google.com/group/publicesvfoxpro?hl=es) y vos por
correo.
Al parecer (por lo que indicas) no es lo mismo cambiar el asunto de
una respuesta para iniciar un nuevo tema que enviar un

nuevo correo desde cero. Si accedes desde la web vas a notar que tu
post se agrega al hilo al que le cambiaste el asunto.

En cuanto a la consulta, sería de esta manera

Teniendo en cuenta que en una tabla tenés los campos que guardan el
grupo, el tipo de proveedor y el estado hacés

SELECT grupo,proveedor,estado FROM tutabla WHERE grupo="pax_comments"
AND proveedor="hoteles" AND proveedor="restaurantes" AND
proveedor="operadores" AND estado=“sin tramitar” AND estado=”en
tramite” INTO CURSOR cursor1

Asi sería el modelo de tu consulta sql (según entiendo el planteo)
pero ahora hay que hacer que funcione ante las distintas condiciones
que pueda plantear el usuario. Para eso hacé como te comentaba en la
respuesta anterior.

condicion1=""
IF THISFORM.check1.VALUE=1
condicion1="proveedor='hoteles'"
ENDIF
IF THISFORM.check2.VALUE=1
IF EMPTY(condicion1)=.F.
condicion1=condicion1 + " AND "
ENDIF
condicion1=condicion1 + "proveedor='restaurantes'"
ENDIF

Y asi sucesivamente, éste es el concepto.
Luego...

IF EMPTY(condicion1)=.F.
condicion1=" WHERE " + condicion1
ENDIF

Finalmente la consulta te quedaría asi:

SELECT grupo,proveedor,estado FROM tutabla &condicion1 INTO CURSOR
cursor1

(La consulta personalizada está dentro de la variable)

Espero te sea de ayuda.
Saludos,
Javier.


On 15 nov, 17:58, "Walter Salcedo" <wes...@hotmail.com> wrote:
> Hola ULTRATON500
> Disculpa pero, no sé a que te refieres con "antes que nada, te diría que para la próxima comiences un tema nuevo para asi no cortar el hilo de uno ya desarrollado"
> si me lo indicas no cometeré el mismo error de nuevo, yo pensé que colocando en el asunto el tipo de ayuda bastaba.
> En el mejor de los casos nuevamente mis disculpas a todo el foro.
> En cuanto a mi consulta pueden darme un ejemplo por favor:
> La idea es esta,
> Teniendo varios grupos (optiongroup) de encuestas respecto a los proveedores (Tipos de Operadores, que pueden ser Hoteles, Restaurantes, Transportes,entre otros)
> y según como hayan sido evaluados se les ha hecho un seguimiento para darle solución a estos comentarios (normalmente tratamos los comentarios negativos respecto al servicio de estos proveedores)
> echo el seguimiento respectivo quedan en 3 estados (OK, Sin tramitar, En tramite).
>
> A todo esto, quisiera un select en donde por ejm. el usuario hace la siguiente selección:
> Desea sacar una consulta (o reporte) de los comentarios del grupo (PAX-COMMENTS),
> de los proveedores (Hoteles, Restaurantes, Operadores, y cuanta selección haga de este)
> luego de estos proveedores según su estado de “sin tramitar” y ”en tramite”
>
> Como puedo hacer mi select ??
>
> Pueden hacerme un select en base a esta consulta, por favor??
>
> Gracias,
> Atte,
> Walter Salcedo
>

Walter Salcedo

unread,
Nov 16, 2010, 9:49:10 AM11/16/10
to Comunidad de Visual Foxpro en Español
Muchas gracias amigo, voy a probar tu idea.. ya te cuento como me fue,
en cuanto a lo segundo me contacto por email para de este modo tener los
temas a tratar en mi buz�n,
en adelante lo har� desde la web.
Gracias
Atte,
Walter Salcedo

-----Mensaje original-----
From: ultraton500
Sent: Tuesday, November 16, 2010 12:23 AM
To: Comunidad de Visual Foxpro en Espa�ol


Subject: [vfp] Re: AYUDA CON SELECT

Perd�n Walter, hay un malentendido aqu�, yo sigo este grupo desde la
p�g. web

(https://groups.google.com/group/publicesvfoxpro?hl=es) y vos por
correo.
Al parecer (por lo que indicas) no es lo mismo cambiar el asunto de
una respuesta para iniciar un nuevo tema que enviar un

nuevo correo desde cero. Si accedes desde la web vas a notar que tu
post se agrega al hilo al que le cambiaste el asunto.

En cuanto a la consulta, ser�a de esta manera

Teniendo en cuenta que en una tabla ten�s los campos que guardan el
grupo, el tipo de proveedor y el estado hac�s

SELECT grupo,proveedor,estado FROM tutabla WHERE grupo="pax_comments"
AND proveedor="hoteles" AND proveedor="restaurantes" AND

proveedor="operadores" AND estado=�sin tramitar� AND estado=�en
tramite� INTO CURSOR cursor1

Asi ser�a el modelo de tu consulta sql (seg�n entiendo el planteo)


pero ahora hay que hacer que funcione ante las distintas condiciones

que pueda plantear el usuario. Para eso hac� como te comentaba en la
respuesta anterior.

condicion1=""
IF THISFORM.check1.VALUE=1
condicion1="proveedor='hoteles'"
ENDIF
IF THISFORM.check2.VALUE=1
IF EMPTY(condicion1)=.F.
condicion1=condicion1 + " AND "
ENDIF
condicion1=condicion1 + "proveedor='restaurantes'"
ENDIF

Y asi sucesivamente, �ste es el concepto.
Luego...

IF EMPTY(condicion1)=.F.
condicion1=" WHERE " + condicion1
ENDIF

Finalmente la consulta te quedar�a asi:

SELECT grupo,proveedor,estado FROM tutabla &condicion1 INTO CURSOR
cursor1

(La consulta personalizada est� dentro de la variable)

Espero te sea de ayuda.
Saludos,
Javier.


On 15 nov, 17:58, "Walter Salcedo" <wes...@hotmail.com> wrote:
> Hola ULTRATON500

> Disculpa pero, no s� a que te refieres con "antes que nada, te dir�a que
> para la pr�xima comiences un tema nuevo para asi no cortar el hilo de uno
> ya desarrollado"
> si me lo indicas no cometer� el mismo error de nuevo, yo pens� que

> colocando en el asunto el tipo de ayuda bastaba.
> En el mejor de los casos nuevamente mis disculpas a todo el foro.
> En cuanto a mi consulta pueden darme un ejemplo por favor:
> La idea es esta,
> Teniendo varios grupos (optiongroup) de encuestas respecto a los
> proveedores (Tipos de Operadores, que pueden ser Hoteles, Restaurantes,
> Transportes,entre otros)

> y seg�n como hayan sido evaluados se les ha hecho un seguimiento para
> darle soluci�n a estos comentarios (normalmente tratamos los comentarios

> negativos respecto al servicio de estos proveedores)
> echo el seguimiento respectivo quedan en 3 estados (OK, Sin tramitar, En
> tramite).
>
> A todo esto, quisiera un select en donde por ejm. el usuario hace la

> siguiente selecci�n:


> Desea sacar una consulta (o reporte) de los comentarios del grupo
> (PAX-COMMENTS),

> de los proveedores (Hoteles, Restaurantes, Operadores, y cuanta selecci�n
> haga de este)
> luego de estos proveedores seg�n su estado de �sin tramitar� y �en
> tramite�


>
> Como puedo hacer mi select ??
>
> Pueden hacerme un select en base a esta consulta, por favor??
>
> Gracias,
> Atte,
> Walter Salcedo
>
> -----Mensaje original-----
> From: ultraton500
> Sent: Monday, November 15, 2010 6:00 PM

> To: Comunidad de Visual Foxpro en Espa�ol


> Subject: [vfp] Re: AYUDA CON SELECT
>

> Hola, antes que nada, te dir�a que para la pr�xima comiences un tema


> nuevo para asi no cortar el hilo de uno ya desarrollado.
> En cuanto a tu consulta, la forma en que yo lo hago es confeccionando

> y guardando en una variable la condici�n de la consulta seg�n lo
> tildado y luego la a�ado en el SELECT con magrosustituci�n.


> Espero te sea de ayuda.
> Saludos,
> Javier.
>
> On 15 nov, 15:50, "Walter Salcedo" <wes...@hotmail.com> wrote:
>
>
>
> > Hola Amigos,
> > De nuevo recurro por su ayuda,

> > Tengo el siguiente formulario, en la cuarta pesta�a del pageframe tengo

> > lo siguiente:
>
> > trabajo con BD nativas, y deseo hacer un select para que, dependiendo

> > de las opciones (checks) del usuario pueda dar como resultado s�lo los
> > registros que cumplan la condici�n (seg�n las opciones seleccionadas),


> > esto es para emitir una consulta o reporte.

> > Les agradecer� me ayuden porfavor


> > Gracias
> > Atte,
> > Walter Salcedo
>
> > -----Mensaje original-----
> > From: ultraton500
> > Sent: Monday, November 15, 2010 3:49 PM

> > To: Comunidad de Visual Foxpro en Espa�ol


> > Subject: [vfp] Re: Como se trabaja con cursores en Firebird
>

> > C�mo estas Walter! Gracias por los consejos, actualmente lo que hago


> > es generar cursores para que el usuario los haga de goma y luego
> > guarde los cambios, pero voy a empezar a informarme y a hacer algunos

> > ensayos para encarar bien la tan esperada migraci�n.


> > Agradezco siempre tus comentarios.
> > Saludos cordiales,
> > Javier.
>
> > On 13 nov, 02:42, "Walter R. Ojeda Valiente" <w...@hotmail.com> wrote:
>
> > > Hola Javier
>
> > > lnResultado = SQLExec(gnHandle, "SELECT * FROM CLIENTES", "TEMP")
>
> > > BROWSE
>
> > > La tabla CLIENTES es una tabla de Firebird. El cursor es TEMP (puedes
> > > ponerle el nombre que quieras).
>

> > > Por supuesto, antes de ejecutar la funci�n SQLEXEC() debes tener una
> > > conexi�n con tu base de datos.


>
> > > De todas maneras, si lo que quieres es pasar de DBF a SQL te conviene
> > > hacer un sistema nuevo, porque aunque puedes hacerlo con cambios

> > > m�nimos (como los que propones) no estar�s obteniendo todos los
> > > beneficios de Cliente/Servidor.
>
> > > Para obtener esos beneficios debes cambiar los conceptos y el dise�o
> > > estructural. Adem�s, si vas a hacer un sistema nuevo, deber�as
> > > programar en 3 � 4 capas y utilizar a full las clases (si es que
> > > actualmente no lo haces as�).

IVAN MARTINEZ

unread,
Nov 16, 2010, 10:29:48 PM11/16/10
to publice...@googlegroups.com
Lo mas engorroso o de cuidado es la creacion del filtro que se va ha usar en la clausula where del select.
 
Yo creo este filtro de una forma dinamica con las opciones seleccionadas  esa expresion es la que uso en el select algo asi:
 
wfil=""  && filtro a usar en sel select
wfild="" && descripcion humana del filtro lo musetro p.e. en el encabezado del reporte para que el usuario conozca que seleciono y quede plasmado en el reporte.
 
if !empty(wfecha)
    wfil= wfil + "dr.fecha ="+ dtoc(wfecha)
    wfild = wfild + " fecha igual a "+ + dtoc(wfecha)
endif
 
if .......
 
 
endif
 
select campos from tablas where &wfil into cursor q
 
report form reporte preview to printer prompt
 
 
ivan martinez
 


De: publice...@googlegroups.com [mailto:publice...@googlegroups.com] En nombre de Walter Salcedo
Enviado el: Lunes, 15 de Noviembre de 2010 05:21 p.m.
Para: Comunidad de Visual Foxpro en Español
Asunto: [vfp] AYUDA CON SELECT

image[5].png

Walter Salcedo

unread,
Nov 17, 2010, 2:15:47 PM11/17/10
to publice...@googlegroups.com
Hola Ivan, gracias por responder, pero tal vez no fui muy claro en expresar mi necesidad,
a ver si esta vez soy más claro:
 
El modulo realiza un seguimiento de proveedores según su comportamiento en un periodo definido (puede ser EXCELENTES, REGULARES,BUENOS, MALOS)
estas evaluaciones lo realizan varios departamentos (DTR-COMMENTS, PAX-COMMENTS,ETC..),
A partir de estas evaluaciones se realiza un seguimiento a los proveedores que han resultado como REGULARES o MALOS con la finalidad de que corrijan los servicios que brindan
a la empresa.
Ahora,
Al final del mes debo emitir un reporte donde debe salir el estado en que se encuentran los siguimientos (“OK”, “SIN TRAMITAR”,”EN TRAMITE”)
 
Lo que necesito hacer es lo siguiente:
1. Selecciono un periodo a reportar (un mes)
2. Del optiongroup selecciono una opcion (puede ser PAX-COMMENTS por ejm.)
Aqui viene mi problema:
3. Tengo en un container 12 checkbox de los cuales el usuario puede seleccionar uno o varias alternativas o todas (son tipos de actividades que pueden ser Hoteles, Restaurantes, Transportes, etc., el tipo de    
    actividad  lo tengo guardado en un campo de mi tabla de proveedores)
4. Luego en el segundo container tengo otros 4 checkbox (estos estados están en un sólo campo de la tabla, que pueden ser “OK”, “SIN TRAMITAR”,”EN TRAMITE”) de las cuales el usuario puede seleccionar de igual
    manera uno o varias alternativas.
5. Como hago el select para tener en un cursor los datos filtrados según la selección elegida por el usuario para efectos de consulta o reporte ??.
 
Gracias por la ayuda que me puedan brindar
Atte,
Walter Salcedo
image[5].png

IVAN MARTINEZ

unread,
Nov 17, 2010, 3:44:45 PM11/17/10
to publice...@googlegroups.com
 
CASO I
 
3. Tengo en un container 12 checkbox de los cuales el usuario puede seleccionar uno o varias alternativas o todas (son tipos de actividades que pueden ser Hoteles, Restaurantes, Transportes, etc., el tipo de    
    actividad  lo tengo guardado en un campo de mi tabla de proveedores)
 
Respuesta:
 
Esto corresponde a un filtro de tipo or
 
fecha =wfecha and (provedor ="HOTEL" or proveedor="RESTAURANT" or proveedor = "TRANSPORTE")
 
el que incluyas o no pe <or proveedor="RESTAURANT"> en el filtro va a depender que se haya marcado el checkbox
 
if chkRESTAURANT
    wfilprov= wfilprov + 'or proveedor="RESTAURANT" '
endif
 
tendras que programar lo del parentesis de inicio y final y esos detalles comunes en la programacion.
 
 
 
Caso II
 
4. Luego en el segundo container tengo otros 4 checkbox (estos estados están en un sólo campo de la tabla, que pueden ser “OK”, “SIN TRAMITAR”,”EN TRAMITE”) de las cuales el usuario puede seleccionar de igual
    manera uno o varias alternativas.
Respueta:
 
Este caso es parecido al anterior.
 
 
Ivan Martinez
 


De: publice...@googlegroups.com [mailto:publice...@googlegroups.com] En nombre de Walter Salcedo
Enviado el: Miércoles, 17 de Noviembre de 2010 02:46 p.m.
Para: publice...@googlegroups.com
Asunto: Re: [vfp] AYUDA CON SELECT

image[5].png
Reply all
Reply to author
Forward
0 new messages