Page 1 of 1

Favor Ayuda Urgente

Posted: Sat Oct 24, 2020 11:46 pm
by remtec
Hola Amigos.

Necesito molestarlos.

Tengo un programa que debe ingresar datos a una base de datos, el problema que no logro limpiar las variables despues de grabar un dato, mantiene los datos del ingreso, ya estoy mareado y no encuentro el error. Debo limpiar todas las variables para el proximo ingreso.

Desde ya muchos gracias y muchos saludos.

Antonio.

Dejo el Codigo:

Code: Select all

Function Crea_Lista()
        Local oDlg2, oBrw2, oFont2, oFont4,otitu2,oFont5,oFont6,oFont10
        Local oGroup,oGroup1,oGroup2
        Field NAME

        Private  oGet1,oGet2,oGet3,oGet4 ,  oGet5,oGet6,oGet7,oGet8,oGet9,oGet10,oGet11,oGet12,oGet13,oGet14,oGet15
        Private Rut_Pac1:=Spac(12) ,  Nom_Pac1:=Spac(35),Ape_Pac1:=Spac(35) , Nro_Cor1:=1


        Abre_dbf("maepacie",1,.f.,"")
      set inde to maepacie

      Abre_dbf("DetaFis",2,.f.,"")
      set inde to DetaFis

        Sele b
        Go Top
        If Eof()
                Nro_Cor1:=1
        Else
                DbSetOrder(2)
                Go Bott
                Nro_Cor1:=Nro_Cor + 1
        Endif
     /*
     Sele Maepacie
     Nro_Fic1 = a->Nro_Fic
     Rut_Pac1 = a->Rut_Pac
     Ape_Pac1 = a->Ape_Pac
     Nom_Pac1 = a->Nom_Pac
     Fec_Nac1 = ctod(a->Fec_Nac)
     Eda_Pac1 = a->Eda_Pac
     __Pac1 = a->__Pac
     Dir_Pac1 = a->Dir_Pac
     Cod_Ciu1 = a->Cod_Ciu
     Cod_Com1 = a->Cod_Com
     Fon_Pac1 = a->Fon_Pac
     Tip_Pag1 = a->Tip_Pag
     Act_Pac1 = a->Act_Pac
     Cod_Pai1 = a->Cod_Pai
     Fec_ate1 = ctod(a->Fec_Ate)
     Nro_Pas1 = a->Nro_Pas
     Pat_Pac1 = a->Pat_Pac
     Rut_Pac1 = Saca_puntos(Rut_Pac1)
     */

     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

    // @ 10,50 SAY otitu2 PROMPT " MAESTRO DE PACIENTES "  PIXEL OF oDlg2 COLORS RGB(12, 135, 27)   FONT oFont4


   DEFINE DIALOG oDlg2 SIZE 680,560 PIXEL TRUEPIXEL FONT oFont2  STYLE 4

     @ 00,150 SAY otitu PROMPT " CREA LISTA DE PACIENTES "  PIXEL OF oDlg2 COLORS RGB(0,100,0)   FONT oFont5

     @  045,18 GROUP oGroup1  TO 208,660 PIXEL OF oDlg2

     @ 030,020 SAY "Nro. Regis.: "     SIZE 100,20 PIXEL OF oDlg2  RIGHT

     @ 030,140 SAY oGet4 PROMPT Nro_Cor1       SIZE 100,22  PIXEL OF oDlg2      COLOR RGB(0,0,128)   FONT oFont4   BORDER

   @ 060,020 SAY "R.u.t."           SIZE 100,20 PIXEL OF oDlg2  RIGHT
     @ 060,180 SAY "(Ej. 99999999-9)" SIZE 200,20 PIXEL OF oDlg2  RIGHT FONT oFont10
   @ 090,020 SAY "Apellidos"        SIZE 100,20 PIXEL OF oDlg2  RIGHT
   @ 120,020 SAY "Nombres"          SIZE 100,20 PIXEL OF oDlg2  RIGHT

     @ 060,140 GET oGet1    Var Rut_Pac1       SIZE 130,22  PIXEL OF oDlg2      COLOR RGB(0,0,128)   FONT oFont4 UPDATE

                                                    oGet1:bValid := <|g|
                                            If !Vrut(Rut_pac1)
                                               return .f.
                                                    Else
                                                            If !Consulta_datos(Rut_Pac1,Nom_Pac1,Ape_Pac1)
                                                                    MsgStop(" ERROR No Hay Pacientes Digitado ")
                                                                    Return .f.
                                                            Else
                                                                    Sele a

                                                                    Sele b
                                                                    DbSetOrder(1)
                                                                    Seek Rut_Pac1
                                                                    If Eof()
                                                                            DbSetOrder(2)
                                                                            Go Bott
                                                                            Nro_Cor1:=Nro_Cor + 1
                                                                            Nom_Pac1:=a->Nom_Pac
                                                                            Ape_Pac1:=a->Ape_Pac
                                                                    Else
                                                                            MsgStop(" CUIDADO Paciente YA EXISTE ")

                                                                            Nro_Cor1:=Nro_Cor
                                                                            Nom_Pac1:=B->Nom_Pac
                                                                            Ape_Pac1:=B->Ape_Pac
                                                                    Endif
                                                                    oGet2:Refresh()
                                                                    oGet3:Refresh()
                                                                    oGet4:Refresh()

                                                            Endif
                                                    return .t.
                                            endif

                                                    >

     @ 090,140 GET oGet2    Var Ape_Pac1       SIZE 300,22 PIXEL OF oDlg2   PICTURE "@!"   COLOR RGB(0,0,128)   FONT oFont4 UPDATE
     @ 120,140 GET oGet3    Var Nom_Pac1       SIZE 300,22 PIXEL OF oDlg2   PICTURE "@!"   COLOR RGB(0,0,128)   FONT oFont4 UPDATE

     @ 460,500 BTNBMP SIZE 60,60 PROMPT "SALIR"  OF oDlg2 PIXEL 2007 Resource "#8101"  FONT oFont6 oGroup FLAT;
                    ToolTip  "VOLVER";
                    ACTION (oDlg2:End())

     @ 460,50 BTNBMP  SIZE 60,60 PROMPT "MODIFI" OF oDlg2 2007 Resource "#8105" FONT oFont6 oGroup FLAT;
                    ToolTip "MODIFICAR DATOS" ;
                    ACTION (oGet1:SetFocus() )

     @ 460,200 BTNBMP  SIZE 60,60 PROMPT "GRABA" OF oDlg2 2007 Resource "#8106" FONT oFont6 oGroup FLAT;
                    ToolTip "GRABA DATOS";
                        ACTION  IF(!Graba(Rut_Pac1,Nom_Pac1,Ape_Pac1,Nro_Cor1),(MsgInfo( "NO SE HA REALIZADO LA ACTUALIZACION" ),.F.),(oGet1:Refresh(),oGet2:Refresh(),oGet3:Refresh(),oDlg2:Refresh(),oGet1:SetFocus()))

     ACTIVATE DIALOG oDlg2 CENTERED


     RELEASE FONT oFont2,oFont4,oFont5
     Return


