Favor Ayuda para Actualizar Datos en un Dialogo

Favor Ayuda para Actualizar Datos en un Dialogo

Postby remtec » Sun Aug 14, 2022 6:12 pm

Amigos buen día.

Estoy mareado y no doy con la solución. Tengo un Dialogo donde permito ingresar 3 tipos de datos para ir a buscar a una persona.

El problema que desde un botón de BUSCAR dato, envió a una función, que estoy buscando si existe el dato en la DBF, si encuentra uno, muestro la coincidencia y pregunto si es el dato correcto, la idea es que con esos datos, se llenen y muestren la varias del dialogo al regreso de la función, pero esta acción no logro realizarla, no actualiza las variables que muestran los datos.

Muchas gracias.

Muchos Saludos.

Antonio

Codigo:
Code: Select all  Expand view  RUN

#include "FiveWin.ch"

Static Rut_Pac1,Nom_Pac1,Ape_Pac1
Static oGet1,oGet2,oGet3

Function Actu_Evaluacion()
        Local oDlg2, oBrw2, oFont2, oFont4,otitu2,oFont5,oFont6,oFont10,oFont7
        Local oGroup,oGroup1,oGroup2,oGroup3,oGroup4,oGroup5
        Local oSay1

        Rut_Pac1:=Spac(12)
        Nom_Pac1:=Spac(25)
        Ape_Pac1:=Spac(25)


            SetGetColorFocus()
        TGet():nClrGrayText  := 14 // COLOR_BTNSHADOW

            DEFINE FONT oFont2 NAME "TAHOMA" SIZE 0,-15  BOLD
            DEFINE FONT oFont4 NAME 'TAHOMA' SIZE 0,20   BOLD
            DEFINE FONT oFont5 NAME 'TAHOMA' SIZE 0,24   BOLD
            DEFINE FONT oFont6 NAME "TAHOMA" SIZE 0,-14  BOLD
            DEFINE FONT oFont10 NAME "TAHOMA" SIZE 0,-13
            DEFINE FONT oFont7 NAME "TAHOMA" SIZE 0,-12  BOLD

        DEFINE DIALOG oDlg2 SIZE 580,300 PIXEL TRUEPIXEL FONT oFont2 STYLE nOr( WS_POPUP, WS_VISIBLE, WS_DLGFRAME )
                oDlg2:lTransparent := .F.
            @ 10,170 SAY otitu PROMPT " ACTUALIZA EVALUACION "  PIXEL OF oDlg2 COLORS RGB(0,100,0)   FONT oFont5   TRANSPARENT

            @ 55,020   SAY  "R.u.t. :"                   SIZE 130,20         PIXEL OF oDlg2  RIGHT     FONT oFont6  TRANSPARENT
                @ 55,230 SAY "(Ej. 99999999-9)"    SIZE 200,20 PIXEL OF oDlg2  RIGHT FONT oFont7     TRANSPARENT
        @ 100,020  SAY  "Nombres :"                    SIZE 130,20       PIXEL OF oDlg2  RIGHT     FONT oFont6  TRANSPARENT
        @ 145,020  SAY  "Apellidos :"                    SIZE 130,20         PIXEL OF oDlg2  RIGHT     FONT oFont6  TRANSPARENT

             // Aqui Puedo Buscar Paciente por su Rut o Nombre, si no encuentra Rut, puede Crear Paciente
        @ 55,165 GET oGet3 VAR Rut_Pac1 SIZE 120,20 PICTURE "@R ##.###.####!" PIXEL OF oDlg2 COLOR RGB(0,0,128), RGB(159,233,255);
           WHEN  ( oGet3:oGet:Picture := "@KR #########!", .T. );
             VALID If( VrutG({oGet3},Rut_Pac1), (oGet3:oGet:Picture := "@R ##.###.####!", oGet3:Refresh(), .t. ), .f. )


            @ 100,165 GET oGet1 Var Nom_Pac1 SIZE 180,20 PIXEL OF oDlg2   PICTURE "@!"   COLOR RGB(0,0,128), RGB(159,233,255)   FONT oFont6      UPDATE

            @ 145,165 GET oGet2 Var Ape_Pac1 SIZE 180,20 PIXEL OF oDlg2   PICTURE "@!"   COLOR RGB(0,0,128), RGB(159,233,255)   FONT oFont6      UPDATE


            @  215,45 GROUP oGroup5  TO 295,550 PIXEL  COLOR RGB(140,0,0), (140,0,0) FONT oFont7 OF oDlg2  TRANSPARENT



            @ 235,230 BTNBMP  SIZE 55,50 PROMPT "BUSCA" OF oDlg2 2007 Resource "#8018" FONT oFont7 oGroup FLAT;
                            ToolTip "BUSCAR PACIENTE";
                              ACTION (IF(!Busca_Paci_Eva(Rut_Pac1,Nom_Pac1,Ape_Pac1),(MsgStop(Mensa),.F.),.t.)),(oGet1:Refresh(),oGet2:Refresh(),oGet3:Refresh())  // Aqui trato de actualizar los objetos para que muestre los datos de las variables y nada


            @ 235,450 BTNBMP SIZE 55,50 PROMPT "VOLVER"  OF oDlg2 PIXEL 2007 Resource "#8053"  FONT oFont7 oGroup FLAT;
                            ToolTip  "VOLVER";
                            ACTION (oDlg2:End())

            ACTIVATE DIALOG oDlg2 CENTERED


            RELEASE FONT oFont2,oFont4,oFont5 ,oFont6,oFont10,oFont7
     Return nil


