Relacionar búsqueda ente dos xBrowse (SOLUCIONADO)
Relacionar búsqueda ente dos xBrowse (SOLUCIONADO)
Buenas buenas querida gente.
Estoy atascado en un punto y la verdad no sé como seguir.
Como puedo relacionar una busqueda entre dos xBrowse?
Me explico un poco más: teniendo xBrowse oBrw_1 y oBrw_2 donde:
oBrw_1 es una base con datos especificos de las personas
oBrow_2 otra base con los demás datos de la persona.
Como relaciono que cuando avanzo por el oBrow_1 me vaya mostrando en el oBrw_2 los demás datos?
Estuve buscando en este bendito foro, porque estoy seguro que en algún momento se trato este tema, pero no encontré nada.
Desde ya muchísimas gracias.
PD. Tengan en cuenta que la versión que manejo de mi amado FiveWin es muy vieja, estimo que a mediados del 2013 o 2014
Estoy atascado en un punto y la verdad no sé como seguir.
Como puedo relacionar una busqueda entre dos xBrowse?
Me explico un poco más: teniendo xBrowse oBrw_1 y oBrw_2 donde:
oBrw_1 es una base con datos especificos de las personas
oBrow_2 otra base con los demás datos de la persona.
Como relaciono que cuando avanzo por el oBrow_1 me vaya mostrando en el oBrw_2 los demás datos?
Estuve buscando en este bendito foro, porque estoy seguro que en algún momento se trato este tema, pero no encontré nada.
Desde ya muchísimas gracias.
PD. Tengan en cuenta que la versión que manejo de mi amado FiveWin es muy vieja, estimo que a mediados del 2013 o 2014
Last edited by El Loco on Tue Mar 29, 2022 7:41 pm, edited 1 time in total.
FWH 32/64 14.04
Harbour 3.2.0 (r1306211258)
PellesC
Harbour 3.2.0 (r1306211258)
PellesC
Re: Relacionar búsqueda ente dos xBrowse
Hola,
En el browse oBrw1 utiliza el evento ::bChange para detectar los movimientos verticales. Cuando se produzca movimiento vertical entonces actualiza el oBrw2
Salu2
En el browse oBrw1 utiliza el evento ::bChange para detectar los movimientos verticales. Cuando se produzca movimiento vertical entonces actualiza el oBrw2
Code: Select all | Expand
oBrw1:bChange:= {|oBrw, lRow| If(lRow, Aqui_Actualizar_oBrw2, NIL) }
Salu2
Re: Relacionar búsqueda ente dos xBrowse
hmpaquito wrote:Hola,
En el browse oBrw1 utiliza el evento ::bChange para detectar los movimientos verticales. Cuando se produzca movimiento vertical entonces actualiza el oBrw2Code: Select all | Expand
oBrw1:bChange:= {|oBrw, lRow| If(lRow, Aqui_Actualizar_oBrw2, NIL) }
Salu2
Desde ya muchísimas gracias por tu pronta respuesta.
Ahora lo voy a probar, pero creo que ya lo había hecho.
Gracias. Un abrazo
FWH 32/64 14.04
Harbour 3.2.0 (r1306211258)
PellesC
Harbour 3.2.0 (r1306211258)
PellesC
Re: Relacionar búsqueda ente dos xBrowse
Una presunta más.... cual es la data para saber el contenido de la primera columna del xBrowse del oBrw_1
Gracias
Gracias
FWH 32/64 14.04
Harbour 3.2.0 (r1306211258)
PellesC
Harbour 3.2.0 (r1306211258)
PellesC
Re: Relacionar búsqueda ente dos xBrowse
El Loco wrote:hmpaquito wrote:Hola,
En el browse oBrw1 utiliza el evento ::bChange para detectar los movimientos verticales. Cuando se produzca movimiento vertical entonces actualiza el oBrw2Code: Select all | Expand
oBrw1:bChange:= {|oBrw, lRow| If(lRow, Aqui_Actualizar_oBrw2, NIL) }
Salu2
Paquito no funciono .... pero seguro algo estoy haciendo mal o me estoy olvidando de poner o sacar algo.
Gracias igualmente... seguiré intentando
Abrazo
FWH 32/64 14.04
Harbour 3.2.0 (r1306211258)
PellesC
Harbour 3.2.0 (r1306211258)
PellesC
- Manuel Aranda
- Posts: 605
- Joined: Wed Oct 19, 2005 8:20 pm
- Location: España
Re: Relacionar búsqueda ente dos xBrowse
Code: Select all | Expand
........................
REDEFINE xBrowse oBrw1 ID 109 OF oDlg ;
HEADERS "*Núm.","* Nombre","Not.","*Superf.Cult.","Representante","Localidad","Asesor 1","Aplicador 1","Observaciones 1","¿Obligada a asesoramiento en G.I.P.?";
COLUMNS "NExplota","Nombre","Anotacion","Superficie","NombreRe","Localidad","NomAse1","NomApli1","Observa1","NoExenta";
SIZES 35,250,25,60,200,150,200,200,150,150;
JUSTIFY AL_RIGHT, AL_LEFT,AL_CENTER,AL_RIGHT,AL_LEFT,AL_LEFT,AL_LEFT,AL_LEFT,AL_LEFT,AL_CENTER;
ALIAS "EXPLOTA" CELL LINES FOOTERS AUTOSORT
oBrw1:bChange:= {|| Actualiza(oBrw1,oBrw2)}
REDEFINE xBrowse oBrw2 ID 209 OF oDlg ;
HEADERS "Núm.","Nombre","Not.","Superf.Cult.","Plantas";
COLUMNS "NParcela","Nombre","Anotacion","Superficie","Plantas";
SIZES 35,225,25,57,57;
JUSTIFY AL_RIGHT, AL_LEFT, AL_CENTER,AL_RIGHT,AL_RIGHT;
ALIAS "PARCELAS" CELL LINES FOOTERS
................
***************************************************
STATIC FUNCTION Actualiza(oBrw1,oBrw2)
***************************************************
//
PARCELAS->(ordscope(TOPSCOPE, EXPLOTA->NExplota))
PARCELAS->(ordscope(BOTTOMSCOPE, EXPLOTA->NExplota))
PARCELAS->(DbGoTop())
oBrw2:GoTop()
oBrw2:Refresh()
//
RETURN NIL
Un saludo,
Manuel
xH 1.2.3, FWH 23.07 32 bits, BC++ 7.4, xVerce CW 1.0, PellesC
Manuel
xH 1.2.3, FWH 23.07 32 bits, BC++ 7.4, xVerce CW 1.0, PellesC
Re: Relacionar búsqueda ente dos xBrowse
Buenos días.
Gracias Manuel.... ni bien pueda lo pruebo.
Aunque leyendo lo que enviaste me parece que por ahí van los tiros.
Muchísimas gracias.
Abrazo
Gracias Manuel.... ni bien pueda lo pruebo.
Aunque leyendo lo que enviaste me parece que por ahí van los tiros.
Muchísimas gracias.
Abrazo
FWH 32/64 14.04
Harbour 3.2.0 (r1306211258)
PellesC
Harbour 3.2.0 (r1306211258)
PellesC
Re: Relacionar búsqueda ente dos xBrowse
Hola gente.
A partir del código que posteo Manuel (gracias Manuel) recordé que ya lo había hecho yo en otro programa ya viejo.
Funciona perfecto.
Ahora el tema está que cuando avanzo del oBrwB para que actualice oBrwC sale este error:
![Image](https://imagizer.imageshack.com/img922/2686/pZlmC6.jpg)
Les comento un poco más, este programa es solo de consulta y consta de tres archivos
CG_000 que contiene los datos básicos de búsqueda : Nro. CUIL , Apellido y Nombre , Nro. de documento
Las otras dos (CG_001 y CG_002) contienen los datos adicionales de cada uno de los que figuran en CG_000
CG_000 contiene más de 19 millones de registros
CG_001 contiene más de 8,5 millones de registros
CG_002 contiene más de 10,5 millones de registros
Temiendo que quizás CG_000 fuera demasiado grande, guardo en un dbf temporal sobre el filtro de cualquiera de los tres forma de búsqueda.
Todo eso funciona perfectamente.
Alguien le pasó?
Gracias
A partir del código que posteo Manuel (gracias Manuel) recordé que ya lo había hecho yo en otro programa ya viejo.
Funciona perfecto.
Ahora el tema está que cuando avanzo del oBrwB para que actualice oBrwC sale este error:
![Image](https://imagizer.imageshack.com/img922/2686/pZlmC6.jpg)
Les comento un poco más, este programa es solo de consulta y consta de tres archivos
CG_000 que contiene los datos básicos de búsqueda : Nro. CUIL , Apellido y Nombre , Nro. de documento
Las otras dos (CG_001 y CG_002) contienen los datos adicionales de cada uno de los que figuran en CG_000
CG_000 contiene más de 19 millones de registros
CG_001 contiene más de 8,5 millones de registros
CG_002 contiene más de 10,5 millones de registros
Temiendo que quizás CG_000 fuera demasiado grande, guardo en un dbf temporal sobre el filtro de cualquiera de los tres forma de búsqueda.
Todo eso funciona perfectamente.
Alguien le pasó?
Gracias
FWH 32/64 14.04
Harbour 3.2.0 (r1306211258)
PellesC
Harbour 3.2.0 (r1306211258)
PellesC
Re: Relacionar búsqueda ente dos xBrowse (SOLUCIONADO)
Buenas.... la solución al mensaje de error que se producía era que cuando entraba en la función Actualiza() entraba en un loop infinito hasta que colapsaba
Posteo esto por si alguien tiene el mismo tema
Gracias a todos por la ayuda recibida
Abrazo
Code: Select all | Expand
Function Actualiza( oBrwB, oBrwC, aCampos )
Do Case
Case CG_000->TDato == "01"
If CG_001->(DbSeek(CG_000->XCuil + AllTrim(CG_000->NCuil)))
aCampos[ 1,2]:= CG_000->NCuil
aCampos[ 2,2]:= CG_000->ApeNom
aCampos[ 3,2]:= CG_000->NDoc
aCampos[ 4,2]:= FSDia4(SubStr(CG_001->TDato,14,8)) + " - " + AllTrim(Str(CalEdad(SubStr(CG_001->TDato,14,8)))) + " AÑOS" // FchNac aaaammdd
aCampos[ 5,2]:= SubStr(CG_001->TDato,22,1) // _
aCampos[ 6,2]:= SubStr(CG_001->TDato,23,11) // NroBen
aCampos[ 7,2]:= "" // CUIT Empleador
aCampos[ 8,2]:= AllTrim(SubStr(CG_001->TDato,34,40)) // Calle
aCampos[ 9,2]:= AllTrim(SubStr(CG_001->TDato,74,5)) // Nro_Calle
aCampos[10,2]:= AllTrim(SubStr(CG_001->TDato,79,5)) // Piso
aCampos[11,2]:= AllTrim(SubStr(CG_001->TDato,84,5)) // Depto
aCampos[12,2]:= AllTrim(SubStr(CG_001->TDato,89,5)) // Cod. Area Telefónico
aCampos[13,2]:= AllTrim(SubStr(CG_001->TDato,94,10)) // Nro. Telefónico
aCampos[14,2]:= AllTrim(SubStr(CG_001->TDato,104,70)) // Localidad
aCampos[15,2]:= AllTrim(SubStr(CG_001->TDato,174,4)) // Codigo Postal
aCampos[16,2]:= aProv[Val(AllTrim(SubStr(CG_001->TDato,178,2)))] // Provincia
aCampos[17,2]:= Lower(AllTrim(SubStr(CG_001->TDato,180,60))) // EMail
aCampos[18,2]:= Str(Val(SubStr(CG_001->TDato,246,12))/100) // ImpNet
aCampos[19,2]:= SubStr(CG_001->TDato,258,8)+"-"+SubStr(CG_001->TDato,266,14) // Nro. CBU
Endif
Case CG_000->TDato == "02"
If CG_002->(DbSeek(CG_000->XCuil + AllTrim(CG_000->NCuil)))
aCampos[ 1,2]:= CG_000->NCuil
aCampos[ 2,2]:= CG_000->ApeNom
aCampos[ 3,2]:= CG_000->NDoc
aCampos[ 4,2]:= FSDia4(SubStr(CG_002->TDato,14,8)) + " - " + AllTrim(Str(CalEdad(SubStr(CG_002->TDato,14,8)))) + " AÑOS" // FchNac aaaammdd
aCampos[ 5,2]:= SubStr(CG_002->TDato,22,1) // _
aCampos[ 6,2]:= "" // NroBen
aCampos[ 7,2]:= SubStr(CG_002->TDato,23,11) // CUIT Empleador
aCampos[ 8,2]:= AllTrim(SubStr(CG_002->TDato,34,40)) // Calle
aCampos[ 9,2]:= AllTrim(SubStr(CG_002->TDato,74,5)) // Nro_Calle
aCampos[10,2]:= AllTrim(SubStr(CG_002->TDato,79,5)) // Piso
aCampos[11,2]:= AllTrim(SubStr(CG_002->TDato,84,5)) // Depto
aCampos[12,2]:= AllTrim(SubStr(CG_002->TDato,89,5)) // Cod. Area Telefónico
aCampos[13,2]:= AllTrim(SubStr(CG_002->TDato,94,10)) // Nro. Telefónico
aCampos[14,2]:= AllTrim(SubStr(CG_002->TDato,104,70)) // Localidad
aCampos[15,2]:= AllTrim(SubStr(CG_002->TDato,174,4)) // Codigo Postal
aCampos[16,2]:= aProv[Val(AllTrim(SubStr(CG_002->TDato,178,2)))] // Provincia // Provincia
aCampos[17,2]:= Lower(AllTrim(SubStr(CG_002->TDato,180,60))) // EMail
aCampos[18,2]:= Str(Val(SubStr( CG_002->TDato,246,12))/100) // ImpNet
aCampos[19,2]:= AllTrim(SubStr(CG_002->TDato,258,22)) // Nro. CBU
Endif
EndCase
//oBrwB:GoTop() <---- Acá estaba el problema
oBrwB:Refresh()
oBrwC:GoTop()
oBrwC:Refresh()
Return aCampos
Posteo esto por si alguien tiene el mismo tema
Gracias a todos por la ayuda recibida
Abrazo
FWH 32/64 14.04
Harbour 3.2.0 (r1306211258)
PellesC
Harbour 3.2.0 (r1306211258)
PellesC