STRU - Lista e modifica a estrutura dos arquivos dbfs

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

STRU - Lista e modifica a estrutura dos arquivos dbfs

Mensagem por Pablo César »

Puxa, obrigado Jairinho ! Vou verificar e vou limitar até 8 no decimal também.
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 do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

STRU - Lista e modifica a estrutura dos arquivos dbfs

Mensagem por Pablo César »

Como é bom contar com os olhos atentos de outra pessoa. Agradeço Jairo. Encontrei o que razão de ter deixado de funcionar a mudança de estrutura para campos no decimal. Na linha 1392 da versão anterior estava:

Coluna5 := If( Coluna2=="N", Str(Modi_Stru.Spinner_2.Value,5), "" )

e era para haver sido:

Coluna5 := If( Coluna3=="N", Str(Modi_Stru.Spinner_2.Value,5), "" )

Acontece que a primeira coluna não é exibida no Grid. Ela guarda a sequencia inicial dos campos o que é fundamental para o processamento na hora de converter e puxar os dados do dbf original, quando mudado a estrutura.

A limitação do decimal, foi fácil. Acredito que deve ter outras para o caso de TAMANHO do tipo caracter e numérico também. Mais uma vez, obrigado amigo Jairo.
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 do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

STRU - Lista e modifica a estrutura dos arquivos dbfs

Mensagem por Jairo Maia »

Olá Pablo,

Agora está funcionando corretamente os campos numéricos com casas decimais. Valeu!
Pablo César escreveu:Como é bom contar com os olhos atentos de outra pessoa.
A rigor Pablo, e sem nenhuma demagogia, ele transcendeu a idéia inicial de transformar a estrutura do banco de dados em tabela para postagem no fórum, e acabou se tornando uma ferramente prática e facil para manusear os bancos de dados. Estou usando a versão GUI, e achei bastante útil.
Pablo César escreveu:A limitação do decimal, foi fácil. Acredito que deve ter outras para o caso de TAMANHO do tipo caracter e numérico também.
Já que levantou a questão, e visto sua boa vontade em aceitar sugestões, vou fazer então outras observações:

1 - Quanto a limitação do campo caracter:
Campo do tipo caracter é simples: 1 a 65.484 caracteres (em Clipper é de 1 a 255)

2 - Quanto aos campos numércos, SEM CASAS DECIMAIS:
Se um campo não tem casas decimais, o limite permanece em 16. Em Harbour, Se definir um campo superior a 16, o banco de dados aceitará até 64 caracteres. Mas não funciona, creio que isso será para futuro, e se tentar preencher acima de 16, ele será truncado, e acima do caracter 16 será transformado em zero. Assim, pode causar danos sérios no sistema se isso ocorrer. Então sugiro que o limte para campos númericos sem casas decimais fique em 16.

3 - Campos numéricos COM CASAS DECIMAIS:
Quando o campo numérico tiver casas decimais, fica um pouco mais complexo, veja:

O limite pode chegar a 17, que comtempla 16 caracteres mais o ponto: 12345678.12345678

Ocorre que para montar esta estrutura, deve-se levar em conta as casas decimais, assim, um campo com 8 números principais mais 8 casas deciamis, NECESSARIAMENTE deve ser definido com tamanho 17.

Tentando exemplificar:

Defino na estrutura um tamnho 16, e coloco que quero 8 casas decimais. O campo será criado com o total de 16 digitos, sendo que um será o ponto, então se terá um resultado assim: 1234567.12345678

Se eu definir o tamnho do campo em 10 e 8 casas decimais, o campo será assim: 1.12345678

Se eu defino o tamanho do campo em 6 com oito casa deciamis, o resultado será assim: ********, e dá erro ao tentar gravar os dados.

Resumindo, o tamanho de um campo com casas deciamis se limita a 17, e o tamanho definido deve se levar em conta o tamanho do INTEIRO + FRAÇÃO + PONTO. Assim, de desejo trabalhar com um campo onde quero digitar 10 caractrers inteiros mais duas casas decimais, terei que definir o tamanho em 13, pois será deduzido as duas casas decimais mais o ponto e o restante será o tamanho do número "INTEIRO".

Então, se eu tentar colocar no utilitário a definição de um campo decimal desta forma: Tamnaho 6 e Decimal 8, ele deve bloquear, pois haverá erro, ou a seu critério, ajustar automaticamente observando os limites conforme as regras da criação do campo.

4 - Na janela das funções MODIFICAR, ficaria muito legal se houvesse um botão SAIR. Fica como sugestão.

Não sei se consegui ser claro, espero ter ajudado.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

STRU - Lista e modifica a estrutura dos arquivos dbfs

Mensagem por Pablo César »

Obrigado Jairo, aqui mais uma aula ! Nossa, não sabia ou não lembrava dessa capacidade para campos do tipo caracter (acho que foi mencionando aqui no fórum), mas é impressionante a capacidade entre Harbour e Clipper. Só não sei, como vou fazer para definir essa questão na hora de aumentar. Bom creio que a informação de saber se o dbf foi feito em Clipper ele poderia perguntar. Também fiquei de cara com o tamanho mais de 16 do campo numérico, ele aceitou como você tinha dito, mudou a estrutura, mas na hora de fazer o replace, ele preenche com zeros após o 16º caracter.

