Clipper On Line • Ver Tópico - Deletar Banco de Dados velhos

Deletar Banco de Dados velhos

Discussão sobre Banco de Dados e RDDs para Clipper/[x]Harbour.

Moderador: Moderadores

 

Deletar Banco de Dados velhos

Mensagempor alxsts » 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.
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2185
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 13 vezes
Mens.Curtidas: 146 vezes

Deletar Banco de Dados velhos

Mensagempor rochinha » 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.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para fivolution@hotmail.com. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar de usuário

rochinha
Membro Master

Membro Master
 
Mensagens: 4187
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 482 vezes
Mens.Curtidas: 181 vezes

Deletar Banco de Dados velhos

Mensagempor Pablo César » 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.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5539
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 150 vezes

Deletar Banco de Dados velhos

Mensagempor anacatacombs » 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...
anacatacombs
Membro Master

Membro Master
 
Mensagens: 481
Data de registro: 12 Jul 2005 16:53
Cidade/Estado: Cianorte-Paraná
Curtiu: 2 vezes
Mens.Curtidas: 2 vezes

Deletar Banco de Dados velhos

Mensagempor MENINA LEIGA » 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.
MENINA LEIGA
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 8
Data de registro: 29 Abr 2011 10:33
Cidade/Estado: Itatiba/SP
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Deletar Banco de Dados velhos

Mensagempor Pablo César » 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.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5539
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 150 vezes

Deletar Banco de Dados velhos

Mensagempor asimoes » 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.
►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: 4104
Data de registro: 26 Abr 2007 16:48
Cidade/Estado: RIO DE JANEIRO-RJ
Curtiu: 285 vezes
Mens.Curtidas: 203 vezes

Deletar Banco de Dados velhos

Mensagempor Emanuel » 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
Emanuel
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 24
Data de registro: 20 Set 2018 14:39
Cidade/Estado: parnaiba-pi
Curtiu: 12 vezes
Mens.Curtidas: 0 vez

Deletar Banco de Dados velhos

Mensagempor alxsts » 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!
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2185
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 13 vezes
Mens.Curtidas: 146 vezes

Deletar Banco de Dados velhos

Mensagempor JoséQuintas » 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 é.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 10835
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 7 vezes
Mens.Curtidas: 695 vezes

Deletar Banco de Dados velhos

Mensagempor Emanuel » 29 Out 2018 11:48

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)
Emanuel
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 24
Data de registro: 20 Set 2018 14:39
Cidade/Estado: parnaiba-pi
Curtiu: 12 vezes
Mens.Curtidas: 0 vez

Deletar Banco de Dados velhos

Mensagempor JoséQuintas » 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:

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.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 10835
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 7 vezes
Mens.Curtidas: 695 vezes

Deletar Banco de Dados velhos

Mensagempor alxsts » 29 Out 2018 18:14

Olá!

Este tipo de operação requer que os arquivos sejam abertos em modo exclusivo:
USE dias EXCLUSIVE NEW ALIAS welcome
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2185
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 13 vezes
Mens.Curtidas: 146 vezes

Deletar Banco de Dados velhos

Mensagempor JoséQuintas » 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.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 10835
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 7 vezes
Mens.Curtidas: 695 vezes

Deletar Banco de Dados velhos

Mensagempor Emanuel » 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:


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

Emanuel
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 24
Data de registro: 20 Set 2018 14:39
Cidade/Estado: parnaiba-pi
Curtiu: 12 vezes
Mens.Curtidas: 0 vez

Anterior



Retornar para Banco de Dados

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 1 visitante


Faça uma doação para o forum
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro