Message
General information
Fórum:
Visual FoxPro
Category:
Bases de dados, Tabelas, Views, Indices e SQL
Miscellaneous
ID da thread:
00813668
ID da mensagem:
00814131
Views:
10
Paulo eu costumo utilizar um ID único para todas as tabelas do sistema, ou seja um contador sequencial só. Desta forma eu tenho uma unica tabela de contador com um único campo.

Não mostro esta informação para o usuário, utilizo-a apenas para carregar chaves primárias. Faço isso com todos os bancos que eu trabalho, desde o nativo do VFP, SQL SERVER e ORACLE.




>Este código veio com o VFP 8, e vou testar com tabelas livres. No VFP 8 estou usando campos AutoInc, e tem funcionado corretamente, tenho algumas dúvidas sobre a recuperação do Id, no insert-sql, que já coloquei aqui em outra Thread.
>
>Vou fazer os testes com tabelas livres e te respondo.
>
>Obrigado pela ajuda.
>
>>Olá Paulo
>>
>>Começando pelo fim: também já tive problemas com SET DATASESSION e parei de usá-lo.
>>
>>tem algo errado no código abaixo, ele não faz um APPEND BLANK quando a lcAlias não é encontrado:
>>
>>
>>  IF SEEK(lcAlias, "Ids", "table")
>>    IF RLOCK()
>>      lnID = ids.nextid
>>      REPLACE ids.nextid WITH ids.nextid + 1
>>      UNLOCK
>>    ENDIF
>>  ENDIF
>>
>>
>>Normalmente faço assim:
>>
>>
>>  IF NOT SEEK(lcAlias, "Ids", "table")
>>     APPEND BLANK  IN Ids
>>     REPLACE table WITH lcAlias  IN Ids
>>  ENDIF
>>  IF RLOCK("Ids")
>>     lnID = ids.nextid
>>     REPLACE ids.nextid WITH ids.nextid + 1  IN Ids
>>     UNLOCK  IN Ids
>>  ENDIF
>>
>>
>>O detalhe final e que me resolveu esses problemas com transações: uso uma tabela livre para gravar os Ids, pois tabelas livres não são consideradas em transações.
>>
>>Espero que ajude
Previous
Next
Responder
Mapa
View