Sei que devo fazer uma rotina de verificação do tamanho decimal para que não sobrepasse o tamanho principal, considerando decimais mais ponto. Isso já sabia, mas era bom fazer uma regra, vou ver ainda. Também preciso alertar ao usuário quando a estrutura for menor que a do tamanho original e que haverá perda de dados, seja em qualquer tipo de campo.
4 - Na janela das funções MODIFICAR, ficaria muito legal se houvesse um botão SAIR. Fica como sugestão.
Crees que fica melhor substituir o botão cancelar por sair, na hora de edição dos campos ? Atualmente o botão Cancelar, cancela a edição e outra vez clicando faz a saída do módulo de "Modificar". Acho que poderia mudar a descrição do mesmo botão e ainda manter a dupla função do mesmo botão. O único inconveniente que acho, que já existe o botão Salvar (que começar com a letra "S", que serve também para hotkey) e Sair coincide na mesma letra. Alguma sugestão ? Talvez ao invés de "Sair" colocar como "Retornar", mas fica meio ambíguo o seu significado (o usuário poderá entender em retornar valores)...
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 do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

STRU - Lista e modifica a estrutura dos arquivos dbfs

Mensagem por Jairo Maia »

Olá Pablo,

Entendi. O botão cancelar realmente volta. Mas veja você que eu não tinha notado, pois achava que mesmo depois de salvar se eu clicasse CANCELAR seria cancelado as alterações.

Hoje está assim:
1 - Se não há campo selecionado, apenas o botão Cancelar fica disponível
2 - Ao selecionar um campo, o botão Salvar passa a ficar disponível também.

Não pode ser assim?:
1 - Adicionar um Campo Voltar (por exemplo, para fugir da coincidência do hotkey)
2 - Ele será o único disponível se nada estiver selecionado
3 - Ao selecionar um campo, o botão Voltar fica indisponível, e os botões Salvar e Cancelar ficam disponível
4 - Ao pressionar Salvar ou Cancelar, volta a situação anterior, ou seja, apenas o botão Voltar fica disponível, até ser selecionado outro campo, e repete o processo acima, até pressionar Voltar.

É uma idéia, espero ter ajudado.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

STRU - Lista e modifica a estrutura dos arquivos dbfs

Mensagem por Pablo César »

Atualmente o botão Salvar, só é habilitado, quando realmente acontece alguma mudança. Se der um duplo click e sem alterar algo e clicar no salvar, ele vai verificar se houve mudança a ser processada. Se não houver retorna para o Grid. E se houver mudança de estrutura ao clicar em "Salvar", este aplica a mudança devida no dbf. Mas se clicar nos botões de Delete irá apagar os registros nos grid e só será efetivados ao clicar no botão Salvar. O botão "Processos" ao salvar o código, também irá habilitar o botão salvar. Isso, na minha opinião está funcionando adequadamente. Talvez coloque no caption do botão "Sair e deixarei o ultimo "r" como hot key (isso realmente, não faz muita diferença).

Na verdade quero evitar de colocar botões para não ter que fazer muitas alterações de layout e deixar o mais enxuto possível. O que me arrependo é ter disponibilizado dois botões ao invés de um. Os botões "Inserir" e "Adicionar", basicamente cumprem quase a mesma função, ao contrário do botão adicionar q(que adiciona no final dos registros do grid) o botão inserir insere o registro no lugar abaixo onde o cursor estiver posicionado no grid. No entanto, tudo isso parece ser desnecessário na presença dos botões que alteram a sequência dos campos. Mas como isso foi adicionado mais tarde, acabei deixando.

Agora o que o outro fórum está solicitando é a tradução do aplicativo. Mas ainda quero acondicionar a questão dos tamanhos com os decimais e o alerta para usuário caso haja perda de dados quando o tamanho do campo ficar menor.
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 do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

STRU - Lista e modifica a estrutura dos arquivos dbfs

Mensagem por Pablo César »

Finalmente, a versão em Inglês! Lançamento da versão 3.5.
Dois arquivos. LNG foram anexadas (Português e Inglês).
As traduções devem ser feito para a língua local, de acordo com o arquivo English.lng e deve seguir a sequência de linha a alinha.
Quem deseje colaborar anexando o arquivo do idioma local já traduzido, será bem vindo pela gentileza.
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.
esgici
Usuário Nível 1
Usuário Nível 1
Mensagens: 34
Registrado em: 27 Ago 2012 14:51
Localização: Turkiye
Contato:

STRU - Lista e modifica a estrutura dos arquivos dbfs

Mensagem por esgici »