Function Consulta_Datos(Rut_Pac1,Nom_Pac1,Ape_Pac1)
     Rut2 = Pone_Puntos(Rut_Pac1)

     Sele Maepacie

     Seek Rut2
     If Eof()
            return .f.
     Endif
     Return .t.

Function Graba(Rut_Pac1,Nom_Pac1,Ape_Pac1,Nro_Cor1)
    IF MsgYesNo( "Atención: ¿Está Seguro de Querer GRABAR Datos ?","Ingrese Opción")
            Rut2 = Pone_Puntos(Rut_Pac1)
            Sele a
            Seek Rut_Pac1
            Sele b
            Seek Rut_Pac1
            If !Eof()
          Do while .t.
             If Flock()
                                Repl Nom_Pac with Nom_Pac1,Ape_Pac with Ape_Pac1,Eda_Pac with a->Eda_Pac,;
                                        Fec_Nac with a->Fec_Nac,Dir_Pac with a->Dir_Pac,__Pac with a->__Pac,Rut_Pac2 with Rut2
                  Dbcommit()
                  Dbunlock()
                  Exit
             Endif
          Enddo
            Else
          Do while .t.
                         Dbappend()
                         if !neterr()
                                Repl Rut_Pac with Rut_Pac1,Nom_Pac with Nom_Pac1,Ape_Pac with Ape_Pac1,Eda_Pac with a->Eda_Pac,;
                                        Fec_Nac with a->Fec_Nac,Dir_Pac with a->Dir_Pac,__Pac with a->__Pac,Rut_Pac2 with Rut2,;
                                        Nro_Cor with Nro_Cor1

                  Dbcommit()
                  Dbunlock()
                  Exit
             Endif
          Enddo
            Endif
            // Aqui inicializo las variables
            DbSetOrder(2)
            Go bott

            Nro_Cor1:=Nro_Cor + 1
            Rut_Pac1:=Spac(12)
            Nom_Pac1:=Spac(25)
            Ape_Pac1:=Spac(25)
            oGet1:Refresh()
            oGet2:Refresh()
            oGet3:Refresh()
            oGet4:Refresh()

            DbSetOrder(1)

            Return .t.
    Endif
    Return .f.

 

