Mr. Rao, cambio en method SetOrder de xBrowse

Mr. Rao, cambio en method SetOrder de xBrowse

Postby albeiroval » Sun Oct 01, 2017 4:55 pm

Hola Mr Rao,

Propongo este cambio en el METHOD SetOrder de xBrowse para el uso con TDolphin usando ALIAS en las columnas del SELECT.

Cuando creo el XBROWSE en las consultas de MySQl con TDolphin usando LEFT, RIGHT, INNER JOIN, cuando ordeno las columnas lo
hace bien con las columnas que pertenecen a la Tabla del SELECT principal, cuando intento ordenar con las columnas que
no pertenecen a la Tabla del SELECT principal me lanza el de error de mysql que la columna no existe.

Modifique el METHOD SetOrder y funciona correctamente, Aqui dejo el codigo.

Code: Select all  Expand view  RUN


// XBROWSE.PRG
// METHOD SETORDER
// Version Fwh 17.07, Linea 14.399
...

if lDolphin
            uVal     := ::Value
            ::oBrw:oMySql:lInverted := ( ::cOrder == 'D' )
            ::oBrw:oMySql:SetOrder( cSort )
            if n > 0
               ::oBrw:oMySql:GoTo( n )
            else
               // ::oBrw:oMySql:Seek( uVal, Token( ::cSortOrder, nil, 1 ), 1, ::oBrw:oMySql:LastRec(), .t., .t. )
               ::oBrw:oMySql:Seek( uVal, Token( SubStr( ::cSortOrder, At( ".", ::cSortOrder)+1 ), Nil, 1 ), 1, ::oBrw:oMySql:LastRec(), .t., .t. )  // Cambio Propuesto
            endif
            // note: seek is not working in the descending order
         else
            ::oBrw:oMysql:cSort := cSort
         endif
...
 
Last edited by albeiroval on Wed Feb 14, 2018 3:35 am, edited 2 times in total.
Saludos,
Regards,

Albeiro Valencia
www.avcsistemas.com
User avatar
albeiroval
 
Posts: 380
Joined: Tue Oct 16, 2007 5:51 pm
Location: Barquisimeto - Venezuela

Re: Mr. Rao, cambio en method SetOrder de xBrowse

Postby nageswaragunupudi » Fri Oct 06, 2017 4:13 am

SubStr( ::cSortOrder, At( ".", ::cSortOrder)+1 )


Why is this required?

XBrowse automatically assigns values to oCol:cSortOrder and this does not contain "."
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10663
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Mr. Rao, cambio en method SetOrder de xBrowse

Postby albeiroval » Fri Oct 06, 2017 12:23 pm

Why is this required?

XBrowse automatically assigns values to oCol:cSortOrder and this does not contain "."


Cuando creo la consulta usando TEXT INTO cQuery .... ENDTEXT se presenta el error,
Con el cambio propuesto NO hay error.
Saludos,
Regards,

Albeiro Valencia
www.avcsistemas.com
User avatar
albeiroval
 
Posts: 380
Joined: Tue Oct 16, 2007 5:51 pm
Location: Barquisimeto - Venezuela

Re: Mr. Rao, cambio en method SetOrder de xBrowse

Postby nageswaragunupudi » Fri Oct 06, 2017 1:43 pm

Please give me an example.
Even if there is . in the query, the dot is removed by MySql in the result.
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10663
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Mr. Rao, cambio en method SetOrder de xBrowse

Postby albeiroval » Mon Oct 09, 2017 1:27 pm

Mr Rao,

Archivo error.log :

Code: Select all  Expand view  RUN

Application
===========
   Path and name: D:\Sistema Pollosa\Almacen\WinAlmacen.exe (32 bits)
   Size: 8,182,272 bytes
   Compiler version: Harbour 3.2.0dev (r1603082110)
   FiveWin  version: FWH 17.07
   C compiler version: Borland/Embarcadero C++ 7.0 (32-bit)
   Windows version: 6.2, Build 9200

   Time from start: 0 hours 0 mins 3 secs
   Error occurred at: 09/10/2017, 09:17:06
   Error description: Error TDOLPHIN/9012  Error interno:Nombre del campo Invalido "a"


Stack Calls
===========
   Called from: .\source\prg\tdolpsrv.prg => DOLPHIN_DEFERROR( 2816 )
   Called from: .\source\prg\tdolpsrv.prg => TDOLPHINSRV:CHECKERROR( 802 )
   Called from: .\source\prg\tdolpqry.prg => (b)TDOLPHINQRY( 131 )
   Called from: .\source\prg\tdolpqry.prg => TDOLPHINQRY:CHECKERROR( 0 )
   Called from: .\source\prg\tdolpqry.prg => TDOLPHINQRY:FIELDPOS( 754 )
   Called from: .\source\prg\tdolpqry.prg => TDOLPHINQRY:FIELDTONUM( 827 )
   Called from: .\source\prg\tdolpqry.prg => TDOLPHINQRY:SEEK( 1677 )
   Called from: D:\fwh\source\classes\xbrowse.prg => TXBRWCOLUMN:SETORDER( 14399 )
   Called from: D:\fwh\source\classes\xbrowse.prg => TXBRWCOLUMN:HEADERLBUTTONUP( 13105 )
   Called from: D:\fwh\source\classes\xbrowse.prg => TXBROWSE:LBUTTONUP( 4436 )
   Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1721 )
   Called from: D:\fwh\source\classes\xbrowse.prg => TXBROWSE:HANDLEEVENT( 10227 )
   Called from: .\source\classes\WINDOW.PRG => _FWH( 3348 )
   Called from:  => DIALOGBOX( 0 )
   Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE( 296 )
   Called from: D:\PROYEC~1\Software\POLLOS~1\Source\almacen.prg => DO_ALMACEN( 157 )
   Called from: D:\PROYEC~1\Software\POLLOS~1\Source\WINALM~1.PRG => (b)POPUPINVENTARIO( 368 )
   Called from: .\source\classes\MENU.PRG => TMENU:ACTIVATE( 1420 )
   Called from: D:\PROYEC~1\Software\POLLOS~1\Source\WINALM~1.PRG => POPUPINVENTARIO( 385 )
   Called from: D:\PROYEC~1\Software\POLLOS~1\Source\WINALM~1.PRG => (b)MAIN( 147 )
   Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:CLICK( 684 )
   Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:LBUTTONUP( 924 )
   Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1721 )
   Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:HANDLEEVENT( 1873 )
   Called from: .\source\classes\WINDOW.PRG => _FWH( 3348 )
   Called from:  => WINRUN( 0 )
   Called from: .\source\classes\WINDOW.PRG => TWINDOW:ACTIVATE( 1037 )
   Called from: D:\PROYEC~1\Software\POLLOS~1\Source\WINALM~1.PRG => MAIN( 196 )

