Page 1 of 2

Browse no muestra registros (SOLUCIONADO)

Posted: Sat Feb 19, 2011 6:55 pm
by Compuin
Estimados

Estoy trabajando con 2 PRG, uno MAIN donde coloco el siguiente codigo

#include "Fivewin.ch"

FUNCTION MAIN()
LOCAL oBar, oBtn

Set DATE TO FRENCH
SET CENTURY ON
Set EPOCH TO 2000
SET DELETED OFF
SET _3DLOOK ON

REQUEST DBFCDX
RddSetDefault("DBFCDX")

Y en el otro trato de abrir una ventana con un Browse pero este no trae los registros de la DBF

#include "fivewin.ch"
#include "xbrowse.ch"

MEMVAR oWndPrinc

STATIC CODBCO, NOMBCO, CTABCO, CTACTA, GRA, NREG, oDlg, oBrw, oCol, cCODANT, oRpt
STATIC TNUEVO := .T.
STATIC LVAN := .F.

FUNCTION BANCOS()
LOCAL oWndBCO, cTitle, oFont, oBar, oMeter, oText, cAlias, oBrw
LOCAL UBI:= "DATA\"
LOCAL cVIA := "DBFCDX"

IF SELECT("BANCO")>0
BANCO->(DBCLOSEAREA())
ENDIF

IF SELECT("BANCO")=0
DBUSEAREA(.T.,cVia,UBI+"BANCO","BANCO",.T.)
ENDIF

BANCO->(ORDSETFOCUS(1))

DEFINE WINDOW oWndBCO MDICHILD OF oWndPrinc ;

oBrw := TXBrowse():New( oWndBCO )

oBrw:cAlias := cAlias

oBrw:SetRDD()
oBrw:CreateFromCode()
oWndBCO:SetControl(oBrw)

ACTIVATE WINDOW oWndBCO ;
ON INIT oBrw:SetFocus()

Ambos cargan bien, el problema es que no me muestra nungun registro del DBF y este tiene cargado varios alli.

Agradezco cualquier aporte

Re: Browse no muestra registros

Posted: Sat Feb 19, 2011 7:45 pm
by FranciscoA
Hola, la variable cAlias trae valor NIL.

Intenta asi:

IF SELECT("BANCO")=0
DBUSEAREA(.T.,cVia,UBI+"BANCO","BANCO",.T.)
cAlias:=Alias()
ENDIF

Re: Browse no muestra registros

Posted: Sat Feb 19, 2011 8:24 pm
by Compuin
Fracisco,

No funciono. Siguen sin aparecer los registros

Re: Browse no muestra registros

Posted: Sat Feb 19, 2011 10:20 pm
by FranciscoA
Parece que te falta establecer los indices, porque cerraste y re-abriste la dbf BANCO:

IF SELECT("BANCO")=0
DBUSEAREA(.T.,cVia,UBI+"BANCO","BANCO",.T.)
DBSETINDEX(cIndice1........) ; DBSETINDEX(cIndice2........)
ENDIF

cAlias:=Alias()


BANCO->(ORDSETFOCUS(1))

Re: Browse no muestra registros

Posted: Sat Feb 19, 2011 10:30 pm
by Compuin
Agregando indices o no, igual no muestra los registros de la DBF

Re: Browse no muestra registros

Posted: Sat Feb 19, 2011 10:34 pm
by FranciscoA
¿Ya intentaste poner en el ON INIT (oBrw:cAlias)->(dbgotop()), oBrw:Refresh() ?
Fijate que el cAlias:=Alias() lo saqué del If..endif

Re: Browse no muestra registros

Posted: Sat Feb 19, 2011 10:44 pm
by Compuin
Tampoco hizo nada amigo

Re: Browse no muestra registros

Posted: Sat Feb 19, 2011 11:16 pm
by FranciscoA
Hola, te hice este ejemplo, basado en tu codigo, y funciona (probado) (compilado con FWH712)

#include "fivewin.ch"
#include "xbrowse.ch"

MEMVAR oWndPrinc

//------------------
FUNCTION MAIN()

DEFINE WINDOW oWndPrinc MDI

ACTIVATE WINDOW oWndPrinc ;
ON INIT BANCOS()

oWndPrinc:End()
RETURN NIL


//--------------------------
FUNCTION BANCOS()
LOCAL oWndBCO, cAlias, oBrw
LOCAL UBI:= "C:\DATA\"
LOCAL cVia:="DBFNTX"

IF SELECT("BANCO")>0
BANCO->(DBCLOSEAREA())
ENDIF

