Filtrar consulta de tdolphin
- JoseAlvarez
- Posts: 807
- Joined: Sun Nov 09, 2014 5:01 pm
Filtrar consulta de tdolphin
Saludos estimados amigos.
Necesito filtrar una consulta de tDolphin despues de realizada para mostrarla en un xBrowse.
He leido y visto ejemplos aqui en el foro sobre SetWhere pero no logro hacer que me funcione.
oQry:SetWhere("nSaldo>0")
Pero me da error de sintaxis.
nSaldo es una columna que se genera desde una subconsulta, es decir, no existe en la tabla, sino que se crea "al vuelo" por eso no puedo filtrar al momento de crear el objeto de la consulta.
Alguna luz de como solucionar?
Gracias!
Necesito filtrar una consulta de tDolphin despues de realizada para mostrarla en un xBrowse.
He leido y visto ejemplos aqui en el foro sobre SetWhere pero no logro hacer que me funcione.
oQry:SetWhere("nSaldo>0")
Pero me da error de sintaxis.
nSaldo es una columna que se genera desde una subconsulta, es decir, no existe en la tabla, sino que se crea "al vuelo" por eso no puedo filtrar al momento de crear el objeto de la consulta.
Alguna luz de como solucionar?
Gracias!
"Los errores en programación, siempre están entre la silla y el teclado..."
Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin
Carora, Estado Lara, Venezuela.
Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin
Carora, Estado Lara, Venezuela.
- carlos vargas
- Posts: 1721
- Joined: Tue Oct 11, 2005 5:01 pm
- Location: Nicaragua
Re: Filtrar consulta de tdolphin
Pasa la consulta a.una tbala dbf y haces el filtro. Es lo que se me ocurre.
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
Carlos Vargas
Desde Managua, Nicaragua (CA)
Re: Filtrar consulta de tdolphin
El setwhere tiene que ser sobre un campo de algunas de las tablas de tu consulta, no puede ser de un campo creado con AS
Otra opción es crear una tabla temporal mysql, con el resultado de tu consulta, y sobre ella hacer el setwhere
Otra opción es crear una tabla temporal mysql, con el resultado de tu consulta, y sobre ella hacer el setwhere
Code: Select all | Expand
#include "tdolphin.ch"
#include "fivewin.ch"
FUNCTION Main()
LOCAL oServer, oBrw, oQry
CONNECT oServer HOST 'localhost' ;
USER 'user' ;
PASSWORD 'mypass' ;
PORT 3306 ;
FLAGS 0;
DATABASE 'test'
oServer:Execute("CREATE TEMPORARY TABLE IF NOT EXISTS temp "+;
" (SELECT c.codpro as codigo, p.nombre as proveedor, sum(importe) as importe "+;
" FROM compras c INNER JOIN proveedores p ON c.codpro = p.codigo GROUP BY c.codpro) ")
oQry := oServer:Query("SELECT * FROM temp")
oQry:SetWhere("importe > 10000")
xbrowse(oQry)
RETURN nil
- carlos vargas
- Posts: 1721
- Joined: Tue Oct 11, 2005 5:01 pm
- Location: Nicaragua
Re: Filtrar consulta de tdolphin
Interesante, en que momento deja de existir esa tabla temporal?
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
Carlos Vargas
Desde Managua, Nicaragua (CA)
Re: Filtrar consulta de tdolphin
Carlos:
Las tablas TEMPORAY se auto-eliminan al momento de salir del PRG que las crea.
Saludos
Las tablas TEMPORAY se auto-eliminan al momento de salir del PRG que las crea.
Saludos
SOI, s.a. de c.v.
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
estbucarm@gmail.com
http://www.soisa.mex.tl/
http://sqlcmd.blogspot.com/
Tel. (722) 174 44 45
Carpe diem quam minimum credula postero
Re: Filtrar consulta de tdolphin
José Saludos
Puedes utilizar la Clausula Having para filtrar el resultado de la consulta .
En el siguiente ejemplo, detectamos cuantos documentos estan repetidos CUANTOS>1
Puedes utilizar la Clausula Having para filtrar el resultado de la consulta .
En el siguiente ejemplo, detectamos cuantos documentos estan repetidos CUANTOS>1
Code: Select all | Expand
cSql:=[ SELECT DOC_CODSUC,DOC_TIPDOC,DOC_TIPTRA,DOC_NUMERO,DOC_FECHA,COUNT(*) AS CUANTOS]+;
[ FROM DPDOCCLI ]+;
[ WHERE DOC_TIPTRA="D" ]+;
[ GROUP BY DOC_CODSUC,DOC_TIPDOC,DOC_TIPTRA,DOC_NUMERO,DOC_FECHA ]+;
[ HAVING CUANTOS>1 ]+;
[ ORDER BY DOC_CODSUC,DOC_TIPDOC,DOC_TIPTRA,DOC_NUMERO,DOC_FECHA ]
Re: Filtrar consulta de tdolphin
Jose,
Puedes agregar en tu consulta.
SELECT ... FROM ...
HAVING nSaldo >0
Puedes agregar en tu consulta.
SELECT ... FROM ...
HAVING nSaldo >0
Re: Filtrar consulta de tdolphin
Carlos, las tablas temporales solo tienen visibilidad en la sesion que son creadas, y mientras no se cierre la misma, tienen vida (o sea, mientras no hagamos oServer:End()).carlos vargas wrote:Interesante, en que momento deja de existir esa tabla temporal?
Por lo demás, podemos hacer sobre ellas todo lo que podriamos hacer sobre una tabla normal. Creo que eso es una ventaja sobre una dbf.
Si tienes dos puestos de trabajo, y en ambos creas una tabla temporal, dichas tablas no serán visibles para el puesto que no las creó, por lo tanto puedes definir un módulo que las utilice, sin que se pisen los datos entre ambos puestos de trabajo.
- JoseAlvarez
- Posts: 807
- Joined: Sun Nov 09, 2014 5:01 pm
Re: Filtrar consulta de tdolphin
Hola a todos,
disculpen la tardanza en contestar a sus amables repuestas y ayuda.
Carlos Vargas: tu idea de la dbf es muy acertada, la tendré en cuenta para algún otro caso que se presente.
Cesar Gómez: a pesar de haber usado las tablas temporales de memoria en muchas oportunidades, no se me pasó por la mente hacerlo así ¡muy bien!
Juan Navas: tu idea usando HAVING funciona perfectamente, ¡excelente! tal como dices, solo tuve que agregar HAVING nSaldoFac>0
a la consulta y ¡LISTO!, a pesar de ser una columna dinámica.
Muchas gracias a todos por su generosa ayuda, todas las ideas que aportaron son útiles y las voy guardando, en algún momento cada una tendrá su aplicación en casos específicos.
Ahora bien, aprovecho de hacer otra consulta para terminar de colocarle "la cereza al helado"
Siempre que hago xBrowse usando como datasource un oQry, los totales en el footer hacen caso omiso de los PICTURE.
Si lo hago con un array, funciona perfecto el picture, pero con las consultas de mysql no. Dejo una imagen de referencia y el código.
pero el resultado no respeta el picture:
¿alguna idea de como solucionar?
disculpen la tardanza en contestar a sus amables repuestas y ayuda.
Carlos Vargas: tu idea de la dbf es muy acertada, la tendré en cuenta para algún otro caso que se presente.
Cesar Gómez: a pesar de haber usado las tablas temporales de memoria en muchas oportunidades, no se me pasó por la mente hacerlo así ¡muy bien!
Juan Navas: tu idea usando HAVING funciona perfectamente, ¡excelente! tal como dices, solo tuve que agregar HAVING nSaldoFac>0
a la consulta y ¡LISTO!, a pesar de ser una columna dinámica.
Muchas gracias a todos por su generosa ayuda, todas las ideas que aportaron son útiles y las voy guardando, en algún momento cada una tendrá su aplicación en casos específicos.
Ahora bien, aprovecho de hacer otra consulta para terminar de colocarle "la cereza al helado"
Siempre que hago xBrowse usando como datasource un oQry, los totales en el footer hacen caso omiso de los PICTURE.
Si lo hago con un array, funciona perfecto el picture, pero con las consultas de mysql no. Dejo una imagen de referencia y el código.
Code: Select all | Expand
WITH OBJECT oBrwFac
:aCols[5]:cEditPicture:= "@E 9,999,999,999.99"
:aCols[5]:nFooterType := AGGR_TOTAL
:aCols[6]:cEditPicture:= "@E 9,999,999,999.99"
:aCols[6]:nFooterType := AGGR_TOTAL
:aCols[7]:cEditPicture:= "@E 9,999,999,999.99"
:aCols[7]:nFooterType := AGGR_TOTAL
:MakeTotals()
END
¿alguna idea de como solucionar?
"Los errores en programación, siempre están entre la silla y el teclado..."
Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin
Carora, Estado Lara, Venezuela.
Fwh 19.06 32 bits + Harbour 3.2 + Borland 7.4 + MariaDB + TDolphin
Carora, Estado Lara, Venezuela.
- nageswaragunupudi
- Posts: 10691
- Joined: Sun Nov 19, 2006 5:22 am
- Location: India
- Contact:
Re: Filtrar consulta de tdolphin
Footer Pictures
Code: Select all | Expand
#include "fivewin.ch"
function Main()
local oServer, oQry
FWNumFormat( "E", .t. )
oServer := TDolphinSrv():New( "208.91.198.197", "gnraofwh", "Bharat@1950", ;
0, 0, "fwhdemo" )
oQry := oServer:Query( "select id,first as Name, salary as Amount from customer" )
XBROWSER oQry SETUP ( ;
oBrw:Amount:nFooterType := AGGR_SUM, ;
oBrw:MakeTotals(), ;
oBrw:lFooter := .t. )
oQry:End()
oServer:End()
return nil
Regards
G. N. Rao.
Hyderabad, India
G. N. Rao.
Hyderabad, India
- nageswaragunupudi
- Posts: 10691
- Joined: Sun Nov 19, 2006 5:22 am
- Location: India
- Contact:
Re: Filtrar consulta de tdolphin
This is extremely easy using FWH Maria library.Necesito filtrar una consulta de tDolphin despues de realizada para mostrarla en un xBrowse.
But here we are using Dolphin.
Do not think of reading the filtered data again from the Server.
Let us just filter the data inside XBrowse. i.e., let us display in xbrowse only those records that match the filter condition.
We will take the above example.
We want to show only those records where the "AMOUNT" is exactly divisible by 19.
We will apply this filter on right mouse click.
Code: Select all | Expand
#include "fivewin.ch"
function Main()
local oServer, oQry
FWNumFormat( "E", .t. )
oServer := TDolphinSrv():New( "208.91.198.197", "gnraofwh", "Bharat@1950", ;
0, 0, "fwhdemo" )
oQry := oServer:Query( "select id,first as Name, salary as Amount from customer" )
XBROWSER oQry SHOW RECID SETUP ( ;
oBrw:Amount:nFooterType := AGGR_SUM, ;
oBrw:MakeTotals(), ;
oBrw:lFooter := .t., ;
oBrw:bRClicked := { |r,c,f,o| BrwRecs( o, { |Self| ( ::Amount:Value % 19 ) == 0 } ) } )
oQry:End()
oServer:End()
return nil
static function BrwRecs( oBrw, bFilter )
local aRecs := {}
Eval( oBrw:bGoTop )
repeat
if Eval( bFilter, oBrw )
AAdd( aRecs, oBrw:BookMark )
endif
until Eval( oBrw:bSkip, 1 ) == 0
oBrw:aFilter := aRecs
oBrw:GoTop()
oBrw:MakeTotals()
oBrw:Refresh()
return nil
Regards
G. N. Rao.
Hyderabad, India
G. N. Rao.
Hyderabad, India
- carlos vargas
- Posts: 1721
- Joined: Tue Oct 11, 2005 5:01 pm
- Location: Nicaragua
Re: Filtrar consulta de tdolphin
Code: Select all | Expand
:aCols[ 07 ]:nFooterType := AGGR_SUM
:aCols[ 08 ]:nFooterType := AGGR_SUM
:aCols[ 09 ]:nFooterType := AGGR_SUM
:aCols[ 01 ]:cFooterPicture:= "9999"
:aCols[ 07 ]:cFooterPicture:= "999,999,999.99"
:aCols[ 08 ]:cFooterPicture:= "999,999,999.99"
:aCols[ 09 ]:cFooterPicture:= "999,999,999.99"
Salu2
Carlos Vargas
Desde Managua, Nicaragua (CA)
Carlos Vargas
Desde Managua, Nicaragua (CA)
- nageswaragunupudi
- Posts: 10691
- Joined: Sun Nov 19, 2006 5:22 am
- Location: India
- Contact:
Re: Filtrar consulta de tdolphin
Our recommendation is NOT to write any code, which is not essential.carlos vargas wrote:Code: Select all | Expand
:aCols[ 07 ]:nFooterType := AGGR_SUM :aCols[ 08 ]:nFooterType := AGGR_SUM :aCols[ 09 ]:nFooterType := AGGR_SUM :aCols[ 01 ]:cFooterPicture:= "9999" :aCols[ 07 ]:cFooterPicture:= "999,999,999.99" :aCols[ 08 ]:cFooterPicture:= "999,999,999.99" :aCols[ 09 ]:cFooterPicture:= "999,999,999.99"
In other words, do not specify picture clauses at all in xbrowse.
Keep this one line of code at the beginning of the Application
Code: Select all | Expand
FWNumFormat( "E", .t. ) // European format with thousand separators
You do not provide cEditPicture or cFooterPicture, except where it is a totally different kind.
With XBrowse, lesser the code better are the results.
Please see my above sample. We did not provide any picture clause.
But XBrowse, on its own, used the correct picture .
Regards
G. N. Rao.
Hyderabad, India
G. N. Rao.
Hyderabad, India
Re: Filtrar consulta de tdolphin
José,
Colegas
Si deseas puedo apoyarles y/o capacitarles en el uso de MYSQL. Mi tel +5841430000518 jnadaptapro@gmail.com
Podemos ver:
1. Integridad referencial
2. Disparadores.
3. Vistas.
4. Sub consultas.
5. Optimización WHERE, JOIN
Colegas
Si deseas puedo apoyarles y/o capacitarles en el uso de MYSQL. Mi tel +5841430000518 jnadaptapro@gmail.com
Podemos ver:
1. Integridad referencial
2. Disparadores.
3. Vistas.
4. Sub consultas.
5. Optimización WHERE, JOIN
Re: Filtrar consulta de tdolphin
Corrijo mi tel +584143000518