System
======
   CPU type: Intel(R) Core(TM) i5-3470 CPU @ 3.20GHz 3193 Mhz
   Hardware memory: 6044 megs

   Free System resources: 90 %
        GDI    resources: 90 %
        User   resources: 90 %

   Windows total applications running: 5
      1 ,                                                                                                    
      2 , C:\WINDOWS\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.15063.483_none_6dad63f
      3 , D:\Sistema Pollosa\Almacen\WinAlmacen.exe                                                          
      4 DDE Server Window, C:\WINDOWS\System32\OLE32.DLL                                                                      
      5 G, C:\WINDOWS\WinSxS\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.15063.608_none_9e9d5d4256d15de

Variables in use
================
   Procedure     Type   Value
   ==========================
   DOLPHIN_DEFERROR
     Param   1:    O    Class: ERROR
   TDOLPHINSRV:CHECKERROR
     Param   1:    O    Class: TDOLPHINSRV
     Param   2:    N    9012
     Param   3:    L    .T.
     Param   4:    C    ""a"
"

     Local   1:    O    Class: ERROR
   (b)TDOLPHINQRY
     Param   1:    N    9012
     Param   2:    C    ""a"
"

     Local   1:    L    .T.
   TDOLPHINQRY:CHECKERROR
     Param   1:    O    Class: TDOLPHINQRY
     Param   2:    U    
     Param   3:    C    ""a"
"

   TDOLPHINQRY:FIELDPOS
     Param   1:    U    
     Param   2:    C    ""a"
"

   TDOLPHINQRY:FIELDTONUM
     Param   1:    C    "a"
     Local   1:    N    0
   TDOLPHINQRY:SEEK
     Param   1:    C    "a"
     Local   1:    U    
   TXBRWCOLUMN:SETORDER
     Param   1:    C    "01-0001           "
     Param   2:    C    "a"
     Param   3:    N    1
     Param   4:    N    934
     Param   5:    L    .T.
     Param   6:    L    .T.
     Local   1:    U    
     Local   2:    U    
   TXBRWCOLUMN:HEADERLBUTTONUP
     Local   1:    L    .T.
     Local   2:    N    0
     Local   3:    C    "a.codigo"
     Local   4:    C    "01-0001           "
     Local   5:    N    33426.96
     Local   6:    L    .T.
     Local   7:    U    
   TXBROWSE:LBUTTONUP
     Param   1:    N    16
     Param   2:    N    112
     Param   3:    N    0
     Local   1:    U    
     Local   2:    U    
     Local   3:    L    .F.
   TCONTROL:HANDLEEVENT
     Param   1:    N    16
     Param   2:    N    112
     Param   3:    N    0
     Local   1:    N    1
     Local   2:    N    0
     Local   3:    N    0.02
     Local   4:    N    0
     Local   5:    U    
     Local   6:    U    
     Local   7:    U    
     Local   8:    C    ""
   TXBROWSE:HANDLEEVENT
     Param   1:    N    514
     Param   2:    N    0
     Param   3:    N    1048688
     Local   1:    U    
   _FWH
     Param   1:    N    514
     Param   2:    N    0
     Param   3:    N    1048688
   DIALOGBOX
     Param   1:    N    1048688
     Param   2:    N    514
     Param   3:    N    0
     Param   4:    N    1048688
     Param   5:    N    12
     Local   1:    O    Class: TXBROWSE
   TDIALOG:ACTIVATE
     Param   1:    N    4194304
     Param   2:    C    "xbrowse"
     Param   3:    N    198318
     Param   4:    O    Class: TDIALOG
   DO_ALMACEN
     Param   1:    U    
     Param   2:    U    
     Param   3:    U    
     Param   4:    L    .F.
     Param   5:    B    {|| ... }
     Param   6:    L    .T.
     Param   7:    B    {|| ... }
     Param   8:    U    
     Param   9:    U    
     Param  10:    U    
     Param  11:    U    
     Local   1:    N    198318
     Local   2:    S    
     Local   3:    O    Class: TDIALOG
   (b)POPUPINVENTARIO
     Local   1:    O    Class: TDOLPHINQRY
     Local   2:    C    "   SELECT  a.codigo,
                    a.tipo_producto,
            CASE a.tipo_producto
                        WHEN 1 THEN 'Materia_Prima'
                        WHEN 2 THEN 'Terminado'
                        WHEN 3 THEN 'Procesado'
                        WHEN 4 THEN 'Suministro'
                    END AS name_tipo_producto,
                    a.tipo,
                    a.componente,
                    a.cantidad,
            a.costo,
            a.precio,
            a.alicuota,
            a.fecha,
            a.vencimiento,
            a.tipo_venta,
            CASE a.tipo_venta
                        WHEN 1 THEN 'Propio'
                        WHEN 2 THEN 'Franquicia'
                    END AS name_tipo_venta,
            a.porcentaje,
            a.my_recno,
            b.descripcion AS nametipo,
            c.descripcion AS namecompon,
                    d.nombre,
                    d.descripcion,
                    d.medida,
                    d.marca  
    FROM Almacen_ a
    LEFT JOIN RefeTipo b ON a.tipo = b.tipo
    LEFT JOIN RefeComp c ON a.tipo = c.tipo AND a.componente = c.componente
    LEFT JOIN Catalogo d ON a.codigo = d.codigo
    ORDER BY
"

     Local   3:    O    Class: TDIALOG
     Local   4:    O    Class: TXBROWSE
     Local   5:    O    Class: TFONT
     Local   6:    O    Class: TBAR
     Local   7:    L    .F.
     Local   8:    U    
   TMENU:ACTIVATE
     Param   1:    O    Class: TMENUITEM
   POPUPINVENTARIO
     Param   1:    N    76
     Param   2:    N    249
     Param   3:    O    Class: TBAR
     Param   4:    L    .T.
     Param   5:    N    0
     Local   1:    A    Len:    2
   (b)MAIN
     Param   1:    O    Class: TBTNBMP
     Local   1:    O    Class: TMENU
   TBTNBMP:CLICK
     Param   1:    O    Class: TBTNBMP
   TBTNBMP:LBUTTONUP
   TCONTROL:HANDLEEVENT
     Param   1:    N    53
     Param   2:    N    30
     Param   3:    N    0
     Local   1:    L    .T.
     Local   2:    N    0
     Local   3:    S    
   TBTNBMP:HANDLEEVENT
     Param   1:    N    514
     Param   2:    N    0
     Param   3:    N    3473438
     Local   1:    U    
   _FWH
     Param   1:    N    514
     Param   2:    N    0
     Param   3:    N    3473438
   WINRUN
     Param   1:    N    3473438
     Param   2:    N    514
     Param   3:    N    0
     Param   4:    N    3473438
     Param   5:    N    6
     Local   1:    O    Class: TBTNBMP
   TWINDOW:ACTIVATE
     Param   1:    N    198318
   MAIN
     Param   1:    C    "MAXIMIZED"
     Param   2:    U    
     Param   3:    U    
     Param   4:    U    
     Param   5:    U    
     Param   6:    B    {|| ... }
     Param   7:    U    
     Param   8:    B    {|| ... }
     Param   9:    U    
     Param  10:    U    
     Param  11:    U    
     Param  12:    U    
     Param  13:    U    
     Param  14:    U    
     Param  15:    U    
     Param  16:    U    
     Param  17:    B    {|| ... }
     Param  18:    U    
     Param  19:    U    
     Param  20:    L    .F.
     Local   1:    O    Class: TWINDOW
     Local   2:    U    
     Local   3:    U    

Linked RDDs
===========
   DBF
   DBFFPT
   DBFBLOB
   DBFCDX
   DBFNTX

DataBases in use
================

Classes in use:
===============
     1 ERROR
     2 HBCLASS
     3 HBOBJECT
     4 TDOLPHINQRY
     5 TWINDOW
     6 TCONTROL
     7 TXBROWSE
     8 TGET
     9 TCOMBOBOX
    10 TMULTIGET
    11 TVARIABLE
    12 TMYSQLSERVER
    13 TBRUSH
    14 TDIALOG
    15 TFONT
    16 TREG32
    17 TRECT
    18 TDOLPHINSRV
    19 TBITMAP
    20 TMENU
    21 TMENUITEM
    22 TICON
    23 TBAR
    24 TBTNBMP
    25 TMSGBAR
    26 TMSGITEM
    27 TTIMER
    28 TXBRWCOLUMN
    29 TSAY
    30 TSCROLLBAR
    31 TCLIPBOARD
    32 TSTRUCT

Memory Analysis
===============
      536 Static variables

   Dynamic memory consume:
      Actual  Value:    2031616 bytes
      Highest Value:    2031616 bytes

 



Este el el codigo que uso :

Code: Select all  Expand view  RUN

TEXT INTO cQuery
    SELECT  a.codigo,
                    a.tipo_producto,
            CASE a.tipo_producto
                        WHEN 1 THEN 'Materia_Prima'
                        WHEN 2 THEN 'Terminado'
                        WHEN 3 THEN 'Procesado'
                        WHEN 4 THEN 'Suministro'
                    END AS name_tipo_producto,
                    a.tipo,
                    a.componente,
                    a.cantidad,
            a.costo,
            a.precio,
            a.alicuota,
            a.fecha,
            a.vencimiento,
            a.tipo_venta,
            CASE a.tipo_venta
                        WHEN 1 THEN 'Propio'
                        WHEN 2 THEN 'Franquicia'
                    END AS name_tipo_venta,
            a.porcentaje,
            a.my_recno,
            b.descripcion AS nametipo,
            c.descripcion AS namecompon,
                    d.nombre,
                    d.descripcion,
                    d.medida,
                    d.marca  
    FROM %1 a
    LEFT JOIN %2 b ON a.tipo = b.tipo
    LEFT JOIN %3 c ON a.tipo = c.tipo AND a.componente = c.componente
    LEFT JOIN %4 d ON a.codigo = d.codigo
    ORDER BY
  ENDTEXT  
   
  cQuery := StrFormat( cQuery, TABLA_ALMACEN, TABLA_TIPO, TABLA_COMPONENTE, TABLA_CATALOGO )
   
  oQry = oSrv:CreateQuery( cQuery + "tipo" )

  ....
 
  REDEFINE XBROWSE oBrw OF oDlg ID 100;
    DATASOURCE oQry;
    LINES FOOTERS AUTOSORT
   
  ADD TO oBrw DATA oQry:codigo                          TITLE "Codigo"          SIZE 100 LEFT
  ADD TO oBrw DATA oQry:descripcion                 TITLE "Descripcion" SIZE 400 LEFT
  ADD TO oBrw DATA oQry:name_tipo_producto  TITLE "Producto"        SIZE 100 LEFT
  ADD TO oBrw DATA oQry:tipo                            TITLE "Tipo"                SIZE 040 PICTURE "@E 9,999" RIGHT
  ADD TO oBrw DATA oQry:componente                  TITLE "Comp"                SIZE 040 PICTURE "@E 999,999" RIGHT
  ADD TO oBrw DATA oQry:cantidad                        TITLE "Cantidad"        SIZE 100 PICTURE "@E 999,999,999.99" RIGHT
  ADD TO oBrw DATA oQry:costo                           TITLE "Costo"           SIZE 100 PICTURE "@E 999,999,999.99" RIGHT
  ADD TO oBrw DATA oQry:precio                      TITLE "Precio"        SIZE 100 PICTURE "@E 999,999,999.99" RIGHT
  ADD TO oBrw DATA oQry:alicuota                        TITLE "Alicuota"        SIZE 080 RIGHT
  ADD TO oBrw DATA oQry:name_tipo_venta         TITLE "Tipo_Venta"  SIZE 100 LEFT
  ADD TO oBrw DATA oQry:fecha                           TITLE "Fecha"           SIZE 100 PICTURE "@D" LEFT
  ADD TO oBrw DATA oQry:vencimiento                 TITLE "Vence"           SIZE 050 PICTURE "@E 999" LEFT

  WITH OBJECT oBrw
    :QueryWithJoin( cQuery, TABLA_ALMACEN, oQry )
 
    :aCols[01]:cSortOrder = "a.codigo"
    :aCols[02]:cSortOrder = "d.descripcion"
    :aCols[03]:cSortOrder = "name_tipo_producto"
    :aCols[04]:cSortOrder = "a.tipo"
    :aCols[10]:cSortOrder = "name_tipo_venta"

 
Saludos,
Regards,

Albeiro Valencia
www.avcsistemas.com
User avatar
albeiroval
 
Posts: 380
Joined: Tue Oct 16, 2007 5:51 pm
Location: Barquisimeto - Venezuela

Re: Mr. Rao, cambio en method SetOrder de xBrowse

Postby nageswaragunupudi » Wed Oct 11, 2017 12:22 am

Please specify sort orders like this:
Code: Select all  Expand view  RUN
 :aCols[01]:cSortOrder = "codigo"
    :aCols[02]:cSortOrder = "descripcion"
    :aCols[03]:cSortOrder = "name_tipo_producto"
    :aCols[04]:cSortOrder = "tipo"
    :aCols[10]:cSortOrder = "name_tipo_venta"
 
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10663
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Mr. Rao, cambio en method SetOrder de xBrowse

