FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour XBrowse + PostgreSQL
Posts: 132
Joined: Thu Mar 08, 2007 06:12 PM
XBrowse + PostgreSQL
Posted: Sun Mar 03, 2013 04:37 AM
Para el amigo luiz antonio Oliveira y a quien pueda interesar, muestro un consulta sql

Code (fw): Select all Collapse
/*
    XBrose - PostgreSQL 
    Se Tiene que enlazar las librerias ( hbpgsql y libpq )
    
*/
#include "fivewin.ch"
*--
REQUEST HB_LANG_ESWIN
REQUEST HB_CODEPAGE_ESWIN
*--
FUNCTION Main()
*--

    LOCAL oWnd, oBrow
    LOCAL oServer, oQuery
    LOCAL nColumn, oCol
    *--
    IF ( oServer := ConectaServer() ) == NIL
        RETURN( NIL )
    ENDIF
    *--
    oQuery := oServer:Query( "SELECT * FROM pg_database" )
    *--
    IF oQuery:NetErr()
        MsgStop( oQuery:ErrorMSg(),FWVERSION )
        RETURN(NIL)
    ENDIF
    *--
    DEFINE WINDOW oWnd FROM 00,00 TO MAXROW(),MAXCOL() ;
        TITLE FWVERSION + " XBROWSE / PostgreSQL " 
    *--
    oBrow := TXBrowse():New( oWnd )
    *--
    WITH OBJECT oBrow

        SetPostgres( oBrow, oQuery )
        *--
        :lColDividerComplete := .T.
        :nMarqueeStyle    := MARQSTYLE_HIGHLROW
        :nColDividerStyle := LINESTYLE_BLACK
        :nStretchCol      := STRETCHCOL_LAST
        :lRecordSelector  := .T.
        :l2007   := .F.
        :lFooter := .T.
        :bClrStd    := {|| IF( oQuery:RecNo()  % 2 == 0,;
                               {CLR_BLACK, CLR_WHITE}, {0, RGB( 226,226,226 ) } ) }

    END WITH
    *--
    FOR nColumn = 1 TO oQuery:FCount()
        oCol := oBrow:AddCol()
        oCol:cHeader  := oQuery:FieldName( nColumn )      
        oCol:bStrData := DataQuery( oQuery, nColumn )
    NEXT
    *--
    oBrow:CreateFromCode()
    *--
    oWnd:oClient := oBrow
    SET MESSAGE OF oWnd TO HB_VERSION() + " " + FWDESCRIPTION CENTER
    *--
    ACTIVATE WINDOW oWnd ;
        ON INIT( oBrow:SetFocus() )
    *--
    oQuery:Destroy()
    oServer:Close()
    
RETURN( NIL )
*--
*
*--
FUNCTION ConectaServer()
*--

    LOCAL cHost := "localhost" ,;   // Servidor
          cData := "postgres" ,;    // Base de Datos
          cUser := "postgres" ,;    // Usuario
          cPass := "postgres" ,;    // Password
          nPort := 5432 ,;          // Puerto
          cShem := "public",;       // Shema
          oConex := NIL
          
    *--
    oConex := TPQServer():New( cHost, cData, cUser, cPass, nPort, cShem )
    *--
    IF oConex:NetErr()
        MsgStop( oConex:ErrorMsg() )
        RETURN( NIL )
    ENDIF
    *--

    oConex:SetVerbosity( 2 )
    oConex:Traceon("simple.log")
    
RETURN( oConex )
*--
*
*--
PROCEDURE SetPostgres( oBrw, oQry )
*--

  WITH OBJECT oBrw

    :bGoTop    := {|| If( oQry:LastRec() > 0, oQry:GoTo(1), NIL ) }
    :bGoBottom := {|| If( oQry:LastRec() > 0, oQry:GoTo(oQry:nLastRec), NIL )  }
    :bSkip     := { |n,x| If( oQry:LastRec() > 0, ( x := oQry:RecNo(), ;
                              oQry:GoTo( Max( 1, ;
                              Min( oQry:LastRec(), oQry:RecNo() + IfNil( n, 1 ) ) ) ), ;
                              oQry:RecNo() - x ), 0 ) }
    :bBof      := {|| oQry:Bof() }
    :bEof      := {|| oQry:Eof() }
    :bBookMark := {| n | If( n == nil,;
                         If( oQry:LastRec() > 0, oQry:RecNo(), 0 ), ;
                         If( oQry:LastRec() > 0, oQry:goto( n ), 0 ) ) }
    :bKeyNo    := {| n | If( n == nil, ;
                         If( oQry:LastRec() > 0, oQry:RecNo(), 0 ), ;
                         If( oQry:LastRec() > 0, oQry:Goto( n ), 0 ) ) }
    :bKeyCount := {|| oQry:LastRec() }

    :nDataType         := DATATYPE_MYSQL

  END
   
RETURN
*--
*
*--
FUNCTION DataQuery( oQry, n )
*--

   LOCAL bBlock
   LOCAL nLargo
   *--
   IF oQry:LastRec() > 0
      bBlock := { || cValToChar( oQry:FieldGet( n ) ) }
   ELSE
      nLargo = oQry:FieldLen(n)
      bBlock := { || SPACE( nLargo ) }
   ENDIF

RETURN( bBlock )
*--
*
INIT PROCEDURE START()
*--

    SET DATE BRITISH
    SET DELETE ON
    SET EXCLUSIVE OFF
    SET DATE FORMAT TO "DD/MM/YYYY"
    SET DECIMALS TO 2
    *--
    SETBALLOON(.T.)
    HB_LANGSELECT("ESWIN")
    HB_SETCODEPAGE("ESWIN")
    
RETURN
*--
*
Harbour / Bcc / MinGW / Fwh 13.9

Continue the discussion