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

Saludos,