IF SELECT("BANCO")=0
DBUSEAREA(.T.,cVia,UBI+"BANCO","BANCO",.T.)
ENDIF

cAlias:=Alias()

DEFINE WINDOW oWndBCO MDICHILD OF oWndPrinc

oBrw := TXBrowse():New( oWndBCO )

oBrw:cAlias := cAlias

oBrw:SetRDD()
oBrw:CreateFromCode()
oWndBCO:SetControl(oBrw)

ACTIVATE WINDOW oWndBCO ;
ON INIT oBrw:SetFocus()

RETURN NIL

Saludos

Re: Browse no muestra registros

Posted: Sun Feb 20, 2011 12:25 am
by Compuin
Funciona chevere en un solo PRG. De hecho tengo un programa asi.

El problema se me esta presentando al tener 2 PRG (Main y Banco, en este ultimo es donde esta el browse)

Trata de hacer el ejemplo que me enviastes en 2 prg a ver si tienes el mismo comportamiento que a mi

Re: Browse no muestra registros

Posted: Sun Feb 20, 2011 12:43 am
by FranciscoA
Compuin:
Puedes hacerlo en 2 prgs. (dos ficheros de texto)
Ejemplo:

Los DEFINE y la funcion Main() incluyelos en el primer fichero y le agregas al final: (despues del return) #INCLUDE "Miprg2.prg"
La Funcion Bancos la incluyes en otro fichero, en este caso MiPrg2, compilas y listo.
A cada fichero le das el nombre que quieras.
Saludos

Re: Browse no muestra registros

Posted: Sun Feb 20, 2011 1:35 am
by Compuin
Eso ya lo hice, y desde alli se presenta el problema de no ver los registros.

Solo te hice el planteamiento para que recrearas el escenario y vieras el error con 2 prgs porque en 1 solo no presenta ningun error

Re: Browse no muestra registros

Posted: Sun Feb 20, 2011 2:24 am
by Daniel Garcia-Gil
Saludos...

algun ejemplo que podamos probar con una dbf real??? para poder reproducir el error...

Re: Browse no muestra registros

Posted: Sun Feb 20, 2011 3:22 pm
by Compuin
Saludos Daniel,

El ejemplo es el que esta al comienzo del post. Son 2 PRG.

Re: Browse no muestra registros

Posted: Sun Feb 20, 2011 3:56 pm
by Daniel Garcia-Gil
Hola

Daniel Garcia-Gil wrote:Saludos...

algun ejemplo que podamos probar con una dbf real??? para poder reproducir el error...


Repito la solicitud

En el primer post no veo donde esta la creacion de la dbf a usar o un link de descarga de la misma
No veo donde termina la funcion main
Cuando llamar a la funcion banco ?
De la forma como esta expuesto el ejrmplo es imposible construirlo y ver o reproducir el problema que comentas

Si pudieras publicar un ejemplo que podamos user sera mejor, mejor aun si el ejemplo reproduce tu problema

Re: Browse no muestra registros

Posted: Sun Feb 20, 2011 3:58 pm
by Compuin
Ok aca los 2 PRG

////////// 1er PRG ////////////////////////

Code: Select all | Expand

#include "FiveWin.ch"

MEMVAR oWndPrinc

FUNCTION MAIN()
LOCAL oBar, oBtn

SetHandleCount(100)
REQUEST DBFCDX
RddSetDefault("DBFCDX")

SET DEFAULT TO \MX
SET DATE TO FRENCH
SET EPOCH TO 2000
SET CENTURY ON
SET DELETED OFF
SET EXCLUSIVE OFF
SET _3DLOOK ON

   DEFINE WINDOW oWndPrinc ;
   TITLE "Ventana Principal" MDI ;
   MENU MenuPri()

   DEFINE BUTTONBAR oBar OF oWndPrinc SIZE 40,41 3D

   DEFINE BUTTON oBtn OF oBar;
   TOOLTIP "Bancos" MESSAGE "Bancos" NOBORDER ADJUST;
   ACTION BANCOS()

   ACTIVATE WINDOW oWndPrinc MAXIMIZED ;
         VALID MsgYesNo( "¿   Está seguro de querer Salir   ?", "!!! Atención !!!" )

RETURN NIL

FUNCTION MenuPri()
LOCAL oMenu
MENU oMenu

MENUITEM "&General"
    MENU
    MENUITEM "&Parametros de Precio"
    SEPARATOR
    MENUITEM "Salir"
ENDMENU
MENUITEM "&Caja y &Bancos"
    MENU
     MENUITEM "&Bancos" ;
     ACTION BANCOS()
ENDMENU
ENDMENU
RETURN oMenu


