Clipper On Line • Ver Tópico - Deletar Banco de Dados velhos
Mudar para estilo Clássico
Discussão sobre Banco de Dados e RDDs para Clipper/[x]Harbour.
Postar uma resposta

Deletar Banco de Dados velhos

06 Mai 2011 11:43

Olá!

Certamente o programa armazena a numeração de clientes em algum campo de tabela.

Se desejar reiniciar a numeração, você terá que identificar esta tabela/campo e, através do DBU, zerá-lo.

Deletar Banco de Dados velhos

06 Mai 2011 11:53

Amiguinha,

Neste caso com certeza existe um arquivo que guarda os numeros sequenciais.

analise um a um e veja se encontra alguma referencia.

Deletar Banco de Dados velhos

06 Mai 2011 16:30

Para pessoas aleias à programação, mesmo que com boa intenção, as orientações de cómo limpar o banco de dados caem num medonho procedimento... quando ví este tópico e percebí a pouca ou nula experiência em programação por parte da autora do tópico, logo pensei isso pode dar em consequências desagradáveis. Não adianta pessoal dar o comando e rezar para que dê certo. Essa questão de limpar toda a base de dados deve ser tomada com certo critério. Aconselho, como muitos ja o fizeram, em fazer uma cópia antes de tudo. E começar dbf por dbf a limpeza, começando com aqueles que são de tamanho grande, com muito registros. Claro que antes de começar, deve-se observar se o sistema possui alguma rotina de indexação, caso contrário deverá-se-ei anotar todas as chaves que cada arquivo de índice possui. Na minha opinião, eu não apagaria simplesmente. Eu copiaria os registros com data em que desejo remover. Nunca se sabe se esses registros poderão ser úteis em alguma circunstância futura. De preferência armazenaria por ano. Mas tudo isso devria ser avaliado e analisado com muita calma e conhecimento. Este tipo de procedimento e ainda que com pouca ou nehuma experiência em programação pode vir a dar maus resultados. Desculpe "MENINA LEIGA" não é querer desmercer ninguém, mas esse trabalho requer um profissional. Espero que você entenda e perdoe-nos se algo sair errado pois assim por distância sem ver a estrutura e função que cumprem os dados, fica dificil de avaliar. Reitero, recomece volte o sistema no que estava, mantenha uma cópia intacta e inicie DBF por DBF, veja se apagando, reindexando e incluindo dados o seu sistema funciona normalmente. Depois que você chegou à limpeza da maioria dos DBFs até que apresente alguma anomalia no funcionamento de inclusão/consulta e impressão, daí sim libere o sistema normalmente. Mas primeiro, conheça o sistema, senão irá dar dores de cabeça.

Deletar Banco de Dados velhos

07 Mai 2011 09:23

Concordo com 100% com que o Pablo disse.
Como venho falando desde o começo: Entre em contato com o programador... Caso ele tenha abandonado tudo para criar avestruz, veja se outro programador em clipper pode te ajudar, visto que você tem os fontes do sistema.

Infelizmente não tem como adivinhar como sistema foi estruturado, e quais consequencias uma limpeza nos dbfs podem ocasionar...

Deletar Banco de Dados velhos

08 Mai 2011 08:40

Olá meus queridos amigos (as).

Quero agradecer a delicadeza de cada um e dizer que o problema já está resolvido e funcionando direitinho.

Sou leiga mas não tanto, deu problemas no começo mas tudo foi resolvido, estou com o programa funcionando certinho e imprimindo tambem.

Um abraço á todos(as) e um Feliz Dia das Mães.

Deletar Banco de Dados velhos

08 Mai 2011 10:11

Quê bom que resolveu ! Ficamos todos satisfeitos em poder ajudar e mais ainda saber que você se deu bem nessa. Nós também agradecemos a sua comprensão, pois deste lado não dá para saber o grau de conhecimento. Seria bom que vocÊ adicionasse uma rotina para elaboração de "arquivo morto" assim não terão o mesmo inconveniente no futuro então.

Deletar Banco de Dados velhos

08 Mai 2011 19:07

Menina Leiga

Seu nick deveria ser "Menina com alguma experiência"