Ola Pablo
Pablo Cesar escreveu:Finalmente, a versão em Inglês! Lançamento da versão 3.5.
Dois arquivos. LNG foram anexadas (Português e Inglês).
As traduções devem ser feito para a língua local, de acordo com o arquivo English.lng e deve seguir a sequência de linha a alinha.
Quem deseje colaborar anexando o arquivo do idioma local já traduzido, será bem vindo pela gentileza.
Google escreveu:Finally, the English version! Release of version 3.5.
Two files. LNG were attached (Portuguese and English).
The translations must be made ​​to the local language, according to the file English.lng and must follow the sequence of the line gear.
Those who wish to collaborate attaching the file already translated local language, will welcome the kindness.
Thanks a lot :)

The world become smaller day to day;

we too, must more international at least by language ;)

TIA
Saudação
Esgici
Viva Clipper !
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

STRU - Lista e modifica a estrutura dos arquivos dbfs

Mensagem por Pablo César »

You are very good wellcome my friend Esgici ! You help me much in this APP And I hope it be usefull for you and others.

My Best regards !
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 do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

STRU - Lista e modifica a estrutura dos arquivos dbfs

Mensagem por Pablo César »

Faltou uma pequena implementação mas grande no seu sentido.

Minha menção de "Meus agradecimentos a:" + Amigos_Contribuidores() no item do StatusBar do Leia-me.

Obrigado a todos, pelas dicas.
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 do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

STRU - Lista e modifica a estrutura dos arquivos dbfs

Mensagem por Pablo César »

Existia uns bugs por eu ter alterado algumas funções com caixa alta começando com HB_ para Hb_ e um erro na hora de impressã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 do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

STRU - Lista e modifica a estrutura dos arquivos dbfs

Mensagem por Jairo Maia »

Olá Pablo,

As alterações dos botões que você fez tornou o utilitário bem mais intuitivo. Valeu.

Uma sugestão para você analizar caso ache interessante para a próxima versão quanto aos limites dos campos numéricos (não sei se é a melhor forma, mas funciona):

Na função Stru_Salva(), abaixo da linha: Coluna5 := If( Coluna3=="N", Str(Modi_Stru.Spinner_2.Value,5), "" ), colquei o seguinte:

Código: Selecionar todos

If Coluna3 == "N"
 If ! ValCpNumeric( Val(Coluna4), Val(Coluna5) )
  Volta_Grid()
  Return Nil
 Endif
Endif
Função ValCpNumeric():

Código: Selecionar todos

Function ValCpNumeric( nValor1, nValor2 )

 Local lReturn := .t.

 // Até que as mensagens sejam definidas no arquivo .Lng
 Local cMsg, cTit := "ERRO no Campo Númerico!"

 If nValor2 > 0

  If ( nValor1 <= ( nValor2 + 1 ) )

   // MsgStop( aLng[xxx], aLng[xxx] )
   cMsg := "O tamanho do Campo deve ser no mínimo 2 dígitos maior que o DECIMAL"
   cMsg += CRLF + "Exemplo: Tamanho = 5 e Decimal = 2 => Resulta: 99.99"
   MsgStop( cMsg, cTit )
   lReturn := .f.

  ElseIf ( nValor1 ) > 17

   // MsgStop( aLng[xxx], aLng[xxx] )
   cMsg := "O tamanho do Campo Numérico com casa Decimal não pode ser maior que 17"
   cMsg += CRLF + "Exemplo: ( INTEIRO + PONTO + DECIMAL ) <= 17"
   MsgStop( cMsg, cTit )
   lReturn := .f.

  Endi

 ElseIf nValor1 > 16

  // MsgStop( aLng[xxx], aLng[xxx] )
  cMsg := "O tamanho máximo do campo numérico sem casas decimais é de 16 dígitos"
  MsgStop( cMsg, cTit )
  lReturn := .f.

 Endif

Return ( lReturn )
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

STRU - Lista e modifica a estrutura dos arquivos dbfs

Mensagem por Pablo César »

Valeu Jairinho ! Espero que você goste da forma que implementei suas sugestões. Mais uma vez, obrigado.

Fiz algumas adaptações, ficam fácil quando vem mastigadinho como você nos apresentou. Ao invés de fazer a verificação após confirmação, adaptei para que funcionasse na hora que muda os Spinners pelo evento on change. Claro que as vezes apresentará falha dependendo a sequência e valores que irão ser testados. Mas gostei e agradeço muito. O seu nome foi incluso com os meus agradecimentos pelas contribuições que nos fez (veja em no statusbar: Leia-me).
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 do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

STRU - Lista e modifica a estrutura dos arquivos dbfs

Mensagem por Jairo Maia »

Olá Pablo,

Ficou muito legal. Muito melhor alertar na hora do que quando tentar salvar.

Outra coisa, fiz vários testes, e não apresentou erro nenhum. Aliás, me pareceu tudo correto.

PS: Apenas uma coisa se me permite: A tradução das mensagens para o inglês não estão refletindo a idéia desejada. É apenas uma observação.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

STRU - Lista e modifica a estrutura dos arquivos dbfs

Mensagem por Pablo César »

Apenas uma coisa se me permite: A tradução das mensagens para o inglês não estão refletindo a idéia desejada. É apenas uma observação.
Oi Jairo, sabe a forma de expressar as vezes em inglês difere. Em quais pontos você acha que não está de acordo com o português ?
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.
Responder