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

Post Reply
kpidata
Posts: 73
Joined: Tue Jul 26, 2016 9:52 pm

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

Post by kpidata »

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.
User avatar
cmsoft
Posts: 653
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

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

Post by cmsoft »

Prueba solo cambiando el where con el metodo SetNewFilter de Tdolphin...

Code: Select all

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()
kpidata
Posts: 73
Joined: Tue Jul 26, 2016 9:52 pm

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

Post by kpidata »

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
User avatar
cmsoft
Posts: 653
Joined: Wed Nov 16, 2005 9:14 pm
Location: Mercedes - Bs As. Argentina

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

Post by cmsoft »

Si, perdon, quita el ORDER BY de la ultima opcion y prueba si te lo filtra

Code: Select all

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
Post Reply