Esta es una prueba con un ejemplo de xailer con un archivo de texto, adecuado para query pero no he podido avanzar.
Código: Seleccionar todo
//------------------------------------------------------------------------------
METHOD Button1Click( oSender ) CLASS TForm1
LOCAL oBrw
LOCAL oQry
oQry := ::oServer:Query( "select * from municipios" )
IF ::oServer:NetErr()
MsgStop( ::oServer:ErrorTxt(), "Saliendo" )
return nil
ENDIF
MsgInfo("RecCount:" + hb_ntos( oQry:RecCount() ) )
WITH OBJECT ( oBrw := TQryBrowse():New( ::oBevel1 ) )
:nAlign := alCLIENT
:Create()
:oQry := oQry
END WITH
/* ESTO NO: queria usar el control dbfbrowse, pero tampoco pude. se me nota el nivel. :-)
WITH OBJECT ( oBrw := TDbfBrowse():New( ::oBevel1 ) )
:Cargo := oQry
:OnBof := {|o| oQry:Bof() }
:OnEof := {|o| oQry:Eof() }
:OnGoTop := {|o, n| oQry:GoTop() }
:OnGoBottom := {|o, n| oQry:GoBottom() }
:OnKeyNo := {|o, n| iif(n== nil, oQry:RecNo(), oQry:GoTo(n) )}
:OnKeyCount := {|o, n| oQry:RecCount() }
:OnSkip := {|o, n| oQry:Skip(n) }
END WITH
*/
RETURN Nil
//------------------------------------------------------------------------------
CLASS TQryBrowse FROM TBrowse
PUBLISHED:
PROPERTY oQry INIT NIL WRITE SetQry
PROPERTY nMarqueeStyle INIT bmHIGHLROW
PROPERTY cVersion INIT "TQryBrowse: version 1.0a"
PUBLIC:
METHOD Create( oParent ) CONSTRUCTOR
METHOD Free()
METHOD IsEof()
METHOD IsBof()
METHOD BookMark( nPos )
METHOD KeyNo( nPos )
METHOD KeyCount( nPos )
METHOD Refresh( lComplete )
METHOD Goto( nPos )
RESERVED:
METHOD GoTop()
METHOD GoBottom()
METHOD Skip( nSkip )
METHOD SetQry( oQry )
ENDCLASS
//------------------------------------------------------------------------------
METHOD Create( oParent ) CLASS TQryBrowse
::lRecordSelector := .T.
::oFont := TFont():Create( "Courier New", 8, 0, 400 )
::Super:Create( oParent )
RETURN Self
//------------------------------------------------------------------------------
METHOD Free() CLASS TQryBrowse
RETURN ::Super:Free()
//------------------------------------------------------------------------------
METHOD SetQry( oQry ) CLASS TQryBrowse
IF hb_isObject( oQry )
::oQry := oQry
ENDIF
::Reset()
//BrwColumn():New( Self ):Create()
::GetDisplayCols()
RETURN NIL
//------------------------------------------------------------------------------
METHOD IsEof() CLASS TQryBrowse
LOCAL xRet := ::OnEof()
IF xRet == Nil
RETURN ::oQry:Eof()
ENDIF
RETURN xRet
//------------------------------------------------------------------------------
METHOD IsBof() CLASS TQryBrowse
LOCAL xRet := ::OnBof()
IF xRet == Nil
RETURN ::oQry:Bof()
ENDIF
RETURN xRet
//------------------------------------------------------------------------------
METHOD BookMark( nPos ) CLASS TQryBrowse
LOCAL xRet := ::OnBookMark( nPos )
IF xRet == Nil
xRet := ::oQry:RecNo()
IF nPos != Nil
::oQry:GoTo( nPos )
ENDIF
ENDIF
RETURN xRet
//------------------------------------------------------------------------------
METHOD KeyNo( nPos ) CLASS TQryBrowse
LOCAL xRet := ::OnKeyNo( nPos )
IF xRet == Nil
IF nPos != Nil
::oQry:Goto( nPos )
ELSE
xRet := ::oQry:RecNo()
ENDIF
ENDIF
RETURN xRet
//------------------------------------------------------------------------------
METHOD KeyCount() CLASS TQryBrowse
LOCAL xRet := ::OnKeyCount()
IF xRet == Nil
xRet := IIF( HB_IsNIL( ::oQry ), 0, ::oQry:RecCount() )
ENDIF
::nLen := xRet
RETURN xRet
//------------------------------------------------------------------------------
METHOD GoTop() CLASS TQryBrowse
LOCAL xRet := ::OnGoTop()
IF xRet == Nil
::oQry:GoTop()
ENDIF
RETURN Nil
//------------------------------------------------------------------------------
METHOD GoBottom() CLASS TQryBrowse
LOCAL xRet := ::OnGoBottom()
IF xRet == Nil
::oQry:GoBottom()
ENDIF
RETURN Nil
//------------------------------------------------------------------------------
METHOD GoTo( nPos ) CLASS TQryBrowse
IF ::nLen < 1
RETURN Nil
ENDIF
::DrawLine()
::KeyNo( nPos )
::OnChange( .T. )
::SetVPos( ::RecNo() )
::Refresh( .F. )
RETURN Nil
//------------------------------------------------------------------------------
METHOD Skip( nSkip ) CLASS TQryBrowse
LOCAL xRet
DEFAULT nSkip TO 1
xRet := ::OnSkip( nSkip )
MsgInfo( ProcName() + " / "+ HB_NToS( nSkip ) )
IF xRet == Nil
RETURN ::oQry:Skip( nSkip )
ENDIF
RETURN xRet
//------------------------------------------------------------------------------
METHOD Refresh( lComplete ) CLASS TQryBrowse
DEFAULT lComplete TO .F.
IF lComplete
::GoTop()
ENDIF
RETURN ::Super:Refresh( lComplete )
//------------------------------------------------------------------------------
//CLASS TQryBrwColumn FROM TBrwColumn STATIC
//RESERVED:
// METHOD GetData() VIRTUAL
// METHOD SetData( Value, nLine ) VIRTUAL
//ENDCLASS