Clipper On Line • Ver Tópico - Gravação automatica de 1 unico campo ( #command )

Gravação automatica de 1 unico campo ( #command )

Projeto Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

 

Gravação automatica de 1 unico campo ( #command )

Mensagempor scooby » 03 Jun 2019 10:13

Bom Dia Senhores

Sou novo aqui no fórum, e já de antemão, gostaria de agradecer a ajuda.

Tenho a seguinte situação:
Em todas as tabelas do sistema, existe um campo chamado datlan, esse campo é responsável por gravar a alteração de qualquer dado. Porém nem todo mundo lembra de colocar esse campo e as vezes o conteúdo deste campo não é atualizado corretamente.
Eu verifiquei que dentro do arquivo std.ch é que controla o comando replace.
Eu gostaria de saber como eu posso alterar o comando esse comando para que possa efetuar essa gravação, uma vez que o comando é assim.. não sei nem por onde dar inicio...
#command REPLACE [ <f1> WITH <x1> [, <fN> WITH <xN>] ] ;
[FOR <for>] [WHILE <while>] [NEXT <next>] ;
[RECORD <rec>] [<rest:REST>] [ALL] => ;
DBEval( {|| _FIELD-><f1> := <x1> [, _FIELD-><fN> := <xN>]}, ;
<{for}>, <{while}>, <next>, <rec>, <.rest.> )

Att

Márcio Pinheiro
scooby
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 14
Data de registro: 03 Jun 2019 09:41
Cidade/Estado: Belo Horizonte/Minas Gerais
Curtiu: 1 vez
Mens.Curtidas: 0 vez

Gravação automatica de 1 unico campo ( #command )

Mensagempor asimoes » 03 Jun 2019 13:04

O que você quer é uma trigger, acho que isso não rola no replace
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Gravação automatica de 1 unico campo ( #command )

Mensagempor scooby » 03 Jun 2019 13:47

Boa Tarde asimoes

Então, seria a mesma funcionalidade de um trigger. Existe algum outro modo conhecido de se fazer isso.
Só para saber se dou prosseguimento nessa implementação ou simplesmente abandono essa questão.
scooby
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 14
Data de registro: 03 Jun 2019 09:41
Cidade/Estado: Belo Horizonte/Minas Gerais
Curtiu: 1 vez
Mens.Curtidas: 0 vez

Gravação automatica de 1 unico campo ( #command )

Mensagempor JoséQuintas » 03 Jun 2019 14:07

scooby escreveu:Então, seria a mesma funcionalidade de um trigger. Existe algum outro modo conhecido de se fazer isso.


Bom... pra gravar é comum bloquear/desbloquear registro...
E a não ser que goste de ficar repetindo vários comandos, deve ter uma função pra isso.
Coloque numa delas.

RecLock()
REPLACE field->Nome WITH cNome
RecUnlock()
RETURN

FUNCTION RecLock() // ou RecUnlock()

   ...
   REPLACE field->DatLan WITH Date()
   ...

   RETURN NIL

José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Gravação automatica de 1 unico campo ( #command )

Mensagempor JoséQuintas » 03 Jun 2019 14:18

scooby escreveu:Porém nem todo mundo lembra de colocar esse campo e as vezes o conteúdo deste campo não é atualizado corretamente.


Isto ficou confuso.
É o usuário que digita?
Ou são programadores que esquecem disso?

Se é usuário... porque ele teria que digitar?
Se é programador... vão esquecer de outras coisas também...
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Gravação automatica de 1 unico campo ( #command )

Mensagempor scooby » 03 Jun 2019 15:01

JoséQuintas escreveu:Isto ficou confuso.
É o usuário que digita?
Ou são programadores que esquecem disso?


Sim são os programadores... então devido a várias ocorrências, essa medida está sendo tomada, para evitar que mesmo que esqueçam o campo terá atualização.
JoséQuintas escreveu:Bom... pra gravar é comum bloquear/desbloquear registro...
E a não ser que goste de ficar repetindo vários comandos, deve ter uma função pra isso.
Coloque numa delas.


Exatamente, a ideia era alterar a #command replace, porque fazendo isso, resolveria o problema num local só. E efetuando como o senhor havia falado, caso eu trave um registro para pesquisa por exemplo o sistema irá efetuar um replace.
scooby
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 14
Data de registro: 03 Jun 2019 09:41
Cidade/Estado: Belo Horizonte/Minas Gerais
Curtiu: 1 vez
Mens.Curtidas: 0 vez

Gravação automatica de 1 unico campo ( #command )

Mensagempor JoséQuintas » 03 Jun 2019 15:21

scooby escreveu:caso eu trave um registro para pesquisa por exemplo o sistema irá efetuar um replace.


Travar na pesquisa?

Já vi programador colocar isso em relatório nem sei pra que.
DO WHILE ! Eof()
   RLock()
   @ l, c SAY ""
   SKIP
ENDDO
UNLOCK
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Gravação automatica de 1 unico campo ( #command )

Mensagempor JoséQuintas » 03 Jun 2019 15:25

Resolver um problema alterando o funcionamento do Harbour.... isso é querer mais problemas.
Além do mais, isso é quebra-galho, muito fraco pra registrar alguma coisa.
Não vão querer saber apenas quando foi alterado, mas também QUEM foi, e a que horas, ou até por qual módulo, ou até saber o que tinha antes.
E não apenas a última alteração, mas todas as alterações, senão o último vai levar a culpa de algum anterior.
Com certeza o registro não é o melhor lugar pra isso.

E o que é pior....
O programador não faz o trabalho dele...
Vai incluir coisa que pode dar problema.... e arriscar todo funcionando do aplicativo por causa disso.
Sei lá... precisa rever isso...
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Gravação automatica de 1 unico campo ( #command )

Mensagempor asimoes » 03 Jun 2019 18:55

scooby.

Entendo o seu problema, aqui utilizamos biblioteca corporativa, pode haver erro da aplicação ou da biblioteca, para validar esse campo, você deveria
ter um validador de fonte pra saber se o programador X cometeu erro, o ideal é subir esses fontes para o SVN ou GIT para ter maior controle das modificações nos fontes.

Nós temos aqui 3 ambientes, Desenvolvimento, Homologação e Produção, toda modificação de sistema tem que ir para Homologação para o usuário testar, quando o usuário aprova a rotina, o fonte é compilado em produção.

Perguntas:

Quantos programadores fazem manutenção no sistema ?
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Gravação automatica de 1 unico campo ( #command )

Mensagempor JoséQuintas » 03 Jun 2019 19:23

Outra opção é criar uma classe.
Vai fazer um trabalho melhor, mais detalhado, mas vai continuar dependendo dos programadores usarem.
Com a vantagem de que não vai precisar passar o fonte das classes pra eles, o que evita extravio de fonte.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Gravação automatica de 1 unico campo ( #command )

Mensagempor scooby » 05 Jun 2019 09:20

Bom Dia

Muito obrigado pelas informações passadas. Estou vendo com a parte gerencial como devemos tomar providência nesse quesito.

asimoes escreveu:Entendo o seu problema, aqui utilizamos biblioteca corporativa, pode haver erro da aplicação ou da biblioteca, para validar esse campo, você deveria
ter um validador de fonte pra saber se o programador X cometeu erro, o ideal é subir esses fontes para o SVN ou GIT para ter maior controle das modificações nos fontes.


Pois é, já utilizamos SVN, essa implementação também entraria para um processo de exportação entre base de dados e esse campo tem função primordial, pois os dados só serão exportados caso esse conteúdo tenha sido atualizado.

JoséQuintas escreveu:Outra opção é criar uma classe.
Vai fazer um trabalho melhor, mais detalhado, mas vai continuar dependendo dos programadores usarem.
Com a vantagem de que não vai precisar passar o fonte das classes pra eles, o que evita extravio de fonte.


Estou pensando em fazer exatamente isso. Agora é começar a codificar.

Muito obrigado pela ajuda.

Márcio Pinheiro
scooby
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 14
Data de registro: 03 Jun 2019 09:41
Cidade/Estado: Belo Horizonte/Minas Gerais
Curtiu: 1 vez
Mens.Curtidas: 0 vez

Gravação automatica de 1 unico campo ( #command )

Mensagempor JoséQuintas » 05 Jun 2019 18:54

scooby escreveu:Estou pensando em fazer exatamente isso. Agora é começar a codificar.


É tanta coisa assim que precisa de programador?
Ou são coisas repetitivas, que ao invés de você automatizar seu serviço, está colocando ajudantes que só pioram a coisa?

Lembra daquela história: seja seu próprio chefe/dono?

em caso de programação digo o seguinte: seja seu próprio cliente.

Nosso serviço não é reduzir/facilitar o trabalho do cliente?
Então... seja seu cliente, e reduza/facilite o seu trabalho.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Gravação automatica de 1 unico campo ( #command )

Mensagempor asimoes » 05 Jun 2019 20:03

Quintas,

Aqui somos obrigados colocar um histórico das modificações nos fontes, que inclui autor da modificação, data e motivo da modificação, ai fica fácil bater no maluco.
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Gravação automatica de 1 unico campo ( #command )

Mensagempor JoséQuintas » 05 Jun 2019 21:06

asimoes escreveu:Aqui somos obrigados colocar um histórico das modificações nos fontes, que inclui autor da modificação, data e motivo da modificação, ai fica fácil bater no maluco.


usar o GIT pra centralizar seria interessante, elimina isso dos fontes.

Só lembrando: O GIT faz tudo.

Opções:

1. controlar na máquina
2. controlar num servidor próprio, ou outra máquina da rede
3. controlar em alguma máquina nas nuvens
4. usar Bitbucket ou GitHub pra cópia nas nuvens, o que seria mais interessante, porque cada usuário poderia ter uma conta criada/apagada do projeto

Só não sei como fazer isso localmente com várias contas, sem que o usuário possa destruir o central
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18007
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Gravação automatica de 1 unico campo ( #command )

Mensagempor asimoes » 06 Jun 2019 09:46

JoséQuintas escreveu:usar o GIT pra centralizar seria interessante, elimina isso dos fontes.

Isso é um plus nos fontes, usamos o SVN por usuário, atualizando no mesmo respositório, isso é só pra ter certeza de quem ta fazendo M**** mesmo.
â–ºHarbour 3.x | Minigui xx-x | HwGuiâ—„
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Avatar de usuário

asimoes
Colaborador

Colaborador
 
Mensagens: 4919
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 341 vezes
Mens.Curtidas: 258 vezes

Próximo



Retornar para Harbour

Quem está online

Usuários vendo este fórum: Google [Bot] e 10 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro