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.
Atenção: Campo incremental em DBF
Moderador: Moderadores
Atenção: Campo incremental em DBF
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
"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
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
Atenção: Campo incremental em DBF
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.
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 [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Atenção: Campo incremental em DBF
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.
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.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
- Itamar M. Lins Jr.
- Administrador

- Mensagens: 7928
- Registrado em: 30 Mai 2007 11:31
- Localização: Ilheus Bahia
- Curtiu: 1 vez
Atenção: Campo incremental em DBF
Olá!
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.
O comportamento é o mesmo de um SGBD qualquer.Creio até que os campos incrementais sejam reescritos ao se deletar alguns registros porque senão acontecem falhas de sequencia.
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.
Saudações,
Itamar M. Lins Jr.
Itamar M. Lins Jr.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Atenção: Campo incremental em DBF
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.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.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
https://github.com/JoseQuintas/
