locked
Estrutura de tabelas RRS feed

  • Pergunta

  • Bom dia!
    Pessoal, tenho um sistema em cliente com tabelas em DBF, de vez enquando preciso alterar algum campo ou até mesmo criar index devido a novos relatórios. Quando isso acontece, tomo nota de todas as alterações e depois tenho que alterar tudo na mão no cliente. Estou pensando em fazer esse processo automatizado.

    Pergunta, tem como eu gravar em um arquivo TXT ou XML a estrutura da tabela que tenho no cliente e a que foi alterada, comparar as duas e fazer alterações com comandos do Fox sem perder os dados do cliente?

    Muito obrigado pela atenção de todos.
    sexta-feira, 12 de junho de 2009 12:09

Respostas

  • Olá, Eduardo

    No indexador de arquivos eu tenho um método que verifica se a estrutura é adequada e a adequa, se necessário.

    Algo assim:

    Use Dados\Cliente Exclusive
    If Type("Cliente.cli_nome") == "U" && não tem o campo cli_nome, então criá-lo
      Alter table Dados\Cliente add column cli_nome Char(50)
    EndIf

    Se mais pra frente mandarem modificar o tamanho do campo cli_nome pra 70, eu adiciono o bloco abaixo no indexador e mando a atualização
    Use Dados\Cliente Exclusive
    If Type("Cliente.cli_nome") == "U" && não tem o campo cli_nome, então criá-lo
      Alter table Dados\Cliente add column cli_nome Char(50)
    EndIf
    If FSize("cli_nome") < 70 && o tamanho de cli_nome é menor que 70, então adaptá-lo pra 70
      Alter table Dados\Cliente alter column cli_nome Char(70)
    EndIf

    segunda-feira, 21 de setembro de 2009 12:18

Todas as Respostas

  • Ola Eduardo,

    Uma forma é selecionar a tabela e utilizar o comando Display Struture to <nome do arquivo> e após isso comparar com o conteúdo da tabela que esta no cliente. Lembrando sempre que a questão de perder ou não algum dado do cliente é relativa sendo que se você apagar um campo de uma tabela certamente esse dado também se perdera. Com isso você pode criar uma rotina para trabalhar com estes arquivos mostrando somente os campos que sofreram alterações e devem ser alterados no cliente.

    Espero ter ajudado.
    quinta-feira, 18 de junho de 2009 18:48
  • Jeferson,
    Não sei se entendeu bem o meu problema, mas gostaria que no momento em que instalo o meu programa no cliente gerar um arquivo txt ou xml e quando lançar uma nova versão ou alterar algum campo da tabela(Sempre acressentar e nunca tirar) mandar uma atualização para o cliente comparar os dois bancos e fazer a atualização sem a minha interferencia, automaticamente.

    Muito obrigado
    quinta-feira, 18 de junho de 2009 19:15
  • Tem um comando  DISPLAY STRUCTURE TO FILE  , que faz exatamente isto grava a estrutura em um arquivo.

    Ja caso queira mudar tem outro que faz a mudança 

    ALTER TABLE - SQL Command

    De uma olhada no help para estes dois comandos isto deve ajudar
    segunda-feira, 20 de julho de 2009 10:10
  • Muito obrigado, vou dar uma olhada e ver o que consigo.

    Valeu!
    segunda-feira, 20 de julho de 2009 11:37
  • Olá, Eduardo

    No indexador de arquivos eu tenho um método que verifica se a estrutura é adequada e a adequa, se necessário.

    Algo assim:

    Use Dados\Cliente Exclusive
    If Type("Cliente.cli_nome") == "U" && não tem o campo cli_nome, então criá-lo
      Alter table Dados\Cliente add column cli_nome Char(50)
    EndIf

    Se mais pra frente mandarem modificar o tamanho do campo cli_nome pra 70, eu adiciono o bloco abaixo no indexador e mando a atualização
    Use Dados\Cliente Exclusive
    If Type("Cliente.cli_nome") == "U" && não tem o campo cli_nome, então criá-lo
      Alter table Dados\Cliente add column cli_nome Char(50)
    EndIf
    If FSize("cli_nome") < 70 && o tamanho de cli_nome é menor que 70, então adaptá-lo pra 70
      Alter table Dados\Cliente alter column cli_nome Char(70)
    EndIf

    segunda-feira, 21 de setembro de 2009 12:18