Re: Favor Ayuda Urgente

Posted: Sun Oct 25, 2020 3:05 am
by karinha

Code: Select all

FUNCTION Crea_Lista()

   FIELD NAME  // CAMPO DEL BD

   LOCAL oDlg2, oBrw2, oFont2, oFont4, otitu2, oFont5, oFont6, oFont10
   LOCAL oGroup, oGroup1, oGroup2

   PRIVATE  oGet1, oGet2, oGet3, oGet4 ,  oGet5, oGet6, oGet7, oGet8, oGet9, ;
            oGet10, oGet11, oGet12, oGet13, oGet14, oGet15

   PRIVATE Rut_Pac1 := Spac( 12 ) , Nom_Pac1 := Spac( 35 ), ;
           Ape_Pac1 := Spac( 35 ) , Nro_Cor1 := 1

   Abre_dbf( "maepacie", 1, .F. , "" )
   SET INDE TO maepacie

   Abre_dbf( "DetaFis", 2, .F. , "" )
   SET INDE TO DetaFis

   SELE b
   GO TOP

   IF Eof()
      Nro_Cor1 := 1
   ELSE
      DbSetOrder( 2 )
      GO BOTT
      Nro_Cor1 := Nro_Cor + 1
   ENDIF

   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 DIALOG oDlg2 SIZE 680, 560 PIXEL TRUEPIXEL FONT oFont2  STYLE 4

   @ 00, 150 SAY otitu PROMPT " CREA LISTA DE PACIENTES "  PIXEL OF oDlg2 ;
      COLORS RGB( 0, 100, 0 )   FONT oFont5

   @  045, 18 GROUP oGroup1  TO 208, 660 PIXEL OF oDlg2

   @ 030, 020 SAY "Nro. Regis.: "     SIZE 100, 20 PIXEL OF oDlg2  RIGHT

   @ 030, 140 SAY oGet4 PROMPT Nro_Cor1       SIZE 100, 22  PIXEL OF oDlg2      COLOR RGB( 0, 0, 128 )   FONT oFont4   BORDER

   @ 060, 020 SAY "R.u.t."           SIZE 100, 20 PIXEL OF oDlg2  RIGHT

   @ 060, 180 SAY "(Ej. 99999999-9)" SIZE 200, 20 PIXEL OF oDlg2  RIGHT ;
      FONT oFont10

   @ 090, 020 SAY "Apellidos"        SIZE 100, 20 PIXEL OF oDlg2  RIGHT

   @ 120, 020 SAY "Nombres"          SIZE 100, 20 PIXEL OF oDlg2  RIGHT

   @ 060, 140 GET oGet1    Var Rut_Pac1       SIZE 130, 22  PIXEL OF oDlg2      COLOR RGB( 0, 0, 128 )   FONT oFont4 UPDATE

   oGet1:bValid := < |g|

   IF .NOT. Vrut( Rut_pac1 )

      RETURN .F.

   ELSE

      IF .NOT. Consulta_datos( Rut_Pac1, Nom_Pac1, Ape_Pac1 )

         MsgStop( " ERROR No Hay Pacientes Digitado " )

         RETURN .F.

      ELSE

         SELE a

         SELE b
         DbSetOrder( 1 )

         SEEK Rut_Pac1

         IF .NOT. FOUND() // Eof()

            DbSetOrder( 2 )
            GO BOTT

            Nro_Cor1 := Nro_Cor + 1
            Nom_Pac1 := a->Nom_Pac
            Ape_Pac1 := a->Ape_Pac

         ELSE

            MsgStop( " CUIDADO Paciente YA EXISTE " )

            Nro_Cor1 := Nro_Cor
            Nom_Pac1 := B->Nom_Pac
            Ape_Pac1 := B->Ape_Pac

         ENDIF

         oGet2:Refresh()
         oGet3:Refresh()
         oGet4:Refresh()

      ENDIF
      RETURN .T.
   ENDIF
   >

   @ 090, 140 GET oGet2    Var Ape_Pac1       SIZE 300, 22 PIXEL OF oDlg2   ;
      PICTURE "@!"   COLOR RGB( 0, 0, 128 )   FONT oFont4 UPDATE

   @ 120, 140 GET oGet3    Var Nom_Pac1       SIZE 300, 22 PIXEL OF oDlg2   ;
      PICTURE "@!"   COLOR RGB( 0, 0, 128 )   FONT oFont4 UPDATE

   @ 460, 500 BTNBMP SIZE 60, 60 PROMPT "SALIR"  OF oDlg2 PIXEL 2007 ;
      Resource "#8101"  FONT oFont6 oGroup FLAT ;
      ToolTip  "VOLVER";
      ACTION ( oDlg2:End() )

   // oBtn:lCancel := .T.  // Para BTNBMP

   @ 460, 50 BTNBMP  SIZE 60, 60 PROMPT "MODIFI" OF oDlg2 2007 ;
      Resource "#8105" FONT oFont6 oGroup FLAT ;
      ToolTip "MODIFICAR DATOS" ;
      ACTION ( oGet1:SetFocus() )

   @ 460, 200 BTNBMP  SIZE 60, 60 PROMPT "GRABA" OF oDlg2 2007 ;
      Resource "#8106" FONT oFont6 oGroup FLAT ;
      ToolTip "GRABA DATOS";
      ACTION  IF( !Graba( Rut_Pac1,Nom_Pac1,Ape_Pac1,Nro_Cor1 ), ;
         ( MsgInfo( "NO SE HA REALIZADO LA ACTUALIZACION" ), .F. ), ;
         ( oGet1:Refresh(), oGet2:Refresh(), oGet3:Refresh(), oDlg2:Refresh(), ;
           oGet1:SetFocus() ) )

   ACTIVATE DIALOG oDlg2 CENTERED

   RELEASE FONT oFont2, oFont4, oFont5

