Clipper On Line • Ver Tópico - Atenção: Campo incremental em DBF

Atenção: Campo incremental em DBF

Projeto Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

 

Atenção: Campo incremental em DBF

Mensagempor vailton » 23 Set 2021 17:14

Olá

Um ponto que percebi lendo o código da função PsqControle() acima, que por sinal é muito boa, foi o seguinte: se o nome do DBF (nome+extensao) for maior de 12 bytes ele vai cortar o nome do arquivo e isto pode ser um problema. Como hoje é possível ter nome de arquivos maiors que o 8+3, seria interessante aumentar o tamanho do campo para prever isto em alguns cenários.

Espero ter ajudado para o assunto.
Vailton Renato
"No dia mais claro, na noite mais escura... o bug sucumbirá ante a minha presença"

E-mail/MSN: contato@vailton.com.br
Skype: vailtom
Avatar de usuário

vailton
Colaborador

Colaborador
 
Mensagens: 362
Data de registro: 17 Nov 2005 18:08
Cidade/Estado: Brasil
Curtiu: 0 vez
Mens.Curtidas: 6 vezes

Atenção: Campo incremental em DBF

Mensagempor rochinha » 25 Set 2021 05:57

Amiguinhos,

A versão de Harbour que uso em meu sistema é a mais jurássica possível, Alpha Build 45.0 Flex, portanto não poderia fazer uso desta maravilha, mas tenho em mente que um campo incremental sirva somente para impedir uma duplicidade.

Não sei como o campo incremental guardaria a sequência a não ser se no cabeçalho da estrutura, mas lembro que em Clipper tinhamos o controle SET UNIQUE para indices que poderia prevenir duplicidades.

O controle incremental dentro do DBF pode ter problema se por acaso registros paularem e ao transportar os registros intactos perdem o controle portanto campos incrementais não podem ser usados como CPFs de registros.

Creio até que os campos incrementais sejam reescritos ao se deletar alguns registros porque senão acontecem falhas de sequencia. A mesma flha que ocorre ao usar Recco() como contador de registros para dar sequencia: recco()+1.

A nossa função PSQControle() armazena os sequenciais em tabela separada, mas também não é segurança perpétua pois se perdermos o arquivo que contém os controles também se perde a sequencia.

Esperamos muito tempo para ter um recurso assim e para mudar leva tempo e coragem para deixar velhas técnicas.

A função PSQControle() recebe no primeiro parâmetro o resultado da função dbf(), se no Harbour ela retorna um nome maior que 8+3 nada impede de alterar o tamanho do campo nome para comportar outros tamanhos.

Em suma devemos fazer o melhor uso de toda oportunidade.
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: 4358
Data de registro: 18 Ago 2003 20:43
Cidade/Estado: São Paulo - Brasil
Curtiu: 606 vezes
Mens.Curtidas: 202 vezes

Atenção: Campo incremental em DBF

Mensagempor JoséQuintas » 25 Set 2021 08:13

O incremental é guardado no cabeçalho.
NÃO é igual RecNo().

Na primeira implementaçào tinha falha, que não dava acesso ao incremental, e podia até renumerar numa cópia.
O campo incremental fica gravado no DBF, como um registro, então se torna único.
Não é igual SET UNIQUE ON, porque UNISQUE não impede nada, pode gravar duplicado à vontade, apenas só um registro fica visível no índice.
No Advantage Database é outra história, ele dá erro se tentar gravar duplicado, mas no Clipper/Harbour não.
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: 17601
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 956 vezes

Atenção: Campo incremental em DBF

Mensagempor Itamar M. Lins Jr. » 25 Set 2021 09:51

Olá!
Creio até que os campos incrementais sejam reescritos ao se deletar alguns registros porque senão acontecem falhas de sequencia.

O comportamento é o mesmo de um SGBD qualquer.
Inclusive vc pode SETAR para ser 2, 3, 4 ... o PULO por exemplo vai contar de o primeiro será 2, o segundo 4...
Se apagar o registro não afeta a contagem.
O DBF do Harbour tem os PRINCIPAIS campos dos SGBD's, tem BLOB, TIME STAMP etc...
O Polonês(?) Przemek fez coisas no Harbour que chega 2040 e se vacilar não usaremos tudo que tem pronto no Harbour.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 5556
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 205 vezes
Mens.Curtidas: 323 vezes

Atenção: Campo incremental em DBF

Mensagempor JoséQuintas » 25 Set 2021 11:39

Itamar M. Lins Jr. escreveu:O Polonês(?) Przemek fez coisas no Harbour que chega 2040 e se vacilar não usaremos tudo que tem pronto no Harbour.


O limite de variáveis atual, por exemplo, se você tiver uma máquina com 1 terabyte de memória, talvez ainda não consiga chegar no limite final do Harbour.
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: 17601
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 13 vezes
Mens.Curtidas: 956 vezes

Anterior



Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 4 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro