Fórum Atualiza Campos #374176

27/08/2009

0

Olá Amigos...

Ainda nçao tinha chegado nesta...

Como faço para gravar um campo o qual não está na tela?
Com Trigger? Blz? Deu certo...
Como utilizo uma fomr modelo, com apenas uma linha posso fazer isso para várias tabelas...

Trata-se de um campo o qual tem em quase todas as tabelas com o mesmo nome.. (TREG)

Este campo não fica no form, criei um Triger para atuliza a quantide de registros vinculados a este...
Um contato, vms dizer assim:

Fiz isso para o usuario não excluir o registro caso haja outro vinculado.
Isso é, qundo o Treg > 0;

Mas ao inclir um registro novo, o campo entrar como nulo..

Há um método para registrar como 0(zero)?

Tentei este:
Ds.DataSet.FieldByName(´QTREG´).AsInteger := 0;
Antes do ApllyUpdate
mas todos os registros foram gravados 0(Zeros)
e não aquele que estava sendo incluido....

Entenderam? Possa ser que tb precise incluir dados em campos os quais não estão no form....


Lenasi

Lenasi

Responder

Posts

28/08/2009

.lg.

Quais componentes você está usando?
ClientDataSet, DataSetProvider, Query? ADO? DBE? DBX?

O campo é inteiro!?


Responder

Gostei + 0

28/08/2009

Lenasi

Quais componentes você está usando? ClientDataSet, DataSetProvider, Query? ADO? DBE? DBX? O campo é inteiro!?


TSQLDATASET, DATASETPROVIDER E TCLIENTDATASET


Responder

Gostei + 0

28/08/2009

.lg.

[b:e502bce689]TDataSetProvider[/b:e502bce689]
Propriedade Option
deixe True em [color=blue:e502bce689]poAllowCommandText[/color:e502bce689]
if (ClientDataSet1.ChangeCount > 0) then 
    ClientDataSet1.ApplyUpdates(-1);

Não testei mas acho que vai.


Responder

Gostei + 0

28/08/2009

Lenasi

[b:3d8b3cc80b]TDataSetProvider[/b:3d8b3cc80b] Propriedade Option deixe True em [color=blue:3d8b3cc80b]poAllowCommandText[/color:3d8b3cc80b]
if (ClientDataSet1.ChangeCount > 0) then 
    ClientDataSet1.ApplyUpdates(-1);
Não testei mas acho que vai.


OLÁ AMIGO O QUE QUER DIZER (-1) E ChangeCount > 0?


Responder

Gostei + 0

28/08/2009

.lg.

O ClientDataSet grava quantas mudaças foram feitas em relação ao estado original. então...
if (ClientDataSet1.ChangeCount > 0) then 
Assim você tem um ´senão´. ´Se não tiver mudanças, não da o apply.´ ;)
O ´-1´ significa que você vai dizer ao ClientDataSet que não há limites de número de erros.
Pode deixar ´0´ para não mostrar nenhum erro, caso vá acontecer algum.


Responder

Gostei + 0

28/08/2009

Lenasi

O ClientDataSet grava quantas mudaças foram feitas em relação ao estado original. então...
if (ClientDataSet1.ChangeCount > 0) then 
Assim você tem um ´senão´. ´Se não tiver mudanças, não da o apply.´ ;) O ´-1´ significa que você vai dizer ao ClientDataSet que não há limites de número de erros. Pode deixar ´0´ para não mostrar nenhum erro, caso vá acontecer algum.


Blz, mas onde isso vai resolver a minha questão?


Responder

Gostei + 0

28/08/2009

.lg.

[b:c0dcf3bc76]TDataSetProvider[/b:c0dcf3bc76] Propriedade Option deixe True em [color=blue:c0dcf3bc76]poAllowCommandText[/color:c0dcf3bc76]
if (ClientDataSet1.ChangeCount > 0) then 
    ClientDataSet1.ApplyUpdates(-1);
Não testei mas acho que vai.

Já o fez? e mando o apply?


Responder

Gostei + 0

28/08/2009

Lenasi

[quote:cce864a439=´.lg.´][b:cce864a439]TDataSetProvider[/b:cce864a439] Propriedade Option deixe True em [color=blue:cce864a439]poAllowCommandText[/color:cce864a439]
if (ClientDataSet1.ChangeCount > 0) then 
    ClientDataSet1.ApplyUpdates(-1);
Não testei mas acho que vai.

Já o fez? e mando o apply?[/quote:cce864a439]


FIZ SIM!!!
MAS SENDO SINCERO NÃO ENTENDI O RESULTADO...
NÃO VI DIFERENÇA...

DEBUGUEI A APLICAÇÃO E NO MOMENTO DO APPLY ELE PULOU ESTA LINHA... NÃO ENTENDI, MAS O REGISTRO FOI GRAVADO....

O CAMPO CONTINUOU NULL...


Responder

Gostei + 0

28/08/2009

.lg.

o valor do changecount era 0?
se for vc nem alterou nada na memoria.
Não há nenhum tratamento que esteja voltando o valor?


Responder

Gostei + 0

28/08/2009

Lenasi

Olá Amigo.

Resolvi deixar mesmo com Triggers....
Obrigadão....


Responder

Gostei + 0

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

Aceitar