Postby nageswaragunupudi » Wed Oct 11, 2017 12:40 am

Recommended way of defining Xbrowse:

Code: Select all  Expand view  RUN

FWNumFormat( "E", .t. ) // call this function at the beginning of the project


REDEFINE XBROWSE oBrw OF oDlg ID 100;
   DATASOURCE oQry;
   COLUMNS "Codigo", "Descripcion", "name_tipo_producto", "Tipo", "componente", "Cantidad", "Costo", "Precio", "Alicuota","name_tipo_venta", "Fecha", "vencimiento" ;
   HEADERS nil,nil,"Producto",nil,"Comp",nil,nil,nil,nil,"Tipo_Venta",nil,"Vence" ;
   COLSIZES 100,400,100,40,40,100,100,100,80,100,80,100,100,50 ;
   LINES FOOTERS AUTOSORT
 


XBrowse automatically
1) Assigns picture clauses, using European format
2) Aligns numbers and dates to RIGHT and character values to LEFT
3) Assigns correct values to cSortOrder
4) Normally column widths are automatically calculated if not specified
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10663
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Mr. Rao, cambio en method SetOrder de xBrowse

Postby nageswaragunupudi » Wed Oct 11, 2017 1:09 am

Alternative way
Code: Select all  Expand view  RUN
// format: { { <expression>, [<header>], [<picture>], [<width>], [<align>], [<sort>] } }
aCols := { ;
   { "Codigo",             nil,        nil,     100 }, ;            
   { "Descripcion",        nil,        nil,     400 }, ;
   { "name_tipo_producto", "Producto", nil,     100 }, ;
   { "Tipo",               nil,        nil,      40 }, ;
   { "componente",         "Compo",    nil,      40 }, ;
   { "Cantidad",           nil,        nil,     100 }, ;
   { "Costo",              nil,        nil,     100 }, ;
   { "Precio",             nil,        nil,     100 }, ;
   { "Alicuota",           nil,        nil,      80 }, ;
   { "name_tipo_venta",    "Tipo_Venta",nil,    100 }, ;
   { "Fecha",              nil,        nil,     100 }, ;
   { "Vencimiento",        "Vence"     nil,      50 }  }

REDEFINE XBROWSE oBrw OF oDlg ID 100;
   DATASOURCE oQry;
   COLUMNS aCols ;
   LINES FOOTERS AUTOSORT
 
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10663
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: Mr. Rao, cambio en method SetOrder de xBrowse

Postby albeiroval » Thu Oct 19, 2017 3:26 am

Mr Rao,

Muchas gracias, ahora funciona correctamente.

Excelente esta forma de crear las columnas en XBROWSE :
// format: { { <expression>, [<header>], [<picture>], [<width>], [<align>], [<sort>] } }
Saludos,
Regards,

Albeiro Valencia
www.avcsistemas.com
User avatar
albeiroval
 
Posts: 380
Joined: Tue Oct 16, 2007 5:51 pm
Location: Barquisimeto - Venezuela

Re: Mr. Rao, cambio en method SetOrder de xBrowse

Postby albeiroval » Wed Feb 14, 2018 3:34 am

albeiroval wrote:Hola Mr Rao,

Propongo este cambio en el METHOD SetOrder de xBrowse para el uso con TDolphin usando ALIAS en las columnas del SELECT.

Cuando creo el XBROWSE en las consultas de MySQl con TDolphin usando LEFT, RIGHT, INNER JOIN, cuando ordeno las columnas lo
hace bien con las columnas que pertenecen a la Tabla del SELECT principal, cuando intento ordenar con las columnas que
no pertenecen a la Tabla del SELECT principal me lanza el de error de mysql que la columna no existe.

Modifique el METHOD SetOrder y funciona correctamente, Aqui dejo el codigo.

Code: Select all  Expand view  RUN


// XBROWSE.PRG
// METHOD SETORDER
// Version Fwh 17.07, Linea 14.399
...

if lDolphin
            uVal     := ::Value
            ::oBrw:oMySql:lInverted := ( ::cOrder == 'D' )
            ::oBrw:oMySql:SetOrder( cSort )
            if n > 0
               ::oBrw:oMySql:GoTo( n )
            else
               // ::oBrw:oMySql:Seek( uVal, Token( ::cSortOrder, nil, 1 ), 1, ::oBrw:oMySql:LastRec(), .t., .t. )
               ::oBrw:oMySql:Seek( uVal, Token( SubStr( ::cSortOrder, At( ".", ::cSortOrder)+1 ), Nil, 1 ), 1, ::oBrw:oMySql:LastRec(), .t., .t. )  // Cambio Propuesto
            endif
            // note: seek is not working in the descending order
         else
            ::oBrw:oMysql:cSort := cSort
         endif
...
 
Saludos,
Regards,

Albeiro Valencia
www.avcsistemas.com
User avatar
albeiroval
 
Posts: 380
Joined: Tue Oct 16, 2007 5:51 pm
Location: Barquisimeto - Venezuela

Re: Mr. Rao, cambio en method SetOrder de xBrowse

Postby albeiroval » Wed Feb 14, 2018 3:44 am

Mr Rao,

Retorno de nuevo al tema porque me presenta nuevamente el mismo error que comente al principio, si hago
el cambio propuesto trabaja correctamente. Esto es cuando uso bKeychar, pero de igual manera si hago click en el
header para ordenar tambien lanza error.

A continuacion el error usando bkeychar :
Code: Select all  Expand view  RUN

Application
===========
   Path and name: D:\Sistema Pollosa\Almacen\WinAlmacen.exe (32 bits)
   Size: 8,274,432 bytes
   Compiler version: Harbour 3.2.0dev (r1603082110)
   FiveWin  version: FWH 17.12
   C compiler version: Borland/Embarcadero C++ 7.0 (32-bit)
   Windows version: 6.2, Build 9200

   Time from start: 0 hours 0 mins 7 secs
   Error occurred at: 13/02/2018, 23:38:27
   Error description: Error MYSQL/1052  Column 'codigo' in where clause is ambiguous

