FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Fw maria-/mysql
Posts: 411
Joined: Sun Jan 31, 2010 03:30 PM
Fw maria-/mysql
Posted: Sun Jun 25, 2023 10:20 PM

Buena tarde, el método oRecSet:setOrder, permite usar má de columna ...?

La idea es no gastar mas consultas a base de datos para traerla ordenado , tratando de simular al v Dbsetorder de los dbf. Gracias...

Posts: 3358
Joined: Fri Oct 07, 2005 08:20 PM
Re: Fw maria-/mysql
Posted: Mon Jun 26, 2023 01:45 AM
Amigo:

Intenta con
Code (fw): Select all Collapse
oRecSet:SORT := "GAS_IMP,GAS_CVE DESC" // o ASC
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
Posts: 411
Joined: Sun Jan 31, 2010 03:30 PM
Re: Fw maria-/mysql
Posted: Tue Jun 27, 2023 11:01 PM
Armando buena tarde..

Ya me funciona el método setOrder. Trataba de ordenar con los criterios del ordNname() de los CDX, tuve que quitar : upper, str, (), etc...
Ya esta funcionando.
Ahora requiero hacer búsquedas optimizada sobre el recordSet : existe un método o tengo que hace búsqueda secuencial.


Gracias
JONSSSON RUSSI

Nota: existe una documentación completa , diferente a esta que esta en el foro :

MYSQL_TinyIntAsLogical( lOnOff ) --> lPrevSetting // Default False
By default, BIT fields are used for Logical values.
When set ON, TinyInt is used for Logical values instead.
This setting is used at the time of Creation and Opening of a Table. This setting can be toggled suitably while reading tables created with different settings. There can be different tables opened simultaneously with different settings.

Other methods:
Posts: 411
Joined: Sun Jan 31, 2010 03:30 PM
Re: Fw maria-/mysql
Posted: Wed Jun 28, 2023 01:32 AM

Ya encontré el método :seek

Gracias

Posts: 411
Joined: Sun Jan 31, 2010 03:30 PM
Re: Fw maria-/mysql
Posted: Sat Jul 01, 2023 11:13 PM
Buena tarde

Requiero construir un txbrowse con recordset ( fwmaria ),

Anexo ejemplo de como lo hago con tablas DBF

Jonsson Russi
Bucaramanga , Colombia
Code (fw): Select all Collapse
   AADD( vConBrw,{ "HIS->cCodigoCon",   "Cpto"         , "XX"               ,  .F. ,  6  } )
   AADD( vConBrw,{ "HIS->cDocumeTra",   "Documento"        , REPL("X",8)    ,  .F.  ,  10 } )
   AADD( vConBrw,{ "cFecCor(HIS->dFecTraTra)",   "Fecha"            , "@D"            ,  .F.,  12 } )
   AADD( vConBrw,{ "cFecCor(HIS->dFecIniTra)",   "Fecha Inicial"    , "@D"            ,  .F.,  12 } )
   AADD( vConBrw,{ "cFecCor(HIS->dFecFinTra)",   "Fecha Final"      , "@D"            ,  .F.,  12 } )

oBrwMovCem := BrowseConsulta( vConBrw, oGrpHis, "HIS",;
                                 fFunMod,;  
                                 fFunMod,;
                                 NIL,;
                                 NIL,1,fFunMod,"COLOR MARRON","FONDO" )


FUNCTION BrowseConsulta( vConBrw, oPanBrw, cAliTab, fFunDCl,fFunEnt,fFunDel,;
                         fFunIns,nColPos,fFunMod,cTipCol,cVerFon,nFonBro)


     LOCAL oCajDia, cCol, aItem , oBrwFW2 , K := 1, campo, nPosGui := 0
     LOCAL A := "IMAGEN", nRecSel := 0, oBrush, oCol , oFont, J:= 0, oErr


     LOCAL aRowGrad
     LOCAL aSelGrad
     LOCAL XaSelGrad

     IF SELECT(cAliTab) == 0
        RETURN NIL
     ENDIF

      XaSelGrad := { { .5, RGB( 255,  238, 185 ), RGB( 255, 237, 178 ) }, ;
                         { .5, RGB( 255, 200,34 ), RGB( 255, 233, 162 ) } }

      aSelGrad := { { .5, RGB( 191,205,219 ), RGB(  191,205,219 ) }, ;
                      { .5, RGB( 191,205,219 ), RGB(  191,205,219 ) } }


     IF nFonBro == NIL
        DEFINE FONT oFont NAME "Arial Narrow"   SIZE 5, 18
     ELSEIF nFonBro == 1
        DEFINE FONT oFont NAME "Arial" SIZE 8, 10
     ELSEIF nFonBro == 2
        DEFINE FONT oFont NAME "Times New Roman" SIZE 10, 16
     ELSEIF nFonBro == 3
        DEFINE FONT oFont NAME "Arial Black" SIZE 12, 10
     ELSEIF nFonBro == 4
        DEFINE FONT oFont NAME "Courier New" SIZE 14, 10 BOLD
     ELSEIF nFonBro == 5
        //DEFINE FONT oFonBro NAME "Tahoma" SIZE 0, -16
        DEFINE FONT oFont NAME "Arial Narrow"   SIZE 8, 20
     ELSE
       // oFont :=  M->oFonAc11
        oFont:SetFont(  M->oFonAc11 )
     ENDIF

     XbrNumFormat( 'E', .t. )

     SYSREFRESH()

     INKEY(0.2)


     DEFAULT nColPos := 1
     DEFAULT fFunMod := NIL

TRY

     SELECT (cAliTab)
     nRecSel  := (cAliTab)->( RecNo() )

     IF cVerFon <> nil
        IF EMP->cTipConCon == "N"
           DEFINE BRUSH oBrush FILE "IMAGENES\FIVEBACK.JPG"
        ELSE
           DEFINE BRUSH oBrush FILE "IMAGENES\fondo.jpg"
        ENDIF
     ENDIF

   @ 0,0 XBROWSE oBrwFW2 OF oPanBrw;
         AUTOSORT FOOTERS FASTEDIT LINES CELL


   WITH OBJECT ( oBrwFW2 )

         IF M->SW_FONDO
            :l2007         := .F.
            :bClrHeader    := {|| { CLR_WHITE, nRGB( 80, 80, 80 ) } }      //87,129,187
            :bClrFooter    := {|| { CLR_WHITE, nRGB( 80, 80, 80 ) } }
         ELSE
            :l2007         := .T.
         ENDIF

         :nStretchCol   := 1

         :nMarqueeStyle := 4
         :bClrSelFocus  := { || { CLR_HBLUE, XaSelGrad } }
         :bClrRowFocus  := { || { CLR_BLACK, aSelGrad } }     // NARANJA, CELESTE

         //:lKinetic            := .F.
         :bChange             := { || nRecSel := oBrwFW2:BookMark }
         //:nMarqueeStyle       := MARQSTYLE_HIGHLCELL

         :nColDividerStyle    := LINESTYLE_BLACK
         :nRowDividerStyle    := LINESTYLE_BLACK
         //:nRowDividerStyle    := LINESTYLE_NOLINES
         //:nColDividerStyle    := LINESTYLE_NOLINES
         :lColDividerComplete := .f.

         :lColDividerComplete := .F.
         :nHeaderLines        := 1
         :nFooterLines        := 1
         :nDataLines          := 1
         :lFooter             := .T.
         :lFastEdit           := .T.
         :nFreeze             := 1

         :cAlias              := cAliTab

         // &fFunDCl
         IF fFunDCl <> NIL
            :bLDblClick:=   { ||  &(fFunDCl), oBrwFW2:Refresh() }
         ENDIF

         IF ALIAS(cAliTab) == "LEC" .OR. ALIAS(cAliTab) == "CAJ" .OR. ;
            ALIAS(cAliTab) == "IMP" .OR. ALIAS(cAliTab) == "HIS" .OR. ;
            ALIAS(cAliTab) == "CTB" .OR. ALIAS(cAliTab) == "LEA" .OR. ;
            ALIAS(cAliTab) == "CAX" .OR. ALIAS(cAliTab) == "HI2" .OR. ;
            ALIAS(cAliTab) == "FTM" .OR. ALIAS(cAliTab) == "TCA" .OR. ;
            ALIAS(cAliTab) == "DRI"
           //
         ELSE
            IF (cAliTab)->( IndexOrd() ) > 0
               :bSeek := {|c| (cAliTab)->( DBSEEK( UPPER(C) ) ) }
            ENDIF
         ENDIF

         :bkeydown  := { | nKey,nFlags | EvaluaTecla(cAliTab,oBrwFW2,@nKey,fFunDCl,fFunEnt,fFunDel,fFunIns,fFunMod,nFlags )  }


         //:keydown  := { |nkey ,nFlags| func1(nkey,nFlags)}

         FOR EACH aItem IN vConBrw

               WITH OBJECT (oCol := oBrwFW2:AddCol())
                // :oDataFont :=  {|| oFonBro  }
                 :bStrData :=  MakeValueBlock(@aItem,1, 3 )
                 :cHeader  := HB_OEMTOANSI(aItem[ 2 ])

                 :nHeadStrAlign := AL_CENTER

                 IF LEN(aItem)> 8
                    IF aItem[ 9 ] <> NIL
                       IF aItem[ 9 ] == "D" .OR. aItem[ 9 ] == "N"
                          :nDataStrAlign       := AL_RIGHT
                       ELSEIF aItem[ 9 ] == "I"
                          :nDataStrAlign       := AL_LEFT
                       ELSEIF aItem[ 9 ] == "C"
                          :nDataStrAlign       := AL_CENTER
                       ENDIF
                    ENDIF
                 ENDIF

                 IF aItem[ 3 ] <> NIL
                    :cEditPicture  := aItem[ 3 ]
                 ENDIF
                 IF aItem[ 5 ] <> NIL
                    :nWidth := aItem[ 5 ] * 8
                 ELSE
                    :nWidth :=  240
                    // :nWidth := aItem[ 5 ] * 8  GETTEXTWIDTH(0,REPLICATE("x",vVecAnc[J]),oFonAct:hFont)*nFacFon
                 ENDIF
                 IF aItem [ 4 ]          // SI ES VERDADERO HABILITA CAPTURA CON GET
                    :nEditType := 1
                    :lAutoSave := .F.

                    //:bOnPostEdit := {|o, v, n| IIF ( n != VK_ESCAPE, ;
                    //    ModificaColumna(oBrwFW2, cAliTab, SUBS(ALLTRIM(aItem[1]), ATNUM('>',aItem[1],1)+1), v, "VALID LOCAL" ), ) }

                    :bOnPostEdit := {|o, v, n| IIF ( n != VK_ESCAPE, ModificaColumna(oBrwFW2,cAliTab ,;
                                    SUBS(ALLTRIM(aItem[1]),ATNUM('>',aItem[1],1)+1),v,;
                                   "VALID LOCAL",IF( LEN(aItem)>5,aItem[6],NIL),IF(LEN(aItem)>6,aItem[7],NIL),IF(LEN(aItem)>7,aItem[8],NIL) ), NIL ) }


                 ENDIF
                 :oDataFont           := oFont
                 :oHeaderFont         := oFont
            END
            :aCols[ :nFreeze ]:bClrStd  := {|| { RGB(0,0,0) ,RGB(234,234,234)  } } // CLR_WHITE, CLR_BLUE
         NEXT nFor

         FOR J := 1 TO LEN(:aCols)
             //:aCols[J]:bLClickHeader := {|| oBrwFW2:GoTop(), oBrwFW2:Refresh()}
         NEXT J

         :SetRDD()

         IF M->SW_FONDO

            IF cTipCol <> NIL
               :SetZebra(.T.,{ {  CLR_WHITE, RGB( 234,234,234 ) },  { RGB(0,0,0) , RGB( 255,255,242 ) } } )
            ELSE                            //
               :SetZebra(.T.,{ {   RGB(0,0,0) , RGB( 213,198,187 ) },  { RGB(0,0,0) , RGB( 255,255,242 ) } } )
            ENDIF

         ELSE
            IF cTipCol <> NIL
              :SetZebra(.T.,{ {  CLR_WHITE, RGB( 234,234,234 ) },  { RGB(0,0,0) , RGB( 255,255,242 ) } } )
            ELSE                            //
              :SetZebra(.T.,{ {   RGB(0,0,0) , RGB( 234,234,234 ) },  { RGB(0,0,0) , RGB( 255,255,242 ) } } )
            ENDIF

         ENDIF
         //:nStretchCol    := STRETCHCOL_LAST

         :SetChecks()
         //:Married:SetCheck( { "GREEN", "RED" }, EDIT_GET )
         :CreateFromCode()
         :SetFocus()
         :oClient             := oBrwFW2
         :AdjClient()
         :SelectCol(nColPos)
         :nMoveType = MOVE_NONE
         IF cVerFon <> nil
            :SetBackGround( oBrush )
         ENDIF
         IF ALLTRIM(M->cTipSer) == "DBFCDX"
           :refresh()
         ENDIF
         :HasBorder(.F.)
     END



CATCH oErr
  alerta("Error. Construyendo browse de consulta")
  MyErrorZerus( oErr, "NO SALE DE RUSSOFT" )
  RETURN NIL
END

RETURN BrowseConsulta := oBrwFW2

Continue the discussion