Página 1 de 1

Poblema com atualização de dados

Enviado: 27 Fev 2009 11:49
por Netavin
Bom dia amigos !
Depois de tanto tempo trabalhando com o sistema, fui alertado para um problema que ocorre: inicia-se uma alteração e após ter trocado algumas informações, o usuário desiste teclando ESC. Porém ao efetuar a consulta àquele registro, observa-se que a alteração foi efetuada mesmo tendo desitido. Eis um trecho do programa...

Código: Selecionar todos

@ 36,07 Say "OUTRAS INFORMA€OES"
        SETCOLOR("N/W,W/B")
        @ 37,07 Say "Pai......:" get pai pict "@!" valid !empty(pai)
        @ 38,07 Say "MÆe......:" get mae pict "@!" valid !empty(mae)
        @ 39,07 Say "Est.civil:" get civ pict "@!" valid !empty(civ)
        @ 39,35 Say "C“njuge:"   get con
        SETCOLOR("GR/W")
        @ 41,07 Say "DEPENDENTES"
        SETCOLOR("N/W,W/B")
        @ 41,23 Say "    NOME                PARENTESCO    DT NASC."
        @ 42,07 Say "1-) .:" get fil1 pict "@!"
        @ 42,47 get par1
        @ 42,60 get d1na
        @ 43,07 Say "2-) .:" get fil2 pict "@!"
        @ 43,14 get fil2
        @ 43,47 get par2
        @ 43,60 get d2na
        @ 44,07 Say "3-) .:" get fil3 pict "@!"
        @ 44,14 get fil3
        @ 44,47 get par3
        @ 44,60 get d3na
        Read

        If Lastkey() = 27
            CANCBEEP()
            A_lerta("Altera‡ao cancelada!")
            Use
            Exit
        Endif

        If Updated()
            DbCommit()
            DONEBEEP()
            A_lerta("Altera‡ao efetuada")

            Tone(1700,1)

            If opc:=A_lerta("Continuar?",{"Sim","Nao"}) = 1
                Loop
            Else
                Use
                Exit
            Endif

        Else

            DONEBEEP()
            A_lerta("Nao houve altera‡oes!")

            Tone(1700,1)

            If opc:=A_lerta("Continuar?",{"Sim","Nao"}) = 1
                Loop
            Else
                Use
                Exit
            Endif

        Endif

    Else

        ERRORBEEP()
        A_lerta("C¢digo nÆo cadastrado")
        Tone(1700,1)
        If OPC:=A_lerta("Continuar?",{"$Sim","$Nao"}) = 1
            Loop
        Else
            Use
            Exit
        Endif

    Endif

Enddo

DbCloseAll()
Return
Agradeço a atenção e informação que possa corrigir o "bug".

[]´s
Netavin

Re: Poblema com atualização de dados

Enviado: 27 Fev 2009 12:00
por sygecom
Ficaria assim, faça o teste ai:

Código: Selecionar todos

@ 36,07 Say "OUTRAS INFORMA€OES"
        SETCOLOR("N/W,W/B")
        @ 37,07 Say "Pai......:" get pai pict "@!" valid !empty(pai)
        @ 38,07 Say "MÆe......:" get mae pict "@!" valid !empty(mae)
        @ 39,07 Say "Est.civil:" get civ pict "@!" valid !empty(civ)
        @ 39,35 Say "C“njuge:"   get con
        SETCOLOR("GR/W")
        @ 41,07 Say "DEPENDENTES"
        SETCOLOR("N/W,W/B")
        @ 41,23 Say "    NOME                PARENTESCO    DT NASC."
        @ 42,07 Say "1-) .:" get fil1 pict "@!"
        @ 42,47 get par1
        @ 42,60 get d1na
        @ 43,07 Say "2-) .:" get fil2 pict "@!"
        @ 43,14 get fil2
        @ 43,47 get par2
        @ 43,60 get d2na
        @ 44,07 Say "3-) .:" get fil3 pict "@!"
        @ 44,14 get fil3
        @ 44,47 get par3
        @ 44,60 get d3na
        Read

        If Lastkey() = 27
            CANCBEEP()
            A_lerta("Altera‡ao cancelada!")
            DbCloseAll()
            Return
        Endif

        If Updated()
            DbCommit()
            DONEBEEP()
            A_lerta("Altera‡ao efetuada")

            Tone(1700,1)

            If opc:=A_lerta("Continuar?",{"Sim","Nao"}) = 1
                Loop
            Else
                Use
                Exit
            Endif

        Else

            DONEBEEP()
            A_lerta("Nao houve altera‡oes!")

            Tone(1700,1)

            If opc:=A_lerta("Continuar?",{"Sim","Nao"}) = 1
                Loop
            Else
                Use
                Exit
            Endif

        Endif

    Else

        ERRORBEEP()
        A_lerta("C¢digo nÆo cadastrado")
        Tone(1700,1)
        If OPC:=A_lerta("Continuar?",{"$Sim","$Nao"}) = 1
            Loop
        Else
            Use
            Exit
        Endif

    Endif

Enddo

DbCloseAll()
Return

Re: Poblema com atualização de dados

Enviado: 27 Fev 2009 12:35
por Netavin
... mesmo com as alterações o problema persiste.

Obrigado !!!

[]´s
Netavin

Re: Poblema com atualização de dados

Enviado: 27 Fev 2009 12:53
por sygecom
Testa Novamente:

Código: Selecionar todos

   @ 36,07 Say "OUTRAS INFORMA€OES"
   SETCOLOR("N/W,W/B")
   @ 37,07 Say "Pai......:" get pai pict "@!" valid !empty(pai)
   @ 38,07 Say "MÆe......:" get mae pict "@!" valid !empty(mae)
   @ 39,07 Say "Est.civil:" get civ pict "@!" valid !empty(civ)
   @ 39,35 Say "C“njuge:"   get con
   SETCOLOR("GR/W")
   @ 41,07 Say "DEPENDENTES"
   SETCOLOR("N/W,W/B")
   @ 41,23 Say "    NOME                PARENTESCO    DT NASC."
   @ 42,07 Say "1-) .:" get fil1 pict "@!"
   @ 42,47 get par1
   @ 42,60 get d1na
   @ 43,07 Say "2-) .:" get fil2 pict "@!"
   @ 43,14 get fil2
   @ 43,47 get par2
   @ 43,60 get d2na
   @ 44,07 Say "3-) .:" get fil3 pict "@!"
   @ 44,14 get fil3
   @ 44,47 get par3
   @ 44,60 get d3na
   Read

   If Lastkey() = 27
      CANCBEEP()
      A_lerta("Altera‡ao cancelada!")
      DbCloseAll()
      Return
   else
      If Updated()
         DbCommit()
         DONEBEEP()
         A_lerta("Altera‡ao efetuada")

         Tone(1700,1)

         If opc:=A_lerta("Continuar?",{"Sim","Nao"}) = 1
             Loop
         Else
             Use
             Exit
         Endif
      Else
         DONEBEEP()
         A_lerta("Nao houve altera‡oes!")

         Tone(1700,1)

         If opc:=A_lerta("Continuar?",{"Sim","Nao"}) = 1
             Loop
         Else
             Use
             Exit
         Endif
     Endif
   Endif
Else
   ERRORBEEP()
   A_lerta("C¢digo nÆo cadastrado")
   Tone(1700,1)
   If OPC:=A_lerta("Continuar?",{"$Sim","$Nao"}) = 1
       Loop
   Else
       Use
       Exit
   Endif
ENDIF

Enddo
DbCloseAll()
Return

Re: Poblema com atualização de dados

Enviado: 27 Fev 2009 12:57
por DLZ
Tche...
Por um acaso a as variáveis que estão no GET(pai, mae, etc..) não tem o mesmo nome do campo que está arquivo DBF ??
Se tiverem o mesmo nome, a gravação ocorre no momento em que vc efetuar o READ !!
O ideal é sempre ter uma variável com o nome diferente do campo e gravar com REPLACE CAMPO WITH VARIAVEL.

Re: Poblema com atualização de dados

Enviado: 27 Fev 2009 13:17
por sygecom
Bah, eu nem tinha me tocado nisso mesmo !! e esta bem com cara de ser isso mesmo !!!!

Re: Poblema com atualização de dados

Enviado: 27 Fev 2009 13:42
por Netavin
amigos, de fato estou editando as próprias variáveis do DBF.
Então devo utilizar variáveis de memória ... certo ?
É que em outras ocasiões, aprendi aqui mesmo no Fórum que poderia editá-las diretamente.

Obrigado!
[]´s
Netavin

Re: Poblema com atualização de dados

Enviado: 27 Fev 2009 14:31
por sygecom
Netavin escreveu: Então devo utilizar variáveis de memória ... certo ?
Isso mesmo.
Netavin escreveu: É que em outras ocasiões, aprendi aqui mesmo no Fórum que poderia editá-las diretamente.
É que depende da ocasião, nesse seu exemplo concerteza deve utilizar variavés de memoria, alias eu pelo menos nunca uso direto no DBF, por mais simples que seja a rotina, sempre uso variavés de memoria, agora cada um cada um.

Re: Poblema com atualização de dados

Enviado: 27 Fev 2009 14:48
por Netavin
ok então !!

Muito obrigado pela atenção com que sempre me dispensaram..

[]´s

Netavin