Stack Calls
===========
   Called from: .\source\prg\tdolpsrv.prg => DOLPHIN_DEFERROR( 2816 )
   Called from: .\source\prg\tdolpsrv.prg => TDOLPHINSRV:CHECKERROR( 802 )
   Called from: .\source\prg\tdolpsrv.prg => TDOLPHINSRV:SQLQUERY( 2021 )
   Called from: .\source\prg\tdolpqry.prg => TDOLPHINQRY:LOADQUERY( 1340 )
   Called from: .\source\prg\tdolpqry.prg => (b)TDOLPHINQRY( 249 )
   Called from: .\source\prg\tdolpqry.prg => TDOLPHINQRY:REQUERY( 0 )
   Called from: D:\PROYEC~1\Lib\harbour\Source\prg\DO5AF2~1.PRG => DISPLAYDATAQUERY( 1059 )
   Called from: D:\PROYEC~1\Lib\harbour\Source\prg\DO5AF2~1.PRG => QUICKEYCHAR( 991 )
   Called from: D:\PROYEC~1\Lib\harbour\Source\prg\DO5AF2~1.PRG => (b)QUICKSEARCH( 964 )
   Called from: .\source\classes\TGET.PRG => TGET:KEYCHAR( 1485 )
   Called from:  => TWINDOW:HANDLEEVENT( 0 )
   Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1731 )
   Called from: .\source\classes\TGET.PRG => TGET:HANDLEEVENT( 805 )
   Called from: .\source\classes\WINDOW.PRG => _FWH( 3356 )
   Called from:  => DIALOGBOXINDIRECT( 0 )
   Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE( 296 )
   Called from: D:\PROYEC~1\Lib\harbour\Source\prg\DO5AF2~1.PRG => QUICKSEARCH( 971 )
   Called from: D:\PROYEC~1\Lib\harbour\Source\prg\DO5AF2~1.PRG => QSEEKWILD( 889 )
   Called from: D:\PROYEC~1\Lib\harbour\Source\prg\DO5AF2~1.PRG => QUERYSEEKWILD( 863 )
   Called from: D:\PROYEC~1\Software\POLLOS~1\Source\almacen.prg => (b)DO_ALMACEN( 142 )
   Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:KEYCHAR( 3196 )
   Called from:  => TWINDOW:HANDLEEVENT( 0 )
   Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1731 )
   Called from: .\source\classes\XBROWSE.PRG => TXBROWSE:HANDLEEVENT( 10297 )
   Called from: .\source\classes\WINDOW.PRG => _FWH( 3356 )
   Called from:  => DIALOGBOX( 0 )
   Called from: .\source\classes\DIALOG.PRG => TDIALOG:ACTIVATE( 296 )
   Called from: D:\PROYEC~1\Software\POLLOS~1\Source\almacen.prg => DO_ALMACEN( 155 )
   Called from: D:\PROYEC~1\Software\POLLOS~1\Source\WINALM~1.PRG => (b)POPUPINVENTARIO( 374 )
   Called from: .\source\classes\MENU.PRG => TMENU:ACTIVATE( 1582 )
   Called from: D:\PROYEC~1\Software\POLLOS~1\Source\WINALM~1.PRG => POPUPINVENTARIO( 391 )
   Called from: D:\PROYEC~1\Software\POLLOS~1\Source\WINALM~1.PRG => (b)MAIN( 162 )
   Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:CLICK( 688 )
   Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:LBUTTONUP( 928 )
   Called from: .\source\classes\CONTROL.PRG => TCONTROL:HANDLEEVENT( 1721 )
   Called from: .\source\classes\BTNBMP.PRG => TBTNBMP:HANDLEEVENT( 1883 )
   Called from: .\source\classes\WINDOW.PRG => _FWH( 3356 )
   Called from:  => WINRUN( 0 )
   Called from: .\source\classes\WINDOW.PRG => TWINDOW:ACTIVATE( 1037 )
   Called from: D:\PROYEC~1\Software\POLLOS~1\Source\WINALM~1.PRG => MAIN( 211 )

System
======
   CPU type: Intel(R) Core(TM) i5-3470 CPU @ 3.20GHz 3193 Mhz
   Hardware memory: 6044 megs

   Free System resources: 90 %
        GDI    resources: 90 %
        User   resources: 90 %

   Windows total applications running: 5
      1 ,                                                                                                    
      2 , C:\WINDOWS\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.16299.192_none_5d76048
      3 , D:\Sistema Pollosa\Almacen\WinAlmacen.exe                                                          
      4 DDE Server Window, C:\WINDOWS\System32\OLE32.DLL                                                                      
      5 G, C:\WINDOWS\WinSxS\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.16299.192_none_8e60f76b0273650