RETURN NIL

FUNCTION Consulta_Datos( Rut_Pac1, Nom_Pac1, Ape_Pac1 )

   Rut2 = Pone_Puntos( Rut_Pac1 )

   SELE Maepacie

   SEEK Rut2

   IF .NOT. FOUND() // Eof()
      RETURN .F.
   ENDIF

RETURN .T.

FUNCTION Graba( Rut_Pac1, Nom_Pac1, Ape_Pac1, Nro_Cor1 )

   IF MsgYesNo( "Atención: ¿Está Seguro de Querer GRABAR Datos ?", "Ingrese Opción" )

      Rut2 = Pone_Puntos( Rut_Pac1 )

      SELE a
      SEEK Rut_Pac1

      SELE b
      SEEK Rut_Pac1

      IF FOUND() //!Eof()

         /*
         WHILE( .T. )  //?? Porque un looping aqui?

            SYSREFRESH()
         */

            IF Flock()

               // NO COMPRENDO QUE ES ESTE _ WITH ::
               REPL Nom_Pac WITH Nom_Pac1, Ape_Pac WITH Ape_Pac1, ;
                    Eda_Pac WITH a->Eda_Pac, ;
                    Fec_Nac WITH a->Fec_Nac, Dir_Pac WITH a->Dir_Pac, _ WITH a->_, Rut_Pac2 WITH Rut2

               Dbcommit()
               Dbunlock()



              // EXIT

            ENDIF

         // ENDDO  //?? ES SOLO 1 REGISTRO? SE NO, Y EL SKIP?

      ELSE

         // DO WHILE .T. //?? porque un looping aqui?
         //    SYSREFRESH()

            Dbappend()  // APPEND BLANC

            IF .NOT. neterr()

               // ???
               REPL Rut_Pac WITH Rut_Pac1, Nom_Pac WITH Nom_Pac1, Ape_Pac WITH Ape_Pac1, Eda_Pac WITH a->Eda_Pac, ;
                  Fec_Nac WITH a->Fec_Nac, Dir_Pac WITH a->Dir_Pac, _ WITH a->_, Rut_Pac2 WITH Rut2, ;
                  Nro_Cor WITH Nro_Cor1

               Dbcommit()
               Dbunlock()

               // EXIT

            ENDIF

         // ENDDO

      ENDIF

      // Aqui inicializo las variables
      DbSetOrder( 2 )
      GO BOTT

      Nro_Cor1 := Nro_Cor + 1
      Rut_Pac1 := Spac( 12 )
      Nom_Pac1 := Spac( 25 )
      Ape_Pac1 := Spac( 25 )

      // oGet1:VARPUT( Variable )
      oGet1:Refresh()

      // oGet2:VARPUT( Variable )
      oGet2:Refresh()

      // oGet3:VARPUT( Variable )
      oGet3:Refresh()

      // oGet4:VARPUT( Variable )
      oGet4:Refresh()

      DbSetOrder( 1 )

      RETURN( .T. )

   ENDIF

