Fw maria-/mysql

Fw maria-/mysql

Postby russimicro » 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...
russimicro
 
Posts: 262
Joined: Sun Jan 31, 2010 3:30 pm
Location: Bucaramanga - Colombia

Re: Fw maria-/mysql

Postby Armando » Mon Jun 26, 2023 1:45 am

Amigo:

Intenta con

Code: Select all  Expand view  RUN

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
User avatar
Armando
 
Posts: 3242
Joined: Fri Oct 07, 2005 8:20 pm
Location: Toluca, México

Re: Fw maria-/mysql

Postby russimicro » 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:
russimicro
 
Posts: 262
Joined: Sun Jan 31, 2010 3:30 pm
Location: Bucaramanga - Colombia

Re: Fw maria-/mysql

Postby russimicro » Wed Jun 28, 2023 1:32 am

Ya encontré el método :seek

Gracias
russimicro
 
Posts: 262
Joined: Sun Jan 31, 2010 3:30 pm
Location: Bucaramanga - Colombia

Re: Fw maria-/mysql

Postby russimicro » 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: Select all  Expand view  RUN


   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




 
russimicro
 
Posts: 262
Joined: Sun Jan 31, 2010 3:30 pm
Location: Bucaramanga - Colombia


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 114 guests