Propriedades do ADOCOnnection e mais um de Autoincrement

01/10/2004

Estou desenvolvendo um projeto com Delphi 7 e SQl Server 2000, este aplicativo podera ser acessado por varios usuarios simultaneos, pergunto: ´Qual a melhor opção para as propriedades [b:95ccbfc945]CursorLocation[/b:95ccbfc945] e [b:95ccbfc945]IsolationLevel[/b:95ccbfc945] do componente ADOConnection ?´


Sobre o Autoincrement.

Eu criei uma tabela chamada codigos onde existe somente um registro, um dos campos é o CODORC (integer).
Montei outra tabela chamada ORCAMENTOS, nesta tabela tbem existe o CODORC só que ele é char(6), pois coloco mascara no valor, exemplo ´000056´.

Antes de eu executar o insert com o ADOQuery, eu faço um update na tabela de codigos, no campo CODORC, fazendo CODORC + 1, e logo em seguida pego esse valor e faço a inserção na tabela ORCAMENTOS.

Essa seria a forma correta de fazer o autoincremento, considerando o sistema como multiusuario ????. Eu não estou usando os componentes DBEdits, mas os edits comuns.

Grato

Abraços


Arc

Respostas

02/10/2004

Bon Jovi

Estou desenvolvendo um projeto com Delphi 7 e SQl Server 2000, este aplicativo podera ser acessado por varios usuarios simultaneos, pergunto: ´Qual a melhor opção para as propriedades CursorLocation e IsolationLevel do componente ADOConnection ?´

Depende do caso, casos em q necessite manter o cursor sempre conectado ao servidor. Nao tendo necessidade, o melhor é usar o default (CursorLocation = clUseClient e IsolationLevel = ilCursorStability ou ilReadCommitted). E as querys tb com CursorLocation = clUseClient, além de CursorType = ctStatic (já é default ao ativar com clUseClient).

Sobre o Autoincrement. Eu criei uma tabela chamada codigos onde existe somente um registro, um dos campos é o CODORC (integer). Montei outra tabela chamada ORCAMENTOS, nesta tabela tbem existe o CODORC só que ele é char(6), pois coloco mascara no valor, exemplo ´000056´.

Nao precisaria ser Char. O ideal seria colocar como NUMERIC(6) ou INTEGER e no Delphi vc tratar a formatação que deseja exibir.

Antes de eu executar o insert com o ADOQuery, eu faço um update na tabela de codigos, no campo CODORC, fazendo CODORC + 1, e logo em seguida pego esse valor e faço a inserção na tabela ORCAMENTOS. Essa seria a forma correta de fazer o autoincremento, considerando o sistema como multiusuario ????. Eu não estou usando os componentes DBEdits, mas os edits comuns.

Tanto faz usar DB ou não, não há nenhum problema pra sistema multiusuários se usado clientdataset. Em geral sobre auto-incremento veja este tópico: http://delphiforum.icft.com.br/forum/viewtopic.php?t=51828


Responder Citar