É brincadeirinha.. mas precisando é só perguntar!

Feliz dia das Mães.

Deletar Banco de Dados velhos

26 Out 2018 16:33

ola galera...
revivendo esse post rsrs..

eu uso linux (open suse), eu estou com esse mesmo problema, queria saber se é muito complexo a criação de um programa como esse que o sr.alxsts comentou.

Poderia até ser criado um utilitário que abrisse cada tabela e limpasse os dados.


pessoal se você poderem me ajudar dando dicas de estudo ou coisa do tipo eu agradeço muito :)Pos

Deletar Banco de Dados velhos

27 Out 2018 02:21

Olá!
Emanuel escreveu:queria saber se é muito complexo a criação de um programa como esse

Emanuel:
não, não é difícil.

Nós, que gostamos de programação de computadores, somos frequentemente levados pelo ímpeto da paixão pela programação, ou pela ansiedade, ou por pressão de prazos curtos, a abrirmos nosso editor de código e dispararmos um arsenal de comandos, sem termos um plano definido do que precisamos codificar para atingirmos nosso objetivo. Escrevo isto por ter lido em outro tópico de sua autoria, onde você diz ser estudante. Muitos programadores não tiveram esta orientação no início de suas carreiras e só aprenderam com a experiência, após muito tempo perdido com retrabalho.

No caso deste programa citado, é, a grosso modo, como escrevi anteriormente: abrir cada tabela e limpar os dados. A grosso modo... mas e a questão segurança dos dados? É muito importante e sempre tem que ser levada em conta. Então, ao invés de limpar cada tabela, é melhor copiar apenas as estruturas para outro local, sem os dados.

Vamos planejar:
- criar uma interface com o usuário (tela)
- solicitar ao usuário que informe o local onde estão as tabelas
- solicitar ao usuário que informe o local onde deverão ser gravadas as estruturas das novas tabelas
- carregar para a memória o nome de todas as tabelas encontradas no local de origem informado
- varrer a lista de tabelas e para cada uma delas copiar a estrutura para o diretório destino
- manter o usuário informado do andamento da operação

Tranquilo? A princípio é isto. Existem alguns detalhes adicionais que poderão ser tratados no decorrer do desenvolvimento.

Tenho certeza que em breve postará sua solução.

Mãos à obra!

Deletar Banco de Dados velhos

27 Out 2018 10:20

Emanuel escreveu:queria saber se é muito complexo a criação de um programa como esse que o sr.alxsts comentou.


É o mesmo que perguntar se é difícil quebrar uma parede.
Seria só usar marreta e quebrar tudo mas...
E se tiver encanamento, ou fiação elétrica passando pela parede?
E se tiver parte da construção apoiada encima dessa parede?
O simples ato de derrubar uma parede poderia precisar de pedreiro, encanador e eletricista.
Parece simples, mas nem sempre é.

Deletar Banco de Dados velhos

29 Out 2018 11:48

bom dia galera!!!

sr.AlxSts... eu fiz uma coisa bem simples, porém muito funcional rsrsrss....
Código:
//apaga dbf
//*********
REQUEST DBFCDX
procedure main()

    USE dias ALIAS welcome
    USE cadastro  NEW ALIAS nomes
    USE cadastro3 NEW ALIAS cad
    USE thevoice  NEW ALIAS well

    SELECT 1
    IF NETERR()
       ALERT("ARQUIVO EM USO")
    ELSE
       DELETE
       zap
    ENDIF
    //browse()

    SELECT 2
    IF NETERR()
       ALERT("ARQUIVO EM USO")
    ELSE
       DELETE
       zap
    ENDIF
    //browse()

    SELECT 3
    IF NETERR)
       ALERT("ARQUIVO EM USO")
    ELSE
       DELETE
       zap
    ENDIF
    //browse()

    SELECT 4
    IF NETERR()
       ALERT("ARQUIVO EM USO")
    ELSE
       DELETE
       zap
    ENDIF
    //browse()
return



fiz tudo diretamente no codigo, pode parecer ate ignorancia da minha parte fazer isso rsrsrs, mas vou completar o codigo assim como a sr. sugerio:
alxsts escreveu:Vamos planejar:
- criar uma interface com o usuário (tela)
- solicitar ao usuário que informe o local onde estão as tabelas
- solicitar ao usuário que informe o local onde deverão ser gravadas as estruturas das novas tabelas
- carregar para a memória o nome de todas as tabelas encontradas no local de origem informado
- varrer a lista de tabelas e para cada uma delas copiar a estrutura para o diretório destino
- manter o usuário informado do andamento da operação


so que como é so um codigo que quero criar porque gostei da ideia rsrs... em vez de pedir o usuario para especificar o local, quero que o programa leia todos os .dbf's da pasta onde esta sendo execultado e apague, so que vou deixar a criterio do usuario informar quais nn deverão ser apagadas.

sr. Quintas...
se eu tiver em mãos a planta da casa e informações necessarias, certamente irei saber as partes que oferecem riscos na hora de quebrar a parede.
JoséQuintas escreveu:É o mesmo que perguntar se é difícil quebrar uma parede.
Seria só usar marreta e quebrar tudo mas...
E se tiver encanamento, ou fiação elétrica passando pela parede?
E se tiver parte da construção apoiada encima dessa parede?
O simples ato de derrubar uma parede poderia precisar de pedreiro, encanador e eletricista.
Parece simples, mas nem sempre é.


sou programador junior, tudo o que faço, por enquanto, é so para testar com meus materiais mesmo. por isso que eu faço essas doidices kkkkkk

ao sr. Quintas e a todos os outros membros deste forum, muito obg por sempre estarem presente nos meus posts. cada comentario de voces é de muito valor para mim. (L)

Deletar Banco de Dados velhos

29 Out 2018 12:11

DELETE
ZAP

DELETE apaga um registro, ZAP apaga o arquivo inteiro.
Se vai apagar o arquivo inteiro, porque apagar um registro?
E o índice?

Se é tudo igual, sugestão 1, baseada no seu fonte:

Código:
FOR EACH cFile IN { "DIAS", "CADASTRO", "CADASTRO3", "THEVOICE" }
  //--- cada arquivo inicio
   USE ( cFile ) EXCLUSIVE
   IF NetErr()
      Alert( "Arquivo em uso" )
   ELSE
      ZAP
   ENDIF
   USE
   //--- cada arquivo fim
NEXT


Sugestão 2, diretório todo

Código:
#include "directry.ch"
FOR EACH aFile IN Directory( "*.DBF" )
   cFile := aFile[ F_NAME ]
   // copiar do outro exemplo ref. cada arquivo inicio/fim
NEXT


Isso é igual o seu, sem confirmação nenhuma, sem se preocupar com índices, etc.

Deletar Banco de Dados velhos

29 Out 2018 18:14

Olá!

Este tipo de operação requer que os arquivos sejam abertos em modo exclusivo:
Código:
USE dias EXCLUSIVE NEW ALIAS welcome

Deletar Banco de Dados velhos

29 Out 2018 19:12

Bem lembrado.
Coloquei no meu exemplo mas esqueci de chamar atenção pra isso.
ZAP só funciona em arquivo aberto com EXCLUSIVE, ninguém mais usando.
E como vai fazer um de cada vez, só abrir um de cada vez, vai fazer os que conseguir.

Deletar Banco de Dados velhos

31 Out 2018 16:43

ola pessoal
boa tarde

eu usei o codigo que vc enviou sr: Quintas.
deu super certo :))

vou postar aqui o fonte:

Código:

//apaga dbf
//*********

#include "directry.ch"
REQUEST DBFCDX
procedure main()
   
    local aFile
    local cFile

    for each aFile IN Directory( "home/music/*.dbf" )
        cFile := aFile[ F_NAME ]
        USE ( cFile ) EXCLUSIVE
        if NetErr()
            alert( "Arquivo em uso" )
        else
            if ( cFile == "dias.dbf" .or. cFile == "cadastro.dbf" .or. cFile == "cadastro3.dbf" )
                alert("as tres tabelas não seram apagadas!")
            else
                zap
            endif
        endif
    next

return

Postar uma resposta