Pegar valor do campo quot;Códigoquot; no clientedataset.
Bom dia pessoal,
Estou precisando pegar o valor do campo Código para fazer um mestre - detalhe.
Estou tentando fazer um mestre-detalhe (Pedido e Itens do Pedido)
mas o CodPedido da tabela Pedido é um autoincremento(estou utilizando o SqlServer2000) e preciso desse valor para relacionar a tabela ItensdoPedido..
mas não consigo obter esse valor... mesmo dando o ApplyUpdates(0)..
como obtenho esse valor??
obs: meu campo é autoincremento, só gera esse valor qdo dou o applyupdates..
obrigado
Estou precisando pegar o valor do campo Código para fazer um mestre - detalhe.
Estou tentando fazer um mestre-detalhe (Pedido e Itens do Pedido)
mas o CodPedido da tabela Pedido é um autoincremento(estou utilizando o SqlServer2000) e preciso desse valor para relacionar a tabela ItensdoPedido..
mas não consigo obter esse valor... mesmo dando o ApplyUpdates(0)..
como obtenho esse valor??
obs: meu campo é autoincremento, só gera esse valor qdo dou o applyupdates..
obrigado
Eric.miranda
Curtidas 0
Respostas
Edilcimar
12/03/2008
with ibquery1 do
begin
Close;
SQL.Clear;
SQL.Add(´Select gen_id(NOMECAMPO_CODIGO_GEN, 1) from RDB$DATABASE´);
Prepare;
Open;
Codigoquequero := ibquery1.fields[0].asinteger;
end;
begin
Close;
SQL.Clear;
SQL.Add(´Select gen_id(NOMECAMPO_CODIGO_GEN, 1) from RDB$DATABASE´);
Prepare;
Open;
Codigoquequero := ibquery1.fields[0].asinteger;
end;
GOSTEI 0
Eric.miranda
12/03/2008
Obrigado Edilcimar.
tentei adaptar esse código ao SqlServer 2000 e componentes DbExpress e não funcionou..
vc tem outra sugestão?
tentei adaptar esse código ao SqlServer 2000 e componentes DbExpress e não funcionou..
vc tem outra sugestão?
GOSTEI 0
Eric.miranda
12/03/2008
Pelo visto então não é mto aconselhável usar mestre detail, utilizando o campo chave da tabela mestre como autoincremento..
seria isso mesmo?? ou estou enganado?
seria isso mesmo?? ou estou enganado?
GOSTEI 0
Hall 9000
12/03/2008
Sugestão:
Desmarque no sqlserver o campo chave como auto incremento. Crie uma stored procedure que verifica o ultimo nº do campo chave e some + 1 (dá um SELECT MAX(CAMPO_CHAVE)+1 FROM SUA_TABELA)
Gere um código ´Falso´ para sua tabela qdo clicar no botão Inserir. Faça uma function que gere um número randomico (aleatorio) e atribua esse numero ao seu campo chave.
Aí no applyUdates do provider vc chama a storedprocedure e atribua ao ao campo o valor verdadeiro.
Acho que isso funciona.
Desmarque no sqlserver o campo chave como auto incremento. Crie uma stored procedure que verifica o ultimo nº do campo chave e some + 1 (dá um SELECT MAX(CAMPO_CHAVE)+1 FROM SUA_TABELA)
Gere um código ´Falso´ para sua tabela qdo clicar no botão Inserir. Faça uma function que gere um número randomico (aleatorio) e atribua esse numero ao seu campo chave.
Aí no applyUdates do provider vc chama a storedprocedure e atribua ao ao campo o valor verdadeiro.
Acho que isso funciona.
GOSTEI 0
Paullsoftware
12/03/2008
Olá amigo, procure aqui no forum sobre [b:42321e7de8]DataSetField[/b:42321e7de8] e tb sobre o evento [b:42321e7de8]BeforeUpdateRecord[/b:42321e7de8] do DataSetProvider que você vai encontrar a solução, eu suei bastante no inicio mas agora parece fácil... :wink:
GOSTEI 0
Eric.miranda
12/03/2008
Olá paullsoftware,
por um acaso vc não tem um pequeno exemplo aí que vc possa me enviar né??
se tiver eu agradeceria mto... eric@politran.com.br
valew
por um acaso vc não tem um pequeno exemplo aí que vc possa me enviar né??
se tiver eu agradeceria mto... eric@politran.com.br
valew
GOSTEI 0