Para el amigo luiz antonio Oliveira y a quien pueda interesar, muestro un consulta sql
/*
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