Gravação automatica de 1 unico campo ( #command )
Moderador: Moderadores
-
scooby
- Usuário Nível 1

- Mensagens: 14
- Registrado em: 03 Jun 2019 09:41
- Localização: Belo Horizonte/Minas Gerais
Gravação automatica de 1 unico campo ( #command )
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
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
Gravação automatica de 1 unico campo ( #command )
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)
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)
-
scooby
- Usuário Nível 1

- Mensagens: 14
- Registrado em: 03 Jun 2019 09:41
- Localização: Belo Horizonte/Minas Gerais
Gravação automatica de 1 unico campo ( #command )
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.
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.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Gravação automatica de 1 unico campo ( #command )
Bom... pra gravar é comum bloquear/desbloquear registro...scooby escreveu:Então, seria a mesma funcionalidade de um trigger. Existe algum outro modo conhecido de se fazer isso.
E a não ser que goste de ficar repetindo vários comandos, deve ter uma função pra isso.
Coloque numa delas.
Código: Selecionar todos
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 mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Gravação automatica de 1 unico campo ( #command )
Isto ficou confuso.scooby escreveu:Porém nem todo mundo lembra de colocar esse campo e as vezes o conteúdo deste campo não é atualizado corretamente.
É 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 mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
-
scooby
- Usuário Nível 1

- Mensagens: 14
- Registrado em: 03 Jun 2019 09:41
- Localização: Belo Horizonte/Minas Gerais
Gravação automatica de 1 unico campo ( #command )
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:Isto ficou confuso.
É o usuário que digita?
Ou são programadores que esquecem disso?
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.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.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Gravação automatica de 1 unico campo ( #command )
Travar na pesquisa?scooby escreveu:caso eu trave um registro para pesquisa por exemplo o sistema irá efetuar um replace.
Já vi programador colocar isso em relatório nem sei pra que.
Código: Selecionar todos
DO WHILE ! Eof()
RLock()
@ l, c SAY ""
SKIP
ENDDO
UNLOCK
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Gravação automatica de 1 unico campo ( #command )
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...
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 mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Gravação automatica de 1 unico campo ( #command )
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 ?
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)
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)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Gravação automatica de 1 unico campo ( #command )
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.
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 mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
-
scooby
- Usuário Nível 1

- Mensagens: 14
- Registrado em: 03 Jun 2019 09:41
- Localização: Belo Horizonte/Minas Gerais
Gravação automatica de 1 unico campo ( #command )
Bom Dia
Muito obrigado pelas informações passadas. Estou vendo com a parte gerencial como devemos tomar providência nesse quesito.
Muito obrigado pela ajuda.
Márcio Pinheiro
Muito obrigado pelas informações passadas. Estou vendo com a parte gerencial como devemos tomar providência nesse quesito.
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.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.
Estou pensando em fazer exatamente isso. Agora é começar a codificar.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.
Muito obrigado pela ajuda.
Márcio Pinheiro
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Gravação automatica de 1 unico campo ( #command )
É tanta coisa assim que precisa de programador?scooby escreveu:Estou pensando em fazer exatamente isso. Agora é começar a codificar.
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 mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Gravação automatica de 1 unico campo ( #command )
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.
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)
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)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Gravação automatica de 1 unico campo ( #command )
usar o GIT pra centralizar seria interessante, elimina isso dos fontes.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.
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 mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Gravação automatica de 1 unico campo ( #command )
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.JoséQuintas escreveu:usar o GIT pra centralizar seria interessante, elimina isso dos fontes.
►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)
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)