RETURN( .F. )
 

Re: Favor Ayuda Urgente

Posted: Sun Oct 25, 2020 4:41 pm
by remtec
Hola Karinha.

Muy agradecido por tu ayuda y atención, siempre estas dispuesto a ayudar.

Funciono Perfecto.

Una duda sobre las modificaciones, Eof() y ! como negación, siempre me a funcionado y les he usado desde clipper, en Fivewin funcionan mejor tus cambios?

Muchos Saludos

Antonio.

Re: Favor Ayuda Urgente

Posted: Sun Oct 25, 2020 7:39 pm
by artu01
Hola remtec con ! y dbseek() tambien deberia de funcionar

Code: Select all

FUNCTION Crea_Lista()

   FIELD NAME  // CAMPO DEL BD

   LOCAL oDlg2, oBrw2, oFont2, oFont4, otitu2, oFont5, oFont6, oFont10
   LOCAL oGroup, oGroup1, oGroup2

   PRIVATE  oGet1, oGet2, oGet3, oGet4 ,  oGet5, oGet6, oGet7, oGet8, oGet9, ;
            oGet10, oGet11, oGet12, oGet13, oGet14, oGet15

   PRIVATE Rut_Pac1 := Spac( 12 ) , Nom_Pac1 := Spac( 35 ), ;
           Ape_Pac1 := Spac( 35 ) , Nro_Cor1 := 1

   Abre_dbf( "maepacie", 1, .F. , "" )
   SET INDE TO maepacie

   Abre_dbf( "DetaFis", 2, .F. , "" )
   SET INDE TO DetaFis

   SELE b
   GO TOP

   IF Eof()
      Nro_Cor1 := 1
   ELSE
      DbSetOrder( 2 )
      GO BOTT
      Nro_Cor1 := Nro_Cor + 1
   ENDIF

   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 DIALOG oDlg2 SIZE 680, 560 PIXEL TRUEPIXEL FONT oFont2  STYLE 4

   @ 00, 150 SAY otitu PROMPT " CREA LISTA DE PACIENTES "  PIXEL OF oDlg2 ;
      COLORS RGB( 0, 100, 0 )   FONT oFont5

   @  045, 18 GROUP oGroup1  TO 208, 660 PIXEL OF oDlg2

   @ 030, 020 SAY "Nro. Regis.: "     SIZE 100, 20 PIXEL OF oDlg2  RIGHT

   @ 030, 140 SAY oGet4 PROMPT Nro_Cor1       SIZE 100, 22  PIXEL OF oDlg2      COLOR RGB( 0, 0, 128 )   FONT oFont4   BORDER

   @ 060, 020 SAY "R.u.t."           SIZE 100, 20 PIXEL OF oDlg2  RIGHT

   @ 060, 180 SAY "(Ej. 99999999-9)" SIZE 200, 20 PIXEL OF oDlg2  RIGHT ;
      FONT oFont10

   @ 090, 020 SAY "Apellidos"        SIZE 100, 20 PIXEL OF oDlg2  RIGHT

   @ 120, 020 SAY "Nombres"          SIZE 100, 20 PIXEL OF oDlg2  RIGHT

   @ 060, 140 GET oGet1    Var Rut_Pac1       SIZE 130, 22  PIXEL OF oDlg2      COLOR RGB( 0, 0, 128 )   FONT oFont4 UPDATE

   oGet1:bValid := < |g|

   //IF .NOT. Vrut( Rut_pac1 )
   IF !vrut( Rut_pac1 )

      RETURN .F.

   ELSE

      //IF .NOT. Consulta_datos( Rut_Pac1, Nom_Pac1, Ape_Pac1 )
      IF !Consulta_datos( Rut_Pac1, Nom_Pac1, Ape_Pac1 )
      

         MsgStop( " ERROR No Hay Pacientes Digitado " )

         RETURN .F.

      ELSE

         SELE a

         SELE b
         DbSetOrder( 1 )

         if !dbSEEK (Rut_Pac1)

         //IF .NOT. FOUND() // Eof()

            DbSetOrder( 2 )
            GO BOTT

            Nro_Cor1 := Nro_Cor + 1
            Nom_Pac1 := a->Nom_Pac
            Ape_Pac1 := a->Ape_Pac

         ELSE

            MsgStop( " CUIDADO Paciente YA EXISTE " )

            Nro_Cor1 := Nro_Cor
            Nom_Pac1 := B->Nom_Pac
            Ape_Pac1 := B->Ape_Pac

         ENDIF

         oGet2:Refresh()
         oGet3:Refresh()
         oGet4:Refresh()

      ENDIF
      RETURN .T.
   ENDIF
   >

   @ 090, 140 GET oGet2    Var Ape_Pac1       SIZE 300, 22 PIXEL OF oDlg2   ;
      PICTURE "@!"   COLOR RGB( 0, 0, 128 )   FONT oFont4 UPDATE

   @ 120, 140 GET oGet3    Var Nom_Pac1       SIZE 300, 22 PIXEL OF oDlg2   ;
      PICTURE "@!"   COLOR RGB( 0, 0, 128 )   FONT oFont4 UPDATE

   @ 460, 500 BTNBMP SIZE 60, 60 PROMPT "SALIR"  OF oDlg2 PIXEL 2007 ;
      Resource "#8101"  FONT oFont6 oGroup FLAT ;
      ToolTip  "VOLVER";
      ACTION ( oDlg2:End() )

   // oBtn:lCancel := .T.  // Para BTNBMP

   @ 460, 50 BTNBMP  SIZE 60, 60 PROMPT "MODIFI" OF oDlg2 2007 ;
      Resource "#8105" FONT oFont6 oGroup FLAT ;
      ToolTip "MODIFICAR DATOS" ;
      ACTION ( oGet1:SetFocus() )

   @ 460, 200 BTNBMP  SIZE 60, 60 PROMPT "GRABA" OF oDlg2 2007 ;
      Resource "#8106" FONT oFont6 oGroup FLAT ;
      ToolTip "GRABA DATOS";
      ACTION  IF( !Graba( Rut_Pac1,Nom_Pac1,Ape_Pac1,Nro_Cor1 ), ;
         ( MsgInfo( "NO SE HA REALIZADO LA ACTUALIZACION" ), .F. ), ;
         ( oGet1:Refresh(), oGet2:Refresh(), oGet3:Refresh(), oDlg2:Refresh(), ;
           oGet1:SetFocus() ) )

   ACTIVATE DIALOG oDlg2 CENTERED

   RELEASE FONT oFont2, oFont4, oFont5

RETURN NIL

FUNCTION Consulta_Datos( Rut_Pac1, Nom_Pac1, Ape_Pac1 )

   Rut2 = Pone_Puntos( Rut_Pac1 )

   SELE Maepacie

   if !dbSEEK(Rut2)

   //IF .NOT. FOUND() // Eof()
      RETURN .F.
   ENDIF

RETURN .T.

FUNCTION Graba( Rut_Pac1, Nom_Pac1, Ape_Pac1, Nro_Cor1 )

   IF MsgYesNo( "Atención: ¿Está Seguro de Querer GRABAR Datos ?", "Ingrese Opción" )

      Rut2 = Pone_Puntos( Rut_Pac1 )

      SELE a
      SEEK Rut_Pac1

      SELE b
      if dbSEEK(Rut_Pac1)

      //IF FOUND() //!Eof()

         /*
         WHILE( .T. )  //?? Porque un looping aqui?

            SYSREFRESH()
         */

            IF Flock()

               // NO COMPRENDO QUE ES ESTE _ WITH ::
               REPL Nom_Pac WITH Nom_Pac1, Ape_Pac WITH Ape_Pac1, ;
                    Eda_Pac WITH a->Eda_Pac, ;
                    Fec_Nac WITH a->Fec_Nac, Dir_Pac WITH a->Dir_Pac, _ WITH a->_, Rut_Pac2 WITH Rut2

               Dbcommit()
               Dbunlock()



              // EXIT

            ENDIF

         // ENDDO  //?? ES SOLO 1 REGISTRO? SE NO, Y EL SKIP?

      ELSE

         // DO WHILE .T. //?? porque un looping aqui?
         //    SYSREFRESH()

            Dbappend()  // APPEND BLANC

            IF .NOT. neterr()

               // ???
               REPL Rut_Pac WITH Rut_Pac1, Nom_Pac WITH Nom_Pac1, Ape_Pac WITH Ape_Pac1, Eda_Pac WITH a->Eda_Pac, ;
                  Fec_Nac WITH a->Fec_Nac, Dir_Pac WITH a->Dir_Pac, _ WITH a->_, Rut_Pac2 WITH Rut2, ;
                  Nro_Cor WITH Nro_Cor1

               Dbcommit()
               Dbunlock()

               // EXIT

            ENDIF

         // ENDDO

      ENDIF

      // Aqui inicializo las variables
      DbSetOrder( 2 )
      GO BOTT

      Nro_Cor1 := Nro_Cor + 1
      Rut_Pac1 := Spac( 12 )
      Nom_Pac1 := Spac( 25 )
      Ape_Pac1 := Spac( 25 )

      // oGet1:VARPUT( Variable )
      oGet1:Refresh()

      // oGet2:VARPUT( Variable )
      oGet2:Refresh()

      // oGet3:VARPUT( Variable )
      oGet3:Refresh()

      // oGet4:VARPUT( Variable )
      oGet4:Refresh()

      DbSetOrder( 1 )

      RETURN( .T. )

   ENDIF

RETURN( .F. )
 

Re: Favor Ayuda Urgente

Posted: Mon Oct 26, 2020 12:06 pm
by karinha
Buenos, RemTec, en RED, EOF() puede fallar, és mejor usar el poder del nuevo compilador xHarbour, usando FOUND(). Saludos.