N.º Sequencial com ClientDataSet SQL SERVER

29/07/2005

0

Amigos,
Estou usando Delphi 7 com ClientDataSet + SQL SERVER 2000. Sendo que possuo 2 tabelas q tem campos chaves Auto Incremeto. Uma Tabela se Chama Contrato e a outra Cedente. A Cardinalidade é 1 pra muitos, ou seja, um contrato pode ter mais de 1 cedente.
No meu formulário de cadastro dos contratos, tenho uma grid que é onde cadastro os Cedentes. Só que como o Campo é Auto Inc, eu não consigo pegar o valor do código gerado para associar ao campo correto na tabela Cedente, pois o código do auto inc só é exibido após um applay update, só que náo posso gravar um contrato sem antes ter um cedente cadastrado. Alguém teria uma saída para esse problema ???

Abs


Marcos.rio

Marcos.rio

Responder

Posts

31/07/2005

Jonasaf

Brother,

Faça dessa maneira:

Variavel q guarda valor campo chave:

VCampochave : integer;

Grave a tabela de autoincremento dando append.

Tabela.append;

Tabela.fieldbyname(xx).asinteger : xxxxxx;
Tabela.fieldbyname(xx).asinteger : xxxxxx;
Tabela.fieldbyname(xx).asinteger : xxxxxx;
Tabela.fieldbyname(xx).asinteger : xxxxxx;
Tabela.fieldbyname(xx).asinteger : xxxxxx;

VCampoChave := Tabela.fieldbyname(CampChave).asinteger;



Tabela.post;
Tabela.applyupdate(-1);

// posiciona ultimo registro;

Tabela.last;


Proximatabela.append;

ProximaTabela.fieldbyname(xx).asinteger := VCampoChave;

Proximatabela.post;
Proximatabela.applyupdate(-1;


Responder

31/07/2005

Bon Jovi

Com campo do tipo AutoInc vc perde o controle. Vc pode atribuir tb usando SELECT COALESCE(MAX(CHAVE), 0) + 1 AS PROXIMO FROM TABELA no momento do ApplyUpdates. Se for chave primária composta por vários campos, deve-se criar um índice para o campo que estará usando no MAX.


Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar