FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Relacionar búsqueda ente dos xBrowse (SOLUCIONADO)
Posts: 328
Joined: Fri May 19, 2006 04:08 PM
Relacionar búsqueda ente dos xBrowse (SOLUCIONADO)
Posted: Wed Mar 23, 2022 05:01 PM

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

FWH 32/64 14.04

Harbour 3.2.0 (r1306211258)

PellesC
Posts: 1515
Joined: Thu Oct 30, 2008 02:37 PM
Re: Relacionar búsqueda ente dos xBrowse
Posted: Wed Mar 23, 2022 05:11 PM
Hola,

En el browse oBrw1 utiliza el evento ::bChange para detectar los movimientos verticales. Cuando se produzca movimiento vertical entonces actualiza el oBrw2

Code (fw): Select all Collapse
oBrw1:bChange:= {|oBrw, lRow| If(lRow, Aqui_Actualizar_oBrw2, NIL) }


Salu2
Posts: 328
Joined: Fri May 19, 2006 04:08 PM
Re: Relacionar búsqueda ente dos xBrowse
Posted: Wed Mar 23, 2022 05:36 PM
hmpaquito wrote:Hola,

En el browse oBrw1 utiliza el evento ::bChange para detectar los movimientos verticales. Cuando se produzca movimiento vertical entonces actualiza el oBrw2

Code (fw): Select all Collapse
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
Posts: 328
Joined: Fri May 19, 2006 04:08 PM
Re: Relacionar búsqueda ente dos xBrowse
Posted: Wed Mar 23, 2022 05:38 PM

Una presunta más.... cual es la data para saber el contenido de la primera columna del xBrowse del oBrw_1
Gracias

FWH 32/64 14.04

Harbour 3.2.0 (r1306211258)

PellesC
Posts: 328
Joined: Fri May 19, 2006 04:08 PM
Re: Relacionar búsqueda ente dos xBrowse
Posted: Thu Mar 24, 2022 12:35 AM
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 oBrw2

Code (fw): Select all Collapse
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
Posts: 610
Joined: Wed Oct 19, 2005 08:20 PM
Re: Relacionar búsqueda ente dos xBrowse
Posted: Thu Mar 24, 2022 12:44 PM
Code (fw): Select all Collapse
........................

     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
Posts: 328
Joined: Fri May 19, 2006 04:08 PM
Re: Relacionar búsqueda ente dos xBrowse
Posted: Thu Mar 24, 2022 02:40 PM

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

FWH 32/64 14.04

Harbour 3.2.0 (r1306211258)

PellesC
Posts: 328
Joined: Fri May 19, 2006 04:08 PM
Re: Relacionar búsqueda ente dos xBrowse
Posted: Sat Mar 26, 2022 08:28 PM
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:

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
Posts: 328
Joined: Fri May 19, 2006 04:08 PM
Re: Relacionar búsqueda ente dos xBrowse (SOLUCIONADO)
Posted: Tue Mar 29, 2022 07:46 PM
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
Code (fw): Select all Collapse
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)                  // Sexo
             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)                  // Sexo
             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

Continue the discussion