Fórum Atulizando BD com (ClientDataSet Dbgrid) e 3 Camadas. #288460
18/07/2005
0
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
Curtir tópico
+ 0Posts
18/07/2005
Titanius
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
Gostei + 0
18/07/2005
Mascotepc
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 ?
Gostei + 0
18/07/2005
Titanius
[]s
Gostei + 0
18/07/2005
Mascotepc
Segunda feria é bom né !
Gostei + 0
18/07/2005
Titanius
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
Gostei + 0
19/07/2005
Mascotepc
O que será ?
Gostei + 0
19/07/2005
Titanius
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
Gostei + 0
19/07/2005
Mascotepc
Gostei + 0
19/07/2005
Titanius
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
Gostei + 0
19/07/2005
Mascotepc
Muito obrigado mais uma vez !
Marcelo.
Gostei + 0
19/07/2005
Titanius
[]s
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)