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
Problemas con Eagle (mysql) y el Wbrowse
ADBlanco
Proba así:
Sobre este tema (Eagle1), también podes dejar tu consulta en
http://ar.groups.yahoo.com/group/eagle1 ... =312688556
saludos
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 ) } }
...
http://ar.groups.yahoo.com/group/eagle1 ... =312688556
saludos
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
Chaco - Argentina
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 }
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 }
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
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