Clipper On Line • Ver Tópico - Deletar Banco de Dados velhos
Página 1 de 2

Deletar Banco de Dados velhos

MensagemEnviado: 03 Mai 2011 11:44
por MENINA LEIGA
Olá bom dia,

Eu tenho um programa Clipper instalado com banco de dados antigos, gostaria de aproveita-lo deletar todos os banco de dados e fazer um novo, porem sou completamente leiga no assunto, voces poderiam me ajudar?

Agradeço imensamente.

Um abraço

Re: DELETAR BANCO DE DADOS VELHOS

MensagemEnviado: 03 Mai 2011 11:59
por alxsts
Olá Menina!

Seja bem-vinda ao fórum!

Se a aplicação foi feita em Clipper, imagino que você tenha, em alguma pasta, um arquivo executável (extensão .EXE), várias tabelas (extensão .DBF) e arquivos de índice (.NTX ou .CDX). Pode ter também alguns .DBT ou .FPT e .MEM. Informe o que você tem.

Se quer "zerar" esta base de dados, precisará ter um programa para fazer isto. Tradicionalmente, nas instalações do Clipper, existe o programa DBU.Exe. Verifique se você tem este programa em sua máquina ou em algum outro lugar.

Antes de fazer a limpeza, seria conveniente saber o que pode e o que não pode ser excluido. Nem precisa dizer para fazer backup antes.

Conte conosco.

Re: DELETAR BANCO DE DADOS VELHOS

MensagemEnviado: 03 Mai 2011 13:01
por anacatacombs
Concordo com o alxsts ..
O mais correto, é entrar em contato com quem desenvolveu o sistema, e verificar quais arquivos podem ser apagados. Corre-se o risco de perder alguma configuração do sistema, ou algo que vá além da nossa visão como usuário.

[]'s

Ana

Re: Deletar Banco de Dados velhos

MensagemEnviado: 03 Mai 2011 14:58
por MENINA LEIGA
Ola boa tarde,

As extensões que eu tenho são .prg, .dbf, .nt1, .ntx, .exe, .prn

Não sei se ajuda.
Um abraço e obrigada

Re: Deletar Banco de Dados velhos

MensagemEnviado: 03 Mai 2011 15:15
por MENINA LEIGA
Esqueci de falar que já fiz o downlod do DBU.Exe porem não sei como fazer

Re: Deletar Banco de Dados velhos

MensagemEnviado: 03 Mai 2011 17:06
por anacatacombs
Sinceramente não te aconselho a fazer isso.. mas..

Coloque o DBU na mesma pasta dos DBFS.
Abra o prompt do MS-DOS e vá para a pasta aonde estão os DBFS e o DBU
Digite: DBU <Arquivo.dbf>
Aperte F6, e selecione a opção ZAP ou Limpar.
Precisa entrar em todos os DBFS e fazer isso.
Cuidado para não apagar o que não se refere a movimentação.

Outra opção é deletar todos os arquivos DBF, mas não é garantia nenhuma que o seu sistema irá cria-los novamente, depende de como o programador estruturou a abertura de arquivos, e principalmente, se tiver gerenciamento de senhas, pode ser que as senhas vão pro espaço junto com os demais arquivos.

Apenas lembrando, que apenas fornecemos dicas e tentamos ajudar nossos colegas da melhor forma. As possíveis consequencias não são de nossa responsabilidade. Caso dê algo errado no seu sistema, e você não consiga entrar no sistema, e nem utilizar todas as funções, por favor, não culpe nenhum colega do fórum que tentou te ajudar.

Ainda sim, acho viável entrar em contato com o programador (se vc tiver contato, claro) para não ter surpresas desagradáveis.

[]'s

Ana

Re: Deletar Banco de Dados velhos

MensagemEnviado: 03 Mai 2011 18:22
por alxsts
Olá!

Outro aspecto a levar em conta é a manutenção dos índices das tabelas. Será que o sistema tem uma rotina de reindexação?

Creio que na impossibilidade de um contato com o desenvolvedor, como sugerido pela Ana, o fundamental é fazer um backup dos dados. Feito isto, pode-se tentar limpar as tabelas. Depois, se faltar dados de alguma tabela é só restaurar a mesma do backup.

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

Re: Deletar Banco de Dados velhos

MensagemEnviado: 04 Mai 2011 00:45
por rochinha
Amiguinhos,

Talvez o sistema possua algum aplicativo para limpeza, caso não será necessário analisar quais arquivos podem ser deletados, como dito anteriormente.

Em vários sistemas os arquivos ou tabelas são imprescindiveis para completar campos e sanear os dados.

Se voce deseja aproveitar o sistema para outra finalidade, talvez o caso seja limpar os dados de clientes, fornecedores, vendedores, estoque, vendas e contas e deixar o resto pois podem ser tabelas complementares ao sistema.

Eu uso o DBFViewer2000 para fazer a limpeza ou manutenção de dados, mas voce pode fazer uso também do DBU encontrável na sessão downloads de www.pctoledo.com.br.

Re: Deletar Banco de Dados velhos

MensagemEnviado: 04 Mai 2011 10:31
por MENINA LEIGA
Rochinha bom dia,

Vc.disse que usa DBF Viewer, mas como faço para deletar os arquivos que falou?

Porque são esses mesmos que preciso deletar, clientes, fornecedores, estoque, movimento estoque, mas não sei aonde entrar eu já tenho
instalado na propria pasta do programa o dbu.exe, mas não sei como usar.

Agradeço sua gentileza

Re: Deletar Banco de Dados velhos

MensagemEnviado: 04 Mai 2011 14:00
por rochinha
Amiguinha,

Após abrir o aplicativo escolha FILE, OPEN, digite a pasta e nome do arquivo, exemplo, C:\SISTEMA\CLIENTES.DBF

No menu EDIT escolha ZAP e confirme

Este comando elimina somente os dados mas mantém a estrutura intacta.

Se optar por usar o DBU o comando é o mesmo, aliás ZAP, PACK, etc são comandos comuns em aplicativos xBase.

Voalaaáh!

Re: Deletar Banco de Dados velhos

MensagemEnviado: 04 Mai 2011 16:16
por MENINA LEIGA
Vivaaaaaaaaaaaa, X:)

Rochinha consegui.

Você é um amor, era isso mesmo que eu queria, deu certinho.

Obrigaduuuuuuuuuuuuuu.

Tenha uma excelente tarde e até a proxima.

Um abraço

Re: Deletar Banco de Dados velhos

MensagemEnviado: 04 Mai 2011 18:41
por rochinha
Amiguinha,

Agradeço em nome de todos.

Re: Deletar Banco de Dados velhos

MensagemEnviado: 05 Mai 2011 12:33
por MENINA LEIGA
Rochinha bom dia,

Ontem eu havia falado para voce que deu tudo certinho, pois bem o delete deu tudo certo, porem
hoje fui fazer os lançamentos e quando chego no movimento (entrada da nota), ela entra normal
porem quando vou fazer a outra ele pega todos os dados da anterior, se eu cancelo ele cancela tudo.

O que devo fazer?

Agradeço sua ajuda

Re: Deletar Banco de Dados velhos

MensagemEnviado: 05 Mai 2011 15:09
por anacatacombs
Delete os arquivos .NTX e verifique se o problema persiste.
Caso não dê certo, só entrando em contato com quem desenvolveu mesmo ..
Outra solução é aprender a programar em clipper e verificar os fontes.

Deletar Banco de Dados velhos

MensagemEnviado: 06 Mai 2011 11:11
por MENINA LEIGA
Olá bom dia,

O problema foi resolvido com relação as entradas de notas fiscais, estou tendo dificuldade agora no cadastro de clientes.

Quando vai incluir algum cliente começa do ultimo numero utilizado, eu já deletei o cadcli, existe algum outro arquivo que tenho que deletar?

Já deletei todos os ntx.

Obrigada e desculpe pelo incomodo.

Deletar Banco de Dados velhos

MensagemEnviado: 06 Mai 2011 11:43
por alxsts
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

MensagemEnviado: 06 Mai 2011 11:53
por rochinha
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

MensagemEnviado: 06 Mai 2011 16:30
por Pablo César
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

MensagemEnviado: 07 Mai 2011 09:23
por anacatacombs
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

MensagemEnviado: 08 Mai 2011 08:40
por MENINA LEIGA
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

MensagemEnviado: 08 Mai 2011 10:11
por Pablo César
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

MensagemEnviado: 08 Mai 2011 19:07
por asimoes
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

MensagemEnviado: 26 Out 2018 16:33
por Emanuel
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

MensagemEnviado: 27 Out 2018 02:21
por alxsts
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

MensagemEnviado: 27 Out 2018 10:20
por JoséQuintas
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

MensagemEnviado: 29 Out 2018 11:48
por Emanuel
bom dia galera!!!

sr.AlxSts... eu fiz uma coisa bem simples, porém muito funcional rsrsrss....
//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

MensagemEnviado: 29 Out 2018 12:11
por JoséQuintas
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:

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

#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

MensagemEnviado: 29 Out 2018 18:14
por alxsts
Olá!

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

Deletar Banco de Dados velhos

MensagemEnviado: 29 Out 2018 19:12
por JoséQuintas
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

MensagemEnviado: 31 Out 2018 16:43
por Emanuel
ola pessoal
boa tarde

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

vou postar aqui o fonte:


//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