PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 25 → Mostrar busqueda
Mostrar busqueda
Iniciado por Mikel Garcia, nov., 28 2008 12:02 AM - 12 respostas
Publicado em novembro, 28 2008 - 12:02 AM
Buenas tardes,
Estamos evaluando la versión express y lo visto de momento nos gusta, pero tengo una duda que supongo que sera muy sencilla para vosotros.
Me he definido una pantalla con los datos de una tabla. Lo que quiero hacer ahora es mostrar los registros que cumplan una condición. Lo que he hecho es

MyQuery is Data Source
HExecuteSQLQuery(MyQuery, "SELECT CustomerNAME FROM CUSTOMER")
HReadFirst(MyQuery)
FileToScreen()

no me muestra nada.
Publicado em novembro, 28 2008 - 9:47 AM
Que tal Mikel.Ciertamente el FileToScreen carga los controles con los valores de los campos a los que están linkados (pestaña LINK), bien sea de una tabla HyperFile o de un Query previamente definido en el editor de querys, pero si tú defines ese query por programación, entonces tendrás que asignar los valores a los controles de la ventana también por programación.
Publicado em novembro, 28 2008 - 1:20 PM
Entonces que tengo que hacer coger los valores de la query y asignarlos uno por uno a los campos de la pantalla?
¿No hay un metodo automatico para hacerlo?
Publicado em novembro, 28 2008 - 1:52 PM
Hola Mikel. Como te ha comentado Javier si tu realizas y ejecutas la
sentencia SQL, ¿De donde debería sacar Windev las relaciones entre el
resultado obtenido y los campos de la ventana?

Lo que debes hacer es una Query con el editor de Querys y en la ventana
Relacionar cada campo de la tabla con el control donde se va a mostrar en la
ventana. Una vez hecho esto las instrucciones FileToScreen y ScreenToFile
harán su trabajo correctamente.

¿Porque utilizar sentencias SQL si en el IDE te facilita el trabajo para no
tener que usarlas?


Rubén Sánchez Peña


"Mikel Garcia" <mikelgolmo@euskalnet.net> escribió en el mensaje de noticias
news:375c603a88cce69bb5bcde48565b85eb@news.pcsoft...

Entonces que tengo que hacer coger los valores de la query y asignarlos
uno por uno a los campos de la pantalla?
¿No hay un metodo automatico para hacerlo?
Publicado em novembro, 28 2008 - 2:07 PM
El tema es el siguiente, en la aplicación que actualmente desarrollando y queremos emigrar a Windev, el usuario realiza las busquedas directamente en la pantalla de datos, por programación esa busqueda la modificamos para controlar la seguridad o lo que necesitemos, y la ejecutamos en pantalla. Estabamos haciendo una prueba para simular ese comportamiento y el primer paso era ver si podiamos mostrar en la pantalla el resultado de una orden SQL.
Otra pregunta, si definimos una query en el editor de querys para esa pantalla, ¿luego se puede modificar la where de esa query en programación?
Publicado em novembro, 28 2008 - 3:22 PM
si desea mostrar todos los registros de una consulta en la pantalla, use el comando BuildBrowsingTable.

PS: excusa mi español, sólo hablo portugués (español by google)
Publicado em novembro, 28 2008 - 4:41 PM
Ese comando sirve para mostrar los valores en una rejilla o tabla,no?
Yo lo que busco es lo mismo pero para un formulario definido por mi
Publicado em dezembro, 03 2008 - 12:14 AM
Hola

Mira yo estoy igual que tú evaluando la Herramienta lo veo muy interesante
(WINDEV EXPRESS), yo hice algo parecido lo que tu necesitas, utilice el query directamente sin realizarlo por el query editor y funciona excelente. Quiero aclarar que fui ayudado por gentes que utilizar en windev por mucho tiempo, no es por merito propio ... jejeje

Aqui va el codigo para que tengas una referencia, aqui disparo 4 querys , los leo y lo dejo en una grilla o crate table.

Antes quiero decirte que utilizo BD Informix y me conecto por ODBC


nConnEXPRESS is int = SQLConnect("informix2","informix","T697589","","ODBC",hODBC)

IF NOT nConnEXPRESS THEN

DelayBeforeClosing(1000)
Info("Error conectando: " + ErrorInfo())

ELSE
totales is int
// internados
sTESTQUERYEXPRESS = "SELECT FECING,COUNT(*) FROM SAW110 WHERE FECING BETWEEN '09/01/2008' AND '09/30/2008' AND INTERN BETWEEN 200000 AND 600000 GROUP BY FECING"
totales = EJECTUA_QUERY_1(sTESTQUERYEXPRESS)

TableAddLine(TABLA1, "INTERNADO", "SETIEMBRE", totales)
// TableDisplay(TABLA1)

PROGBAR_ProgressBar3 =PROGBAR_ProgressBar3 + 1

// guardia
sTESTQUERYEXPRESS = "SELECT FECING,COUNT(*) FROM GUAPACI WHERE FECING BETWEEN '09/01/2008' AND '09/30/2008' GROUP BY FECING ORDER BY FECING"
totales = EJECTUA_QUERY_1(sTESTQUERYEXPRESS)

TableAddLine(TABLA1, "GUARDIA", "SETIEMBRE", totales)
// TableDisplay(TABLA1)

PROGBAR_ProgressBar3 =PROGBAR_ProgressBar3 + 1

// art
sTESTQUERYEXPRESS = "SELECT FECHA,COUNT(*) FROM EVOLU WHERE FECHA BETWEEN '09/01/2008' AND '09/30/2008' GROUP BY FECHA"
totales = EJECTUA_QUERY_1(sTESTQUERYEXPRESS)

TableAddLine(TABLA1, "ART", "SETIEMBRE", totales)
// TableDisplay(TABLA1)
PROGBAR_ProgressBar3 =PROGBAR_ProgressBar3 + 1

// AMBULATORIO
sTESTQUERYEXPRESS = "SELECT 'VALORES ' , COUNT(*) FROM SAW509 WHERE PRACTICA =420101 and nfact > 0 "
totales = EJECTUA_QUERY_1(sTESTQUERYEXPRESS)

TableAddLine(TABLA1, "AMBULATORIO", "SETIEMBRE", totales)
TableDisplay(TABLA1)

PROGBAR_ProgressBar3 =PROGBAR_ProgressBar3 + 1

END

SQLDisconnect()

!======== PROCEDIMIENTO ============
PROCEDURE EJECTUA_QUERY_1(sGsTextQueryEXPRESSEXPRESS is string)
// sGsTextQueryEXPRESS is string = "SELECT FECING,COUNT(*) FROM SAW110 WHERE FECING BETWEEN '09/01/2008' AND '09/10/2008' AND INTERN BETWEEN 200000 AND 600000 GROUP BY FECING"


IF NOT SQLExec(sGsTextQueryEXPRESSEXPRESS,"resQuery") THEN

SQLInfo("resQuery")

Error("Error" + SQL.Error + "in the query: ", SQL.MesError)

ELSE

cyTOTALEXPRESS is currency
cyTOTALEXPRESS = 0
WHILE SQLFetch("resQuery") = 0 // There is still a row to read
cyTOTALEXPRESS = cyTOTALEXPRESS + Val(SQLGetCol("resQuery", 2))
END

END
SQLClose("resQuery")
RESULT cyTOTALEXPRESS



Espero que te sirva.

PD:Gracias Ruben sos un maestro.!!!! ;-)

Saludos desde Argentina , Córdoba






Mikel Garcia wrote in news message <1e74be0f4d205ba8477f56c22da48e95@news.pcsoft>:
Ese comando sirve para mostrar los valores en una rejilla o tabla,no?
Yo lo que busco es lo mismo pero para un formulario definido por mi
Publicado em dezembro, 04 2008 - 12:40 AM
Hola Mikel:
Yo busco algo parecido..Cuando queres hacer un Form, si vas a utilizar el archivo (y no un query..) podes "arrastrar" los campos desde el panel Analisis, donde se encuentran todos los archivos y sus campos. Pero si quees hacer lo mismo para un query, no veo la forma de "arrastrarlos" hasta el form, porque no existe el Query en el analisis. Si podes "arrastrarlos" desde el archivo, pero luego tenes que modificar manualmente el link para cada uno de los campos del form.

Claro que esto del Form linkeados al Query solo serviria para mostrar y no para actualizar, puesto que el Query es un Select..

Existira alguna forma sencilla de "arrastrar" los campos al Form desde un Query?

Saludos
Gus
Publicado em dezembro, 04 2008 - 12:36 PM
Hola Gus. No tiene sentido usar los campos de un query en un Form. Lo que tu
quieres hacer es muy sencillo realmente:

1) Ejecuta tu query

2) Si tiene registros ejecuta:

hreadseeknext(Tabla,"Clave Unica de la tabla","ID Unico del registro de la
Query")

FileToScreen()


Ya tienes los datos en pantalla.

¿Donde esta la problematica? Esto te sirve`para buscar, modificar y borrar
posteriormente.

Rubén Sánchez Peña

"Gus" <gussabina@yahoo.com> escribió en el mensaje de noticias
news:fd55b8afee83fb0dfa9e9fbeeb93c227@news.pcsoft...



Hola Mikel:
Yo busco algo parecido..Cuando queres hacer un Form, si vas a utilizar el
archivo (y no un query..) podes "arrastrar" los campos desde el panel
Analisis, donde se encuentran todos los archivos y sus campos. Pero si
quees hacer lo mismo para un query, no veo la forma de "arrastrarlos"
hasta el form, porque no existe el Query en el analisis. Si podes
"arrastrarlos" desde el archivo, pero luego tenes que modificar
manualmente el link para cada uno de los campos del form.

Claro que esto del Form linkeados al Query solo serviria para mostrar y no
para actualizar, puesto que el Query es un Select..

Existira alguna forma sencilla de "arrastrar" los campos al Form desde un
Query?

Saludos
Gus
Publicado em dezembro, 04 2008 - 6:58 PM
Por lo que yo he probado eso no funciona para un form de datos, no una rejilla. En un form de datos despues de hacer el hREADSEEK debes pasar los valores del query a los campos del formulario.

HReadFirst(gMyQueryEXPRESS,EXPRESS_Clientes.EXPRESS_ClientesID)

EDT_Clientes_Nombre..Value=gMyQueryEXPRESS.CLIENTES_NOMBRE
EDT_Calle..Value=gMyQueryEXPRESS.CLIENTES_CALLE
EDT_Piso..Value=gMyQueryEXPRESS.CLIENTES_PISO
EDT_FNacimiento..Value=gMyQueryEXPRESS.CLIENTES_FNACIMIENTO
EDT_Codigo_Postal=gMyQueryEXPRESS.CLIENTES_CODIGOPOSTAL
EDT_Interlocutor=gMyQueryEXPRESS.CLIENTES_Interlocutor
EDT_Mano=gMyQueryEXPRESS.CLIENTES_MANO
EDT_NIF_CIF=gMyQueryEXPRESS.CLIENTES_DNI
"EDT_Población"=gMyQueryEXPRESS.CLIENTES_POBLACION
EDT_Provincia=gMyQueryEXPRESS.CLIENTES_PROVINCIA

Igual hay otra forma y mi ignorancia no me permite verla, pero es la unica forma que he visto para hacer lo que queria.
Publicado em abril, 17 2021 - 12:16 AM
Hazlo de esta forma :
PROCEDURE WIN_Captura_De_Clientes()

EDT_Codmaster.Visible=False
EDT_Codigo.InputEnabled =False
EDT_Nombres.InputEnabled=False
EDT_Nombre_cuenta.InputEnabled=False
EDT_Fecha_compra.InputEnabled =False
EDT_Estado.InputEnabled=False
EDT_Codmaster.InputEnabled =False

MyQuery is Data Source
HExecuteSQLQuery(MyQuery, "SELECT clientes.codigo AS codigo,clientes.nombres AS nombres,clientes.nombre_cuenta AS cuenta,clientes.fecha_vence AS fecha FROM clientes WHERE clientes.codmaster = '3016815784' AND clientes.estado = '1' ORDER BY fecha_vence ASC")
HReadFirst(MyQuery)
EDT_Codigo = MyQuery.codigo
EDT_Nombres = MyQuery.nombres
EDT_Nombre_cuenta = MyQuery.cuenta
EDT_Fecha_compra = MyQuery.fecha
Publicado em abril, 17 2021 - 12:16 AM
Hazlo de esta forma :
PROCEDURE WIN_Captura_De_Clientes()

EDT_Codmaster.Visible=False
EDT_Codigo.InputEnabled =False
EDT_Nombres.InputEnabled=False
EDT_Nombre_cuenta.InputEnabled=False
EDT_Fecha_compra.InputEnabled =False
EDT_Estado.InputEnabled=False
EDT_Codmaster.InputEnabled =False

MyQuery is Data Source
HExecuteSQLQuery(MyQuery, "SELECT clientes.codigo AS codigo,clientes.nombres AS nombres,clientes.nombre_cuenta AS cuenta,clientes.fecha_vence AS fecha FROM clientes WHERE clientes.codmaster = '3016815784' AND clientes.estado = '1' ORDER BY fecha_vence ASC")
HReadFirst(MyQuery)
EDT_Codigo = MyQuery.codigo
EDT_Nombres = MyQuery.nombres
EDT_Nombre_cuenta = MyQuery.cuenta
EDT_Fecha_compra = MyQuery.fecha