In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.

Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.

control browse para tmysql de harbour - ayuda

Foro público de Xailer en español
Responder
carloskds
Mensajes: 18
Registrado: Mié Abr 05, 2023 2:53 am

control browse para tmysql de harbour - ayuda

Mensaje por carloskds »

Hola, he intentado crear un control TQryBrowse, para poder visualizar un query que tengo con la clase tmysql de harbour, que es la que uso, me interesa mostrar el query en un browse, pero no he podido hacerlo, todavia me falta en xailer, si alquien que quere echar una mano, estaria agradecido: :-)
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
carloskds
Mensajes: 18
Registrado: Mié Abr 05, 2023 2:53 am

Re: control browse para tmysql de harbour - ayuda

Mensaje por carloskds »

ignacio, se podra?
Avatar de Usuario
ignacio
Site Admin
Mensajes: 9253
Registrado: Lun Abr 06, 2015 8:00 pm
Ubicación: Madrid, Spain
Contactar:

Re: control browse para tmysql de harbour - ayuda

Mensaje por ignacio »

Hola,

Con Xailer se han de utilizar datasets. Todo se puede hacer, pero, no tiene sentido reinventar la rueda.

Un saludo
Ignacio Ortiz de Zúñiga
[Equipo de Xailer / Xailer team]
https://www.xailer.com
Responder