filtrar mysql .. xbrowse... tdolphin.. no refresca

filtrar mysql .. xbrowse... tdolphin.. no refresca

Postby kpidata » Wed Jul 04, 2018 5:55 pm

Estimados, tengo el siguiente problema con un programa, hago una consulta, de inicio, que se refleja en un xbrowse, tal como esta.

cTab_Art:=xServer:Query("SELECT a.*, b.*, c.* FROM tab_art AS a LEFT JOIN tab_fam AS b ON a.fam_art = b.cod_fam LEFT JOIN tab_mar AS c ON a.mar_art = c.cod_mar ORDER BY cod_art ")

y me muestra bien mis datos.., pero cuando hago la siguiente consultas con estos filtros, ya sea por familia, sin marca.... con marca.. sin familia... o escogiendo uno y otro.. le doy la nueva consulta.. lo que me retorna en el browse es un mismo item repetido en todo el xbrowse... alguien me puede indicar en que estoy fallando...

oBrw es el objeto del xbrowse
cCod_Fam.. traigo campo familia en 3 caracteres..
cCod_Mar.. traigo campo marca en 4 caracteres
cTab_Art.. es el objeto que se hace la consulta


FUNCTION Filtrar_Producto1(oBrw,cCod_Fam,cCod_Mar,cTab_Art)
Do Case
case cCod_Fam="000" .and. cCod_Mar="0000"
cTab_Art:=xServer:Query("SELECT a.*, b.*, c.* FROM tab_art AS a LEFT JOIN tab_fam AS b ON a.fam_art = b.cod_fam LEFT JOIN tab_mar AS c ON a.mar_art = c.cod_mar ORDER BY cod_art ")
SetDolphin( oBrw, cTab_Art,.f. )
cTab_Art:Refresh()
oBrw:SetFocus()
oBrw:Refresh()

case cCod_Fam#"000" .and. cCod_Mar="0000"
msgInfo(cCod_Fam)
cTab_Art:=xServer:Query("SELECT a.*, b.*, c.* FROM tab_art AS a LEFT JOIN tab_fam AS b ON a.fam_art = b.cod_fam LEFT JOIN tab_mar AS c ON a.mar_art = c.cod_mar WHERE a.fam_art='"+cCod_Fam+"' ORDER BY cod_art ")
SetDolphin( oBrw, cTab_Art,.f. )
cTab_Art:Refresh()
oBrw:SetFocus()
oBrw:Refresh()

case cCod_Fam="000" .and. cCod_Mar#"0000"
msgInfo(cCod_Mar)
cTab_Art:=xServer:Query("SELECT a.*, b.*, c.* FROM tab_art AS a LEFT JOIN tab_fam AS b ON a.fam_art = b.cod_fam LEFT JOIN tab_mar AS c ON a.mar_art = c.cod_mar WHERE a.mar_art='"+cCod_Mar+"' ORDER BY cod_art ")
SetDolphin( oBrw, cTab_Art,.f. )
cTab_Art:Refresh()
oBrw:SetFocus()
oBrw:Refresh()

case cCod_Fam#"000" .and. cCod_Mar#"0000"
msgInfo(cCod_Fam+" "+cCod_Mar)
cTab_Art:=xServer:Query("SELECT a.*, b.*, c.* FROM tab_art AS a LEFT JOIN tab_fam AS b ON a.fam_art = b.cod_fam LEFT JOIN tab_mar AS c ON a.mar_art = c.cod_mar WHERE a.fam_art='"+cCod_Fam+"' and a.mar_art='"+cCod_Mar+"' ORDER BY cod_art ")
SetDolphin( oBrw, cTab_Art,.f. )
cTab_Art:Refresh()
oBrw:SetFocus()
oBrw:Refresh()

EndCase
RETURN .t.
kpidata
 
Posts: 80
Joined: Tue Jul 26, 2016 9:52 pm

Re: filtrar mysql .. xbrowse... tdolphin.. no refresca

Postby cmsoft » Thu Jul 05, 2018 11:12 am

Prueba solo cambiando el where con el metodo SetNewFilter de Tdolphin...
Code: Select all  Expand view

Do Case
    case cCod_Fam="000" .and. cCod_Mar="0000"
           cWhere:= " TRUE "
   case cCod_Fam#"000" .and. cCod_Mar="0000"
          cWhere := " a.fam_art='"+cCod_Fam
   case cCod_Fam="000" .and. cCod_Mar#"0000"
          cWhere := " a.mar_art='"+cCod_Mar
   case cCod_Fam#"000" .and. cCod_Mar#"0000"
          cWhere :="a.fam_art='"+cCod_Fam+"' and a.mar_art='"+cCod_Mar+"' ORDER BY cod_art ")
EndCase    
cTab_Art:SetNewFilter(SET_WHERE,cWhere,.t.)
oBrw:Refresh()
User avatar
cmsoft
 
Posts: 1257
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

Re: filtrar mysql .. xbrowse... tdolphin.. no refresca

Postby kpidata » Thu Jul 05, 2018 8:03 pm

Estimado, te agradezco el apoyo, ingrese tu código y me arroja esto..

Time from start: 0 hours 0 mins 25 secs
Error occurred at: 05/07/2018, 15:53:11
Error description: Error MYSQL/1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'ORDER BY a.cod_art' at line 1

no importa como lo escriba.. igual me arroja error.

Consulta... leí por ahí información de Mr. Rao., de su trabajo... alguien tiene por algún lado un manual o referencia rápida.. de todos los alcances que uno puede encontrar con xbrowse... hay tanto que quisiera saber y probar..

tal como.. super header.., bloquear que se haga click sobre una columna, con lo que impido que pasen eventos o se orden y quizas cuanta otra cosa mas hay para ver y aprender.

Atte
kpidata
 
Posts: 80
Joined: Tue Jul 26, 2016 9:52 pm

Re: filtrar mysql .. xbrowse... tdolphin.. no refresca

Postby cmsoft » Thu Jul 05, 2018 10:47 pm

Si, perdon, quita el ORDER BY de la ultima opcion y prueba si te lo filtra
Code: Select all  Expand view

Do Case
    case cCod_Fam="000" .and. cCod_Mar="0000"
           cWhere:= " TRUE "
   case cCod_Fam#"000" .and. cCod_Mar="0000"
          cWhere := " a.fam_art='"+cCod_Fam
   case cCod_Fam="000" .and. cCod_Mar#"0000"
          cWhere := " a.mar_art='"+cCod_Mar
   case cCod_Fam#"000" .and. cCod_Mar#"0000"
          cWhere :="a.fam_art='"+cCod_Fam+"' and a.mar_art='"+cCod_Mar)
EndCase    
cTab_Art:SetNewFilter(SET_WHERE,cWhere,.t.)
if  cCod_Fam#"000" .and. cCod_Mar#"0000"
    cTab_Art:SetOrder("cod_art",.T.)
endif
oBrw:Refresh()
 

Como manual de consulta no hay nada mejor que buscar en el codigo fuente del programa
fivewin\source\classes\xbrowse.prg
User avatar
cmsoft
 
Posts: 1257
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 65 guests