|
Comportamento do buffer quando o comando Find não
encontra registro
Geralmente, após um comando Find que não
localiza registro, o buffer do registro terá as seguintes
características:
1. Os valores dos campos permanecerão com o mesmo
valor que tinham antes da execução do comando
Find.
2. O indicador/variável global FOUND será
False.
3. O registro estará inativo.
Entretanto, existe uma exceção a esta regra
que ocorre somente em condições especiais.
Quando se usa a base de dados embedded (DataFlex) e um comando
Find pelo Recnum com EQ, GT ou GE não encontra um
registro, o valor de todos os campos será limpo,
exceto o campo Recnum. Ressaltamos que isto só ocorre
com:
1. A base de dados embedded (DataFlex),
2. Quando a procura é feita pelo Recnum,
3. Quando os modos de procura são EQ, GT ou GE,
4. E o comando não encontra um registro.
Neste caso, todos os campos serão limpos, com exceção
do Recnum - ele terá o valor movido antes do comando
Find ser executado.
Este comportamento não será alterado, pois
embora inconsistente, é a forma como sempre funcionou
e se for alterado, algumas aplicações poderão
se comportar de forma errada.
Note que este comportamento não se aplica quando
se utiliza outras bases de dados (como DB2, Pervasive.SQL
e SQL Server). Procuras em bases de dados usando os Connectivity
Kits irão manter o comportamento padrão -
o buffer não será limpo, mantendo os valores
que tinham antes do comando Find ser executado.
Normalmente esta diferença de comportamento não
terá impacto em sua aplicação. Portanto,
não confie no conteúdo do Buffer após
uma pesquisa pelo Recnum.
Por precaução, você nunca deve confiar
que o buffer contém um determinado conteúdo
após uma procura "mal-sucedida". Se você
desejar criar registros após um comando Find "mal-sucedido",
limpe o buffer antes e mova os valores para os campos.
|