Página 2 de 2
Deletar Banco de Dados velhos
Enviado: 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
Enviado: 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
Enviado: 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
Enviado: 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
Enviado: 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
Enviado: 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
Enviado: 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
Enviado: 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
Enviado: 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
Enviado: 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
Enviado: 29 Out 2018 11:48
por Emanuel
bom dia galera!!!
sr.AlxSts... eu fiz uma coisa bem simples, porém muito funcional rsrsrss....
Código: Selecionar todos
//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
Enviado: 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:
Código: Selecionar todos
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: Selecionar todos
#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
Enviado: 29 Out 2018 18:14
por alxsts
Olá!
Este tipo de operação requer que os arquivos sejam abertos em modo exclusivo:
Deletar Banco de Dados velhos
Enviado: 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
Enviado: 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:
Código: Selecionar todos
//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