Variables in use
================
   Procedure     Type   Value
   ==========================
   DOLPHIN_DEFERROR
     Param   1:    O    Class: ERROR
   TDOLPHINSRV:CHECKERROR
     Param   1:    O    Class: TDOLPHINSRV
     Param   2:    N    1052
     Param   3:    L    .F.
     Param   4:    C    ""
     Local   1:    O    Class: ERROR
   TDOLPHINSRV:SQLQUERY
     Local   1:    N    1052
     Local   2:    U    
     Local   3:    L    .F.
   TDOLPHINQRY:LOADQUERY
     Param   1:    C    "   SELECT  a.codigo,
                    a.tipo_producto,
            CASE a.tipo_producto
                        WHEN 1 THEN 'Materia_Prima'
                        WHEN 2 THEN 'Terminado'
                        WHEN 3 THEN 'Procesado'
                        WHEN 4 THEN 'Suministro'
                    END AS name_tipo_producto,
                    a.tipo,
                    a.componente,
                    a.cantidad,
            a.costo,
            a.costopromedio,
            a.precio,
            a.alicuota,
            a.fecha,
            a.vencimiento,
            a.tipo_venta,
            CASE a.tipo_venta WHEN 1 THEN 'Propio' ELSE 'Franquicia' END AS name_tipo_venta,
            a.porcentaje,
            a.my_recno,
            b.descripcion AS nametipo,
            c.descripcion AS namecompon,
                    d.nombre,
                    d.descripcion,
                    d.medida,
                    d.marca  
    FROM Almacen_ a
    LEFT JOIN RefeTipo b ON a.tipo = b.tipo
    LEFT JOIN RefeComp c ON a.tipo = c.tipo AND a.componente = c.componente
    LEFT JOIN Catalogo d ON a.codigo = d.codigo
     WHERE codigo LIKE '%26%'"

     Local   1:    U    
     Local   2:    N    1
     Local   3:    N    985
   (b)TDOLPHINQRY
     Local   1:    L    .T.
     Local   2:    U    
     Local   3:    U    
     Local   4:    O    Class: TDOLPHINSRV
     Local   5:    C    "   SELECT  a.codigo,
                    a.tipo_producto,
            CASE a.tipo_producto
                        WHEN 1 THEN 'Materia_Prima'
                        WHEN 2 THEN 'Terminado'
                        WHEN 3 THEN 'Procesado'
                        WHEN 4 THEN 'Suministro'
                    END AS name_tipo_producto,
                    a.tipo,
                    a.componente,
                    a.cantidad,
            a.costo,
            a.costopromedio,
            a.precio,
            a.alicuota,
            a.fecha,
            a.vencimiento,
            a.tipo_venta,
            CASE a.tipo_venta WHEN 1 THEN 'Propio' ELSE 'Franquicia' END AS name_tipo_venta,
            a.porcentaje,
            a.my_recno,
            b.descripcion AS nametipo,
            c.descripcion AS namecompon,
                    d.nombre,
                    d.descripcion,
                    d.medida,
                    d.marca  
    FROM Almacen_ a
    LEFT JOIN RefeTipo b ON a.tipo = b.tipo
    LEFT JOIN RefeComp c ON a.tipo = c.tipo AND a.componente = c.componente
    LEFT JOIN Catalogo d ON a.codigo = d.codigo
     WHERE codigo LIKE '%26%'"

     Local   6:    L    .T.
   TDOLPHINQRY:REQUERY
     Param   1:    O    Class: TDOLPHINQRY
   DISPLAYDATAQUERY
   QUICKEYCHAR
     Param   1:    C    "26"
     Param   2:    O    Class: TDOLPHINQRY
     Param   3:    O    Class: TXBROWSE
     Local   1:    C    "   SELECT  a.codigo,
                    a.tipo_producto,
            CASE a.tipo_producto
                        WHEN 1 THEN 'Materia_Prima'
                        WHEN 2 THEN 'Terminado'
                        WHEN 3 THEN 'Procesado'
                        WHEN 4 THEN 'Suministro'
                    END AS name_tipo_producto,
                    a.tipo,
                    a.componente,
                    a.cantidad,
            a.costo,
            a.costopromedio,
            a.precio,
            a.alicuota,
            a.fecha,
            a.vencimiento,
            a.tipo_venta,
            CASE a.tipo_venta WHEN 1 THEN 'Propio' ELSE 'Franquicia' END AS name_tipo_venta,
            a.porcentaje,
            a.my_recno,
            b.descripcion AS nametipo,
            c.descripcion AS namecompon,
                    d.nombre,
                    d.descripcion,
                    d.medida,
                    d.marca  
    FROM Almacen_ a
    LEFT JOIN RefeTipo b ON a.tipo = b.tipo
    LEFT JOIN RefeComp c ON a.tipo = c.tipo AND a.componente = c.componente
    LEFT JOIN Catalogo d ON a.codigo = d.codigo
     WHERE codigo LIKE '%26%'"

     Local   2:    C    "codigo"
   (b)QUICKSEARCH
     Param   1:    N    54
     Param   2:    O    Class: TDOLPHINQRY
     Param   3:    O    Class: TXBROWSE
     Param   4:    O    Class: TGET
     Local   1:    C    "26"
   TGET:KEYCHAR
     Param   1:    N    54
     Param   2:    N    5046273
     Param   3:    O    Class: TGET
   TWINDOW:HANDLEEVENT
     Param   1:    N    54
     Param   2:    N    5046273
     Local   1:    U    
     Local   2:    U    
     Local   3:    U    
     Local   4:    U    
   TCONTROL:HANDLEEVENT
     Param   1:    N    258
     Param   2:    N    54
     Param   3:    N    5046273
   TGET:HANDLEEVENT
     Param   1:    N    258
     Param   2:    N    54
     Param   3:    N    5046273
     Local   1:    U    
   _FWH
     Param   1:    N    258
     Param   2:    N    54
     Param   3:    N    5046273
     Local   1:    U    
     Local   2:    U    
   DIALOGBOXINDIRECT
     Param   1:    N    5046273
     Param   2:    N    258
     Param   3:    N    54
     Param   4:    N    5046273
     Param   5:    N    54
     Local   1:    O    Class: TGET
   TDIALOG:ACTIVATE
     Param   1:    N    4194304
     Param   2:    C    "€  €     Yÿ‹ÿ6"          P         Œ  – S T A T I C   B U S C A R   P O R   C O D I G O   :       € P      ( — E D I T   2                                                               "
     Param   3:    N    1510008
     Param   4:    O    Class: TDIALOG
   QUICKSEARCH
     Param   1:    U    
     Param   2:    U    
     Param   3:    U    
     Param   4:    L    .F.
     Param   5:    U    
     Param   6:    L    .T.
     Param   7:    B    {|| ... }
     Param   8:    U    
     Param   9:    U    
     Param  10:    U    
     Param  11:    U    
     Local   1:    N    1510008
     Local   2:    S    
     Local   3:    O    Class: TDIALOG
   QSEEKWILD
     Param   1:    O    Class: TDOLPHINQRY
     Param   2:    O    Class: TXBROWSE
     Param   3:    N    50
     Local   1:    O    Class: TDIALOG
     Local   2:    O    Class: TFONT
     Local   3:    O    Class: TGET
     Local   4:    C    "
2                             "
     Local   5:    C    "
BUSCAR POR CODIGO :"
     Local   6:    L    .T.
     Local   7:    A    Len:    2
     Local   8:    O    Class: TXBRWCOLUMN
     Local   9:    L    .F.
   QUERYSEEKWILD
     Param   1:    O    Class: TXBROWSE
     Param   2:    O    Class: TDOLPHINQRY
     Param   3:    C    "
  SELECT  a.codigo,
                    a.tipo_producto,
            CASE a.tipo_producto
                        WHEN 1 THEN 'Materia_Prima'
                        WHEN 2 THEN 'Terminado'
                        WHEN 3 THEN 'Procesado'
                        WHEN 4 THEN 'Suministro'
                    END AS name_tipo_producto,
                    a.tipo,
                    a.componente,
                    a.cantidad,
            a.costo,
            a.costopromedio,
            a.precio,
            a.alicuota,
            a.fecha,
            a.vencimiento,
            a.tipo_venta,
            CASE a.tipo_venta WHEN 1 THEN 'Propio' ELSE 'Franquicia' END AS name_tipo_venta,
            a.porcentaje,
            a.my_recno,
            b.descripcion AS nametipo,
            c.descripcion AS namecompon,
                    d.nombre,
                    d.descripcion,
                    d.medida,
                    d.marca  
    FROM Almacen_ a
    LEFT JOIN RefeTipo b ON a.tipo = b.tipo
    LEFT JOIN RefeComp c ON a.tipo = c.tipo AND a.componente = c.componente
    LEFT JOIN Catalogo d ON a.codigo = d.codigo
    ORDER BY
"
     Param   4:    C    "
codigo"
     Param   5:    N    50
     Param   6:    L    .F.
   (b)DO_ALMACEN
     Param   1:    O    Class: TXBROWSE
     Param   2:    O    Class: TDOLPHINQRY
     Param   3:    C    "
  SELECT  a.codigo,
                    a.tipo_producto,
            CASE a.tipo_producto
                        WHEN 1 THEN 'Materia_Prima'
                        WHEN 2 THEN 'Terminado'
                        WHEN 3 THEN 'Procesado'
                        WHEN 4 THEN 'Suministro'
                    END AS name_tipo_producto,
                    a.tipo,
                    a.componente,
                    a.cantidad,
            a.costo,
            a.costopromedio,
            a.precio,
            a.alicuota,
            a.fecha,
            a.vencimiento,
            a.tipo_venta,
            CASE a.tipo_venta WHEN 1 THEN 'Propio' ELSE 'Franquicia' END AS name_tipo_venta,
            a.porcentaje,
            a.my_recno,
            b.descripcion AS nametipo,
            c.descripcion AS namecompon,
                    d.nombre,
                    d.descripcion,
                    d.medida,
                    d.marca  
    FROM Almacen_ a
    LEFT JOIN RefeTipo b ON a.tipo = b.tipo
    LEFT JOIN RefeComp c ON a.tipo = c.tipo AND a.componente = c.componente
    LEFT JOIN Catalogo d ON a.codigo = d.codigo
    ORDER BY
"
     Param   4:    N    50
     Local   1:    U    
     Local   2:    N    1
     Local   3:    C    "
codigo"
   TXBROWSE:KEYCHAR
     Param   1:    N    50
     Param   2:    N    5242881
     Param   3:    O    Class: TXBROWSE
     Param   4:    O    Class: TXBRWCOLUMN
   TWINDOW:HANDLEEVENT
     Param   1:    N    50
     Param   2:    N    5242881
     Local   1:    B    {|| ... }
     Local   2:    O    Class: TXBRWCOLUMN
     Local   3:    U    
     Local   4:    U    
   TCONTROL:HANDLEEVENT
     Param   1:    N    258
     Param   2:    N    50
     Param   3:    N    5242881
   TXBROWSE:HANDLEEVENT
     Param   1:    N    258
     Param   2:    N    50
     Param   3:    N    5242881
     Local   1:    U    
   _FWH
     Param   1:    N    258
     Param   2:    N    50
     Param   3:    N    5242881
   DIALOGBOX
     Param   1:    N    5242881
     Param   2:    N    258
     Param   3:    N    50
     Param   4:    N    5242881
     Param   5:    N    12
     Local   1:    O    Class: TXBROWSE
   TDIALOG:ACTIVATE
     Param   1:    N    4194304
     Param   2:    C    "
xbrowse"
     Param   3:    N    7014758
     Param   4:    O    Class: TDIALOG
   DO_ALMACEN
     Param   1:    U    
     Param   2:    U    
     Param   3:    U    
     Param   4:    L    .T.
     Param   5:    B    {|| ... }
     Param   6:    L    .T.
     Param   7:    B    {|| ... }
     Param   8:    U    
     Param   9:    U    
     Param  10:    U    
     Param  11:    U    
     Local   1:    N    7014758
     Local   2:    S    
     Local   3:    O    Class: TDIALOG
   (b)POPUPINVENTARIO
     Local   1:    O    Class: TDOLPHINQRY
     Local   2:    C    "
  SELECT  a.codigo,
                    a.tipo_producto,
            CASE a.tipo_producto
                        WHEN 1 THEN 'Materia_Prima'
                        WHEN 2 THEN 'Terminado'
                        WHEN 3 THEN 'Procesado'
                        WHEN 4 THEN 'Suministro'
                    END AS name_tipo_producto,
                    a.tipo,
                    a.componente,
                    a.cantidad,
            a.costo,
            a.costopromedio,
            a.precio,
            a.alicuota,
            a.fecha,
            a.vencimiento,
            a.tipo_venta,
            CASE a.tipo_venta WHEN 1 THEN 'Propio' ELSE 'Franquicia' END AS name_tipo_venta,
            a.porcentaje,
            a.my_recno,
            b.descripcion AS nametipo,
            c.descripcion AS namecompon,
                    d.nombre,
                    d.descripcion,
                    d.medida,
                    d.marca  
    FROM Almacen_ a
    LEFT JOIN RefeTipo b ON a.tipo = b.tipo
    LEFT JOIN RefeComp c ON a.tipo = c.tipo AND a.componente = c.componente
    LEFT JOIN Catalogo d ON a.codigo = d.codigo
    ORDER BY
"
     Local   3:    O    Class: TDIALOG
     Local   4:    O    Class: TXBROWSE
     Local   5:    O    Class: TFONT
     Local   6:    O    Class: TBAR
     Local   7:    A    Len:   13
     Local   8:    L    .F.
   TMENU:ACTIVATE
     Param   1:    O    Class: TMENUITEM
   POPUPINVENTARIO
     Param   1:    N    76
     Param   2:    N    249
     Param   3:    O    Class: TBAR
     Param   4:    L    .T.
     Param   5:    N    0
     Local   1:    A    Len:    2
   (b)MAIN
     Param   1:    O    Class: TBTNBMP
     Local   1:    O    Class: TMENU
   TBTNBMP:CLICK
     Param   1:    O    Class: TBTNBMP
   TBTNBMP:LBUTTONUP
   TCONTROL:HANDLEEVENT
     Param   1:    N    47
     Param   2:    N    35
     Param   3:    N    0
     Local   1:    L    .T.
     Local   2:    N    0
     Local   3:    S    
   TBTNBMP:HANDLEEVENT
     Param   1:    N    514
     Param   2:    N    0
     Param   3:    N    3080227
     Local   1:    U    
   _FWH
     Param   1:    N    514
     Param   2:    N    0
     Param   3:    N    3080227
   WINRUN
     Param   1:    N    3080227
     Param   2:    N    514
     Param   3:    N    0
     Param   4:    N    3080227
     Param   5:    N    6
     Local   1:    O    Class: TBTNBMP
   TWINDOW:ACTIVATE
     Param   1:    N    7014758
   MAIN
     Param   1:    C    "
MAXIMIZED"
     Param   2:    U    
     Param   3:    U    
     Param   4:    U    
     Param   5:    U    
     Param   6:    B    {|| ... }
     Param   7:    U    
     Param   8:    B    {|| ... }
     Param   9:    U    
     Param  10:    U    
     Param  11:    U    
     Param  12:    U    
     Param  13:    U    
     Param  14:    U    
     Param  15:    U    
     Param  16:    U    
     Param  17:    B    {|| ... }
     Param  18:    U    
     Param  19:    U    
     Param  20:    L    .F.
     Local   1:    O    Class: TWINDOW
     Local   2:    U    
     Local   3:    U    

Linked RDDs
===========
   DBF
   DBFFPT
   DBFBLOB
   DBFCDX
   DBFNTX

DataBases in use
================

Classes in use:
===============
     1 ERROR
     2 HBCLASS
     3 HBOBJECT
     4 TDOLPHINQRY
     5 TWINDOW
     6 TCONTROL
     7 TXBROWSE
     8 TXBRWCOLUMN
     9 TGET
    10 TCOMBOBOX
    11 TMULTIGET
    12 TVARIABLE
    13 TMYSQLSERVER
    14 TBRUSH
    15 TDIALOG
    16 TFONT
    17 TREG32
    18 TRECT
    19 TDOLPHINSRV
    20 TBITMAP
    21 TICON
    22 TBAR
    23 TBTNBMP
    24 TMSGBAR
    25 TMSGITEM
    26 TTIMER
    27 TMENU
    28 TMENUITEM
    29 TSAY
    30 TSCROLLBAR
    31 TCLIPBOARD
    32 GET
    33 TCLIPGET
    34 TSTRUCT

Memory Analysis
===============
      541 Static variables

   Dynamic memory consume:
      Actual  Value:    2162688 bytes
      Highest Value:    2162688 bytes



Este el codigo que uso :
Code: Select all  Expand view  RUN

TEXT INTO cQuery
    SELECT  a.codigo,
                    a.tipo_producto,
            CASE a.tipo_producto
                        WHEN 1 THEN 'Materia_Prima'
                        WHEN 2 THEN 'Terminado'
                        WHEN 3 THEN 'Procesado'
                        WHEN 4 THEN 'Suministro'
                    END AS name_tipo_producto,
                    a.tipo,
                    a.componente,
                    a.cantidad,
            a.costo,
            a.costopromedio,
            a.precio,
            a.alicuota,
            a.fecha,
            a.vencimiento,
            a.tipo_venta,
            CASE a.tipo_venta WHEN 1 THEN 'Propio' ELSE 'Franquicia' END AS name_tipo_venta,
            a.porcentaje,
            a.my_recno,
            b.descripcion AS nametipo,
            c.descripcion AS namecompon,
                    d.nombre,
                    d.descripcion,
                    d.medida,
                    d.marca  
    FROM %1 a
    LEFT JOIN %2 b ON a.tipo = b.tipo
    LEFT JOIN %3 c ON a.tipo = c.tipo AND a.componente = c.componente
    LEFT JOIN %4 d ON a.codigo = d.codigo
    ORDER BY
  ENDTEXT  
   
  cQuery := StrFormat( cQuery, TABLA_ALMACEN, TABLA_TIPO, TABLA_COMPONENTE, TABLA_CATALOGO )
   
  oQry = oSrv:CreateQuery( cQuery + "tipo" )
 
  DEFINE FONT oFont NAME "TAHOMA" SIZE 0,-12 BOLD

  DEFINE DIALOG oDlg TITLE "PRODUCTOS ALMACEN" RESOURCE "xbrowse" ICON aBitmap[ BMP32_ICON ] FONT oFont
   
  // format: { { <expression>, [<header>], [<picture>], [<width>], [<align>], [<sort>] } }  
  aCols := { ;
   { "Codigo",             nil,             nil,     100 }, ;            
   { "Descripcion",        nil,             nil,     400 }, ;
   { "name_tipo_producto", "Producto",      nil,     100 }, ;
   { "Tipo",               nil,             nil,      40 }, ;
   { "componente",         "Compo",         nil,      50 }, ;
   { "Cantidad",           nil,             nil,     100 }, ;
   { "Costo",              nil,             nil,     100 }, ;
   { "costopromedio",           "Promedio",         nil,     100 }, ;
   { "Precio",             nil,             nil,     100 }, ;
   { "Alicuota",           nil,             nil,      80 }, ;
   { "name_tipo_venta",    "Tipo_Venta",    nil,     100 }, ;
   { "Fecha",              nil,             nil,     100 }, ;
   { "Vencimiento",        "Vence",         nil,      50 }  }

    REDEFINE XBROWSE oBrw OF oDlg ID 100;
    DATASOURCE oQry;
    COLUMNS aCols ;
    LINES FOOTERS AUTOSORT
       
  WITH OBJECT oBrw
    :QueryWithJoin( cQuery, TABLA_ALMACEN, oQry )
   
    :aCols[01]:cSortOrder = "codigo"
    :aCols[02]:cSortOrder = "descripcion"
    :aCols[03]:cSortOrder = "name_tipo_producto"
    :aCols[04]:cSortOrder = "tipo"
    :aCols[11]:cSortOrder = "name_tipo_venta"

   :bKeyChar = {|nKey| QuerySeekWild( oBrw, oQry, cQuery, nKey )}

  END
 
 


function QueryWithJoin :
Code: Select all  Expand view  RUN

//--------------------------------------//

Function QueryWithJoin( cQuery, cTable, oQry )
  Local Self := HB_QSelf()
   
  if hb_isNil( cQuery )
     MsgStop("Falta parametro cQuery", "Error")
     Return Nil
  endif
 
  if ! hb_isString( cTable )
     MsgStop("Falta parametro cTable", "Error")
     Return Nil
  endif
 
  if hb_isObject( oQry )
     if oQry:IsKindOf( "TDOLPHINQRY" )
          oQry:aTables      = { cTable }
          oQry:bOnNewFilter = bSetNewFilterQuery( cQuery, oQry, Self )
     else
            MsgStop("No existe el objeto TDOLPHINQRY", "Error")
            Return Nil
     endif
  else
     MsgStop("Falta objeto oQry", "Error")
     Return Nil
  endif
 
Return Nil  

//--------------------------------------//

static Function bSetNewFilterQuery( cQuery, oQry, oBrw )
Return {|oSelf, nType| oSelf:cQuery := GetNewQuery( cQuery, oSelf:cOrder, oBrw ), .F. }     

//--------------------------------------//

static Function GetNewQuery( cQuery, cOrder, oBrw )
 
  if !("ORDER BY" $ Upper( cQuery ))
     cQuery += " ORDER BY "
  endif    
 
  cOrder := SubStr( cOrder, At(".", cOrder)+1 )
  cQuery += cOrder
 
  if oBrw:oSeek != nil
     oBrw:oSeek:SetText("")
  endif
   
Return cQuery

 
Saludos,
Regards,

Albeiro Valencia
www.avcsistemas.com
User avatar
albeiroval
 
Posts: 380
Joined: Tue Oct 16, 2007 5:51 pm
Location: Barquisimeto - Venezuela


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 37 guests