Page 1 of 1

Problemas con Eagle (mysql) y el Wbrowse

Posted: Fri Oct 26, 2007 4:01 pm
by ADBLANCO
Tengo Problemas con el comportamiento del Wbrowse accesando una tabla desde mysql con Eagle.
Al desplegar la lista o darle Fin o Inicio, aparentemente pierde el foco, y si
se le da PgUp o PgDn, trabaja de forma erronea, a que se puede deber esto??

Tengo xHarbour 7.1 y Fw 7.09

*************************************************************
FUNCTION prueba() && Programa de prueba
*************************************************************
LOCAL oDlg ,;
oButSalir ,;
oTabla ,;
oLbx ,;
cTabla := "DtsCiudad"

DEFINE TABLE oTabla ;
NAME cTabla DATAFIELD ;
ORDER BY 1 ;
OF oDtBase

// Traemos el resultado a nuestro cliente
OPEN TABLE oTabla


*oTabla := TMsTable( cTabla ):New( oDtBase, cTabla )
// Con DataFields:
// oTabla := TMyTable( cTabla ):New( oDtBase, cTabla )

// Traemos el resultado a nuestro cliente
IF oTabla:lOpened


DEFINE DIALOG oDlg RESOURCE "prueba";
TITLE 'Prueba con oTabla'
oDlg:lHelpIcon :=.f. && Apago el Icono de Help

REDEFINE LISTBOX oLbx ;
FIELDS PadL( oTabla:FieldGet( 1 ), 6, " " ),;
oTabla:xFieldGet( 3 ), ;
oTabla:xFieldGet( 4 ), ;
oTabla:xFieldGet( 5 ), ;
oTabla:xFieldGet( 6 ) ;
HEADERS "Codigo", ;
"Cod/Estado", ;
"Ciudad", ;
"Abreviatura", ;
"Cod.Area" ID 401 OF oDlg

REDEFINE BUTTON oButSalir ID 101 OF oDlg;
ACTION oDlg:End()

oTabla:GoTop():Read() // No se olvide nunca de esta linea
MySetBrowse( oLbx, oTabla )
oDlg:oClient := oLbx

ACTIVATE DIALOG oDlg CENTER

oTabla:close()
ELSE
MSGALERT("No se puede abrir la tabla: " + cTabla )
ENDIF
RETURN NIL

Posted: Mon Oct 29, 2007 2:57 pm
by MarioG
ADBlanco

Proba así:

Code: Select all

REDEFINE LISTBOX oLbx ;
FIELDS "" ;
HEADERS "Codigo", ;
               "Cod/Estado", ;
               "Ciudad", ;
               "Abreviatura", ;
               "Cod.Area" ;
ID 401 OF oDlg

oLbx:bLine:= {|| { oTabla:Load(), ;
                            { PadL( oTabla:FieldGet( 1 ), 6, " " ),;
                               oTabla:xFieldGet( 3 ), ;
                               oTabla:xFieldGet( 4 ), ;
                               oTabla:xFieldGet( 5 ), ;
                               oTabla:xFieldGet( 6 ) } }

...
Sobre este tema (Eagle1), también podes dejar tu consulta en
http://ar.groups.yahoo.com/group/eagle1 ... =312688556

saludos

Posted: Mon Oct 29, 2007 4:13 pm
by ADBLANCO
Gracias Mario G., Ya hice la prueba y el comportamiento erróneo sigue igual:
Al activarse presenta la lista, Hay que hacer click sobre una línea para que responda a las teclas de PgUp o PgDn o Inicio o Final, después se vuelve loco con la informaciób presentada, como si perdiera algún apuntador.
Si paso el resultado del query a un arreglo o a una tabla tipo dbf trabaja bién. Pero la idea es no tener que efectuar estos pasos previos y trabajar directamente.
Parece que el problema tiene su origen en las definiciones que hace el eagle en MySetBrowse() de los bloques:

oLbx:bGoTop := { || oTabla:GoTop(), MsFetchRow( oTabla:hResult ) }
oLbx:bGoBottom :={||oTabla:GoBottom(),MsFetchRow(oTabla:hResult ) }
oLbx:bSkip := { | n | oTabla:Skipper( n )}
oLbx:bLogicLen := { || oTabla:nRowCount }

Posted: Mon Oct 29, 2007 8:06 pm
by MarioG
Puede ser algún problema con tu versión de Eagle; 1.33 si mal no interpreto por la llamada a ::Read(), que en la última version ya no existe más.
Te sugiero que dejes la consulta en el Link que te dejé

Saludos

Posted: Fri Nov 02, 2007 6:11 pm
by ADBLANCO
YA LO RESOLVÍ, GRACIAS.....

AQUI LO DEJO, POR SI ACASO A ALGUIEN LE OCURRE LO MISMO...



*************************************************************
FUNCTION prueba() && Programa de prueba
*************************************************************
LOCAL oDlg ,;
oButSalir ,;
oTabla ,;
oLbx ,;
cTabla := "DtsCiudad"

DEFINE TABLE oTabla ;
NAME cTabla DATAFIELD ;
ORDER BY 1 ;
OF oDtBase

// Traemos el resultado a nuestro cliente
OPEN TABLE oTabla


*oTabla := TMsTable( cTabla ):New( oDtBase, cTabla )
// Con DataFields:
// oTabla := TMyTable( cTabla ):New( oDtBase, cTabla )

// Traemos el resultado a nuestro cliente
IF oTabla:lOpened


DEFINE DIALOG oDlg RESOURCE "prueba";
TITLE 'Prueba con oTabla'
oDlg:lHelpIcon :=.f. && Apago el Icono de Help

REDEFINE LISTBOX oLbx ;
FIELDS PadL( oTabla:FieldGet( 1 ), 6, " " ),;
oTabla:xFieldGet( 3 ), ;
oTabla:xFieldGet( 4 ), ;
oTabla:xFieldGet( 5 ), ;
oTabla:xFieldGet( 6 ) ;
HEADERS "Codigo", ;
"Cod/Estado", ;
"Ciudad", ;
"Abreviatura", ;
"Cod.Area" ID 401 OF oDlg

REDEFINE BUTTON oButSalir ID 101 OF oDlg;
ACTION oDlg:End()

oTabla:GoTop():Read() // No se olvide nunca de esta linea
MySetBrowse( oLbx, oTabla )

oLbx:cAlias:="ARRAY" // <==== SIN ESTO NO TRABAJA <<===

oDlg:oClient := oLbx

ACTIVATE DIALOG oDlg CENTER

oTabla:close()
ELSE
MSGALERT("No se puede abrir la tabla: " + cTabla )
ENDIF
RETURN NIL