Return .t.

Static Function Busca_Paci_Eva(Rut_Pac1,Nom_Pac1,Ape_Pac1)
        Local  aPacien := {}

        Abre_dbf("MaePaci",1,.f.,"MPaci")
        Set Inde TO MaePaci
        Do Case
                     Case !Empty(Rut_Pac1)
                            Rut_Pa1:=Pone_Puntos(Rut_Pac1)

                            DbSetOrder(2)
                            Seek Rut_Pa1
                            If Eof()
                                    If !MsgYesNo( "ATENCION: ¿PACIENTE NO EXISTE, DESEA CREAR"+ CRLF +;
                                                                "PACIENTE--> "+Nom_Pac+"  "+Ape_Pac,"INGRESE OPCION")
                                            // Aqui Ire a Crear su Ficha a Actu_Ficha_Gene.prg
                                    Endif
                            Else
                                    ?"PACIENTE --> "+Nom_Pac+"  "+Ape_Pac
                            Endif
                            Return .t.
                    Case !Empty(Nom_Pac1) .or. !Empty(Ape_Pac1)
                            DbSetOrder(3)
                            Go Top
                            nom1:=Alltrim(Nom_Pac1)
                            nom2:=Alltrim(Ape_Pac1)
                            Do While !eof()
                                   If "&Nom1"$Nom_Pac .or. "&Nom2"$Ape_Pac
                                                Rut_Pa1:=Pone_Puntos(Rut_Pac)

                                            Aadd(aPacien, { Rut_Pa1,Trim(a->Nom_Pac),Trim(a->Ape_Pac)})
                                 Endif
                                 Skip
                            Enddo
                            If Len(aPacien)=0
                                    If !MsgYesNo( "ATENCION: NO SE HAN ENCONTRADO PACIENTES CON COINCIDENCIAS","INGRESE OPCION")
                                            Return .f.
                                    Endif
                            Endif
                            If Len(aPacien)=1
                                 // Muestro Nombre y Pregunto si es el Correcto
                                    If MsgYesNo( "ATENCION: UNICA COINCIDENCIA. SELECCIONADA "+ CRLF + + CRLF + ;
                                                                "PACIENTE--> "+aPacien[1][1]+"  "+aPacien[1][2]+"  "+aPacien[1][3],"INGRESE OPCION")
                                            // Aqui Ire a Crear su Ficha a Actu_Ficha_Gene.prg

// POR EJEMPLO SI CONFIRMO QUE ES EL DATO CORRECTO, AQUI CARGA LOS DATOS EN LAS VARIABLES Y LO HACE BIEN.
                                            Rut_Pac1:=aPacien[1][1]
                                            Nom_Pac1:=aPacien[1][2]
                                            Ape_Pac1:=aPacien[1][3]
//
                                            Return .t.
                                    Endif


                            Else
                                 // Muestro Xbrowse con nombre para seleccionar
                            Endif

        Endcase

    Return .t.


 
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 719
Joined: Fri May 12, 2017 2:50 pm

Re: Favor Ayuda para Actualizar Datos en un Dialogo

Postby J. Ernesto » Sun Aug 14, 2022 7:07 pm

Antepone @ antes del objeto para pasarlo por referencia.
J. Ernesto Pinto Q.
Fwh_x64 2407 + BCC++_x64 7_70__6_72 + Harbour 3.20 + LopeEdit 5.8 + UEstudio 26.0
jepsys@hotmail.com, jepsys@gmail.com, jepsys@yahoo.com
User avatar
J. Ernesto
 
Posts: 161
Joined: Tue Feb 03, 2009 10:08 pm
Location: Bogotá D.C. Colombia

Re: Favor Ayuda para Actualizar Datos en un Dialogo

Postby J. Ernesto » Sun Aug 14, 2022 7:18 pm

Busca_Paci_Eva ( @Rut_Pac1, @Nom_Pac1, @Ape_Pac1 )
J. Ernesto Pinto Q.
Fwh_x64 2407 + BCC++_x64 7_70__6_72 + Harbour 3.20 + LopeEdit 5.8 + UEstudio 26.0
jepsys@hotmail.com, jepsys@gmail.com, jepsys@yahoo.com
User avatar
J. Ernesto
 
Posts: 161
Joined: Tue Feb 03, 2009 10:08 pm
Location: Bogotá D.C. Colombia

Re: Favor Ayuda para Actualizar Datos en un Dialogo

Postby J. Ernesto » Sun Aug 14, 2022 7:19 pm

Busca_Paci_Eva ( @Rut_Pac1, @Nom_Pac1, @Ape_Pac1 )
J. Ernesto Pinto Q.
Fwh_x64 2407 + BCC++_x64 7_70__6_72 + Harbour 3.20 + LopeEdit 5.8 + UEstudio 26.0
jepsys@hotmail.com, jepsys@gmail.com, jepsys@yahoo.com
User avatar
J. Ernesto
 
Posts: 161
Joined: Tue Feb 03, 2009 10:08 pm
Location: Bogotá D.C. Colombia

Re: Favor Ayuda para Actualizar Datos en un Dialogo

Postby cnavarro » Sun Aug 14, 2022 7:51 pm

Normal que no te funcione.
Al llamar a la function
Code: Select all  Expand view  RUN

            @ 235,230 BTNBMP  SIZE 55,50 PROMPT "BUSCA" OF oDlg2 2007 Resource "#8018" FONT oFont7 oGroup FLAT;
                            ToolTip "BUSCAR PACIENTE";
                              ACTION (IF(!Busca_Paci_Eva(Rut_Pac1,Nom_Pac1,Ape_Pac1),(MsgStop(Mensa),.F.),.t.)),(oGet1:Refresh(),oGet2:Refresh(),oGet3:Refresh())
 

Estás pasando las variables y son recibidas en dicha function con el mismo nombre ( que son static inicialmente, y al ser recibidas como parámetros con el mismo nombre, son locales, por lo tanto es como si fuesen otras variables distintas, por eso no es que no funcionen los refresh de los gets, es que sus variables de los gets no las has modificado )
Prueba llamando a la function
Code: Select all  Expand view  RUN

            @ 235,230 BTNBMP  SIZE 55,50 PROMPT "BUSCA" OF oDlg2 2007 Resource "#8018" FONT oFont7 oGroup FLAT;
                            ToolTip "BUSCAR PACIENTE";
                              ACTION (IF(!Busca_Paci_Eva(),(MsgStop(Mensa),.F.),.t.)),(oGet1:Refresh(),oGet2:Refresh(),oGet3:Refresh())
 

y define la function
Code: Select all  Expand view  RUN

Function Busca_Paci_Eva()   // sin parámetros: no los necesitas, las variables que vas a usar son static y por lo tanto ya visibles
.../...
 
Cristobal Navarro
Hay dos tipos de personas: las que te hacen perder el tiempo y las que te hacen perder la noción del tiempo
El secreto de la felicidad no está en hacer lo que te gusta, sino en que te guste lo que haces
User avatar
cnavarro
 
Posts: 6552
Joined: Wed Feb 15, 2012 8:25 pm
Location: España

Re: Favor Ayuda para Actualizar Datos en un Dialogo

Postby remtec » Sun Aug 14, 2022 9:15 pm

J. Ernesto wrote:Busca_Paci_Eva ( @Rut_Pac1, @Nom_Pac1, @Ape_Pac1 )


Hola Ernesto.

Muy amable y muchas gracias por tu ayuda y tiempo dedicado.

Muchos saludos.

Antonio
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 719
Joined: Fri May 12, 2017 2:50 pm

Re: Favor Ayuda para Actualizar Datos en un Dialogo

Postby remtec » Sun Aug 14, 2022 9:18 pm

cnavarro wrote:Normal que no te funcione.
Al llamar a la function
Code: Select all  Expand view  RUN

            @ 235,230 BTNBMP  SIZE 55,50 PROMPT "BUSCA" OF oDlg2 2007 Resource "#8018" FONT oFont7 oGroup FLAT;
                            ToolTip "BUSCAR PACIENTE";
                              ACTION (IF(!Busca_Paci_Eva(Rut_Pac1,Nom_Pac1,Ape_Pac1),(MsgStop(Mensa),.F.),.t.)),(oGet1:Refresh(),oGet2:Refresh(),oGet3:Refresh())
 

Estás pasando las variables y son recibidas en dicha function con el mismo nombre ( que son static inicialmente, y al ser recibidas como parámetros con el mismo nombre, son locales, por lo tanto es como si fuesen otras variables distintas, por eso no es que no funcionen los refresh de los gets, es que sus variables de los gets no las has modificado )
Prueba llamando a la function
Code: Select all  Expand view  RUN

            @ 235,230 BTNBMP  SIZE 55,50 PROMPT "BUSCA" OF oDlg2 2007 Resource "#8018" FONT oFont7 oGroup FLAT;
                            ToolTip "BUSCAR PACIENTE";
                              ACTION (IF(!Busca_Paci_Eva(),(MsgStop(Mensa),.F.),.t.)),(oGet1:Refresh(),oGet2:Refresh(),oGet3:Refresh())
 

y define la function
Code: Select all  Expand view  RUN

Function Busca_Paci_Eva()   // sin parámetros: no los necesitas, las variables que vas a usar son static y por lo tanto ya visibles
.../...
 


Hola Cristobal

Muy amable, muchas gracias por tu ayuda y tiempo dedicado.

Muchas gracias por su explicación, me quedo muy claro mi error.

Aplique su sugerencia y funciono perfecto.

Muchas gracias y muchos saludos.

Antonio
FWH 22.10 - HARBOUR - PELLES C
remtec
 
Posts: 719
Joined: Fri May 12, 2017 2:50 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 91 guests