GARANTIR DESCONTO

Fórum Atulizando BD com (ClientDataSet Dbgrid) e 3 Camadas. #288460

18/07/2005

0

Pessoal sou iniciante em componentes Data e gostaria da ajuda de vcs !

Meu cenário é o sequinte. Tenho uma aplicação 3 camadas onde no meu servidor tenho um SqlConnection apontando para um banco Oracle. Depois tenho um sqlDataSet(dbExpress) com o sequinte comandText:

´SELECT COD_SEG_RESU,
DATA_INI_VIGEN,
DATA_FIN_VIGEN,
VLR_MIN,
VLR_MAX,
VLR_TOLERANCIA,
IES_APROV_TOLERANCIA
FROM STC_FT_DETALHE
WHERE COD_ANALISE = :V_COD_ANALISE
AND COD_SEQ_FT = :V_COD_SEQ_FT
AND COD_FT = :V_COD_FT
ORDER BY COD_SEG_RESU´

Este ClientDataSet esta ligado em um DataSetProviding.

Na aplicação cliente tenho um ClientDataSet que aponta para o DataSetProvindig acima. Depois tenho um dataSource que aponta para esse ClientDataSet.
Ai coloquei um DbGrid apontando para este data source. Trago os registros normalmente.
O problema é que quando eu altero o dbgrid ela não atualiza o meu banco de dados. faço da sequinte forma no botão gravar

procedure TCAQ_MAN014.actOkExecute(Sender: TObject);
begin
ClientDataSet.Post;
ClientDataSet.ApplyUpdates(0);
end;

Alguém poderia me ajudar pro favor ?


Mascotepc

Mascotepc

Responder

Posts

18/07/2005

Titanius

Amigo,

Ele não grava
1- no banco depois que você clica no OK?
ou
2- Depois que você muda no Grid?

No caso:

2- Não mudará, pois ainda não foi no banco de dados e deu o Commit

1- Se não tiver gravando, com certeza está ocorrendo erro, faz o seguinte: Insere um ReconcileError e aponta ele pro CDS, que se tiver algum erro ele exibirá pra você.




[]s


Responder

Gostei + 0

18/07/2005

Mascotepc

Consequi resolver aqui mais não gostei do que vi !

O banco não estava atualizando porque no sql do commandText eu não tava colocando na clausula Select os campos chaves da tables, eu estava utilizando eles somente na clausaula where.

Será que não tem como fazer sem selecionar os campos chaves da tabela ?


Responder

Gostei + 0

18/07/2005

Titanius

Em 3 camadas, vc deve informar as Chaves da tabela, no proprio editor de campos do CDS, caso vc nao queira desmarque Key nos campos chaves, porem eh certeza de erro..

[]s


Responder

Gostei + 0

18/07/2005

Mascotepc

Agora fiz um Join desta tabela que estava atualizando com outra tabela para trazer a descrição de um código. Resultado : Parou de atualizar !

Segunda feria é bom né !


Responder

Gostei + 0

18/07/2005

Titanius

hehe, segunda-feira é braba mesmo :D

Seguinte, se você está trazendo algum campo de qualquer tipo de join, você deverá ir no editor de Campos do CDS, e selecionar os campos que você está trazendo, e no UpdateFlags, deixar [b:8445a84007]tudo desmarcado[/b:8445a84007].


[]s


Responder

Gostei + 0

19/07/2005

Mascotepc

Quando você diz UpdateFlags você quer dizer nos ProvideFlags ? Pesrgunto isso porque não achei essa propriedade UpdateFlags no editor de Campos do CDS. Desmarquei tudo no ProvidersFlags e ainda não funcionou !

O que será ?


Responder

Gostei + 0

19/07/2005

Titanius

Realmente era o ProviderFlags.. :d sorry..

Você inseriu o REconcileErrorDialog ? Se não, faça-o, pois assim ele lhe dará o erro, e fica mais fácil descobrirmos :D


[]s


Responder

Gostei + 0

19/07/2005

Mascotepc

Desculpe a minha ignorância, mais onde fica esse Componente REconcileErrorDialog ? Procurei aqui nas palhetas da minha IDE e não achei !


Responder

Gostei + 0

19/07/2005

Titanius

beleza..

1- Vá ao menu File, New, Other
2- Na aba Dialog, selecione Reconcile Error Dialog, lá em baixo, deixe marcado o Radio COPY..

3- Feito, isso salve a unit do reconcile.. vá ao Form que tem o CDS, e adicione a unit ao uses do Form..

4- Vá no CDS, e no OI, vá em Event, e lá em baixo tem o Evento OnReconcileError... clique nele e insira o código abaixo:
  Action := HandleReconcileError(DataSet, UpdateKind, E);


Pronto, compile e tente executar sua função normalmente, e ele lhe dará o erro..

[]s


Responder

Gostei + 0

19/07/2005

Mascotepc

Amigo, muito obrigado pelas dicas. Você me ajudou muito. Ulitilizei o REConcileErrorDialog e ele me deu o seguinte erro : ´Invalid Column Name´. Para resolver, além de ir no do Fields Editor do CDS, fui também no Fields Editor do sqlDataSet desmarcando tudo no ProviderFlags deste componente também. Ai funcionou !

Muito obrigado mais uma vez !

Marcelo.


Responder

Gostei + 0

19/07/2005

Titanius

Flow, no que precisa estamos aí!

[]s


Responder

Gostei + 0

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

Aceitar