Problemas con Eagle (mysql) y el Wbrowse

Post Reply
User avatar
ADBLANCO
Posts: 299
Joined: Mon Oct 22, 2007 3:03 pm
Location: Valencia - Venezuela

Problemas con Eagle (mysql) y el Wbrowse

Post 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
User avatar
MarioG
Posts: 1356
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Post 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
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
User avatar
ADBLANCO
Posts: 299
Joined: Mon Oct 22, 2007 3:03 pm
Location: Valencia - Venezuela

Post 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 }
User avatar
MarioG
Posts: 1356
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Post 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
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
User avatar
ADBLANCO
Posts: 299
Joined: Mon Oct 22, 2007 3:03 pm
Location: Valencia - Venezuela

Post 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
Post Reply