DataSetProvider - SQL
27/03/2006
0
Alguem sabe como capturar o código sql gerado pelo DataSetProvider quando é dado um ApplyUpdates?
Preciso saber qual a string UPDATE, INSERT que o DataSetProvider gera para fazer a gravação no Bando de Dados.
Agradecido,
Fabison
Fabilson
Posts
10/03/2008
Macario
estou com a mesma necessidade.
Alguem sabe como acessar??
Grato. :roll:
10/03/2008
Brunolspp
Tem uma aplicação somente sobre recursos do ClientDataSet, DataSetProvider e DBExpress4 que mostra como pegar através do SQLMonitor os comandos gerados e muita outras coisas interessantes.
http://cc.codegear.com/author/795118
Na próxima edição da revista Active Delphi vou iniciar uma série de 3 matérias sobre recursos e segredo do clientdataset para aplicar no nosso dia a dia do desenvolvimento. Baseado neste exemplo que falei, que também foi a mesma base da minha palestra no BorCon 2007.
No http://dn.codegear.com/br na seção do Delphi Day OnLine, tem uma video aula gratuita minha sobre DBExpress 4 mostrando com fazer trace na prática de comandos SQL e na verdade qualquer comando entre a aplicação e o banco de dados utilizando DBExpress 4.
10/03/2008
Macario
Agradeço a sua atenção.
Esqueci de citar que uso ADO (o padrao aqui é dbExpress), por este fato não posso utilizar o SQLMonitor.
A chamada inicial para a montagem do ´SQL gerado´ é a procedure
TSQLResolver.InternalDoUpdate da Unit Provider.
Estou com problemas na instrução de Insert.
So esta incluindo um unico campo na instrução.
Ate o momento nao encontrei o motivo do erro.
Os providerflags estão Ok.
É a primeira vez que faço uso em conjunto:
ADODataset + DSP+CDS+DTS
To aqui na tentativa e erro.
Qualquer dica eu aceito.
8)
11/03/2008
Brunolspp
Um dos modelos ideais seria adicionar os campos no adodataset, definir atraves do providerflags quem é o campo chave e colocar no updatemode do datasetprovider upwherekeyonly.
Na hora da inclusão, existe algum erro? Alguma mensagem?
No mesmo link que passei tem exemplos de uso de DataSnap com ADO.
11/03/2008
Macario
Esta é a instrução do ADODataset
select a.nr_dupli, a.nr_parc, a.nr_seq, a.dt_ocorr, a.dt_digit, a.cd_tpmovdupl, a.ds_obs, a.vl_ocorr, a.cd_banco, a.nr_procmult, a.cd_usuario, a.cd_banco_deposito, a.cd_tipo_pagto, a.fl_anulado, a.fl_pendente, a.fl_cobreletr, a.cd_usuario_liberacao, C.DS_TPMOVDUPL, D.DS_TIPO_PAGTO, E.DS_BANCO, isNull(F.DS_BANCO,´Caixa´) as BANCO_DEPOSITO from DUPLI_OCORR A inner join TP_MOVDUPL C on (A.CD_TPMOVDUPL = C.CD_TPMOVDUPL) left join TIPO_PAGTO D on (A.CD_TIPO_PAGTO = D.CD_TIPO_PAGTO) left join BANCO E on (A.CD_BANCO = E.CD_BANCO) left join BANCO F on (A.CD_BANCO_DEPOSITO = F.CD_BANCO) where A.NR_DUPLI = 42968 and A.NR_PARC = 1 order by A.NR_SEQ
Os campos estão adicionados tanto no ADODataset quanto no CDS, os campos chaves são: NR_DUPLI E NR_PARC com [pfinfUpdate,pfInfWhere, pfInfKey]
os demais campos com ALIAS A. estão apenas com [pfInfUpdate]
e os demais com [pfinfUpdate,pfInfWhere, pfInfKey] = false.
O DSP esta com upwherekeyonly.
a procedure
[b:1e054c0526]procedure TSQLResolver.GenInsertSQL(Tree: TUpdateTree; SQL: TStrings;
Params: TParams);[/b:1e054c0526]
monta a instrução de insert apenas com o campo [b:1e054c0526]cd_tpmovdupl[/b:1e054c0526]
Ainda nao consegui identificar onde esta o erro.
Sigo a procura :roll:
11/03/2008
Brunolspp
Está realmente me parecendo problema de configuração.
11/03/2008
Macario
ta funcionando.
Ja revi toda a config. e ate agora nada.
Vou apelar e remover todas referencias e incluir um novo jogo.
:roll:
Clique aqui para fazer login e interagir na Comunidade :)