////////// 2dor PRG ////////////////////////

Code: Select all | Expand

#include "Fivewin.ch"
#include "xbrowse.ch"

MEMVAR oWndPrinc

STATIC CODBCO, NOMBCO, CTABCO, CTACTA, GRA, NREG, oDlg, oBrw, oCol, cCODANT, oRpt
STATIC TNUEVO := .T.
STATIC LVAN   := .F.

FUNCTION BANCOS()
LOCAL oWndBCO, cTitle, oFont, oBar, oMeter, oText, cAlias
LOCAL oBrw
LOCAL UBI:= "DATA\"
LOCAL cVIA := "
DBFCDX"

cTitle := "
Cuentas Bancarias"

   CREASTRUCT()

   ABRESTRUCT()

   DEFINE FONT oFont NAME "
Arial" SIZE 0,-12 BOLD

   DEFINE WINDOW oWndBCO MDICHILD OF oWndPrinc ;
          FROM 0, 0 TO 0, 0           ;
          TITLE cTitle                ;
          COLOR 0, 14215660           ;
          PIXEL                       ;

          SET FONT OF oWndBCO TO oFont

          SET MESSAGE OF oWndBCO

          oWndBCO:Hide()

          DEFINE BUTTONBAR oBar OF oWndBCO SIZE 40, 50 3D

          DEFINE BUTTON OF oBar FLAT ;
          TOOLTIP "
Incluir" MESSAGE " Incluir";

          DEFINE BUTTON OF oBar FLAT ;
          TOOLTIP "
Salir" MESSAGE " Salir" ;
          ACTION oWndBCO:END()

          oBrw := TXBrowse():New( oWndBCO )

          oBrw:SetRDD()
          oBrw:CreateFromCode()
          oWndBCO:SetControl(oBrw)

   ACTIVATE WINDOW oWndBCO ;
               ON INIT oBrw:Refresh() ;

   oWndPrinc:cascade()
   oWndBCO:oClient = oBrw
   oWndBCO:Show()

RETURN NIL

STATIC FUNCTION CREASTRUCT()
LOCAL BANCO

BANCO := "
\DATA\BANCO.DBF"

lMkDir("
DATA")

IF .NOT. FILE ("
DATA\BANCO.DBF")
         DbCreate( "
DATA\BANCO", { { "BCO_CODIGO", "C", 12, 0 },;
                                   { "
BCO_DESCRI", "C", 30, 0 },;
                                   { "
BCO_CUENTA", "C", 20, 0 },;
                                   { "
BCO_SLDANT", "N", 14, 0 },;
                                   { "
BCO_DEBE"  , "N", 14, 0 },;
                                   { "
BCO_HABER" , "N", 14, 0 },;
                                   { "
BCO_CHEQUE", "N", 10, 0 },;
                                   { "
BCO_NOTADB", "N", 10, 0 },;
                                   { "
BCO_ENOTRA", "C",  1, 0 },;
                                   { "
BCO_CODMON", "C",  3, 0 },;
                                   { "
BCO_CTABAN", "C", 20, 0  } } )
          dbCloseAll()
ENDIF

IF .NOT. FILE ("
DATA\BANCO.CDX")
         USE DATA\BANCO ALIAS BANCO
             MsgMeter( { | oMeter, oText, oDlg, lEnd | ;
             BuildIndex( oMeter, oText, oDlg, @lEnd, "
BANCO->BCO_CODIGO ", "CODIGO" ) },;
             "
Indexando Cuentas por Codigo...", "Espere un momento" )
    dbCloseAll()
ENDIF

RETURN (.T.)

STATIC FUNCTION ABRESTRUCT()
LOCAL UBI:= "
DATA\"
LOCAL cVIA := "
DBFCDX"

    IF SELECT("
BANCO")>0
        BANCO->(DBCLOSEAREA())
    ENDIF

    IF SELECT("
BANCO")=0
        DBUSEAREA(.T.,cVia,UBI+"
BANCO","BANCO",.T.)
    ENDIF

    BANCO->(ORDSETFOCUS(1))

RETURN (.T.)

STATIC FUNCTION BuildIndex( oMeter, oText, oDlg, lEnd, campo, bolsa )
   oMeter:nTotal = RecCount()
   OrdSetFocus(0)
   INDEX ON &(Campo) TAG &(Bolsa) ;
      EVAL ( oMeter:Set( RecNo() ), SysRefresh(), ! lEnd )
RETURN NIL


POST EDITADO POR DANIEL... RECOMENDANDO EL USO DEL TAG CODE

Image
Saludos,