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
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
Curtir tópico
+ 0
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;
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
Clique aqui para fazer login e interagir na Comunidade :)