Vou descrever aki os passo  que estão mais bem detalhados na apostila q
indiquei no meu link de downloads gratuitos em
http://cc.codegear.com/Author/795118

 

Passo 1: Definir acesso ao banco de dados – DBExpress

Componente: SQLConnection

 

Acesso a dados e manipulação de dados:

SQLDataSet – DataSet unidirecional onde vc coloca seu comando SQL inclusive
com os parâmetros.

DataSetProvider – Responsavel por exportar datasets a serem manipulados pleo
ClientDataSet e reponsavel de gerenciar as requisições recebidas do
clientdataset e montar os deltas de atualização no banco qdo
necessário(insert, delete, update). Esta se conecta ao SqlDataSet neste
caso(pq ele pode se conectar a qq dataset).

ClientDataSet – A oitava maravilha do mundo, responsável por consumir um os
datasetprovider e mtas outras funcionalidades. Neste caso se conecta ao
datasetprovider, nele vc obtem os parâmetros configurados no sqldataset
através do método fecth params(clicando com  o bt direito). Pode se
adicionar os campos Tb como objetos no Field editor.

 

Esta é a configuração básica pra se manipular dados, o restante e vc colocar
o datasource conectado no clientdataset e os controles dataware(dbedit,
dbgrid..etc) conectados ao datasource. Lembrando q naume stou abordando
performance aki usando provider flags e updatemode e outras coisinhas
altamente necessárias, porem eu levaria mto tempo pra escrever o email. Em
tempo, vcs encontram isso td perfeitamente implementado e documentado no meu
exemplo do Borland conference brazil 2006 no mesmo link de downloads.

 

Passo 2 – configuração

 

SQL – liga no sqlconnection e define o comandtext: SELECT CONTROLE .CAMPO,
CONTROLE .VALOR FROM CONTROLE WHERE CONTROLE.CAMPO LIKE :CAMPO,

Define o parâmetro campo como ftstring

DSP – liga no SQL.

CDS – liga no DSP, faz o fetch params, adiciona os campos.

DS – Liga no CDS

DBGrid – Liga no DS

 

Comando do botão pra consultar:

 

CDS.Close;

CDS.Params[0].Asstring := Edit1.text + ‘%’;

CDS.Open;

 

Comando pra aplicar as alteracoes:

CDS.Applyupdates(0);

 

Assim q funciona o fundamental. A nível de performance e mtas outras coisas
faltariam aki ainda pra falar, mas no exemplo do borcon 2006 esta mto bem
exemplificado e detalhado.

 

As ordens para o q precisarem

 

Abraços,

 

Bruno Lichot

CodeGegar Product Evangelist

 

http://www.codegear.com

http://cc.codegear.com/Author/795118

 

 

De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em
nome de Ricardo César Cardoso
Enviada em: sexta-feira, 27 de abril de 2007 11:15
Para: delphi-br@yahoogrupos.com.br
Assunto: Re: RES: [delphi-br] Problemas com ClientDataSet e DBGrid

 

Caro Bruno.

Obrigado pela sua resposta. Mas tenho que fazer o que, onde? A princípio eu
faço a consulta/instrução SQL no TSQLQuery e como o TClientDataSet está
ligado a um TDataSetProvider que está ligado ao TSQLQuery, supõe-se que tudo
deva funcionar apenas fechando o TSQLQuery e TClientDataSet; atualizando o
parâmetro da minha consulta/instrução SQL e abrindo novamente, não?

Sds,
Ricardo.

Bruno Lichot <[EMAIL PROTECTED] <mailto:blichot%40softpark.com.br> >
escreveu: Tem q fazer isso no clientdataset e naum no sqldataset.

Pega a postila como te falei por que ele é passo a passo e mostra como fazer
isso.

Abs

BL

De: delphi-br@yahoogrupos.com.br <mailto:delphi-br%40yahoogrupos.com.br>
[mailto:delphi-br@yahoogrupos.com.br <mailto:delphi-br%40yahoogrupos.com.br>
] Em
nome de Ricardo César Cardoso
Enviada em: sexta-feira, 27 de abril de 2007 09:35
Para: delphi-br@yahoogrupos.com.br <mailto:delphi-br%40yahoogrupos.com.br> 
Assunto: Re: [delphi-br] Problemas com ClientDataSet e DBGrid

Primeiramente obrigado pela resposta, Rafael.

Realmente esta foi uma das primeiras medidas que tomei. Fecho o TSQLQuery
antes de pedir novos dados; atualizo o parametro de busca e reabro o
TSQLQuery. Até aqui tudo funciona bem, o problema é que o TClientDataSet não
reflete os dados do TSQLQuery.

Se mais alguém puder contribuir, ficamos agradecidos.

Sds,
Ricardo

Rafael Marques <[EMAIL PROTECTED]
<mailto:rafael.matriz%40terra.com.br> 
<mailto:rafael.matriz%40terra.com.br> > escreveu: eu ja passei por uma
situacao assim (nao sei se é exatamente a mesma solucao q pra sua), mas o q
fiz foi sempre fechar o SqlQuery antes de passar o parametro. Eu fecho e o
ClientDataset, passo o parametro e depois abro o clientdataset

eu fiz isso e funfo!!

----- Original Message ----- 
From: Ricardo César Cardoso 
To: delphi-br@yahoogrupos.com.br <mailto:delphi-br%40yahoogrupos.com.br>
<mailto:delphi-br%40yahoogrupos.com.br> 
Sent: Friday, April 27, 2007 8:44 AM
Subject: [delphi-br] Problemas com ClientDataSet e DBGrid

Bom dia amigos da lista, como vão?

Gostaria de uma ajuda de qualquer um que já passou por esta situação. Tenho
um DataModule onde entre outros componentes referentes a um determindado
módulo da minha aplicação tenho um TSQLQuery, um TDataSetProvider, um
TClientDataSet e um TDataSource ligados entre si e o TDataSource ligado a um
TDBGrid.

Dentro da aplicação existe uma rotina que faz uma busca parametrizada e traz
apenas os registros correspondentes para o TDBGrid (pelo menos faz em outros
módulos, somente neste que não faz). Para isto, montei a instrução SQL
dentro do TSQLQuery, algo que sempre faço, inclusive coloquei o parâmetro
dentro da própria SQL e configurei o parametro com seu tipo correto. Até
aqui nenhum problema.

Quando rodo a aplicação e chamo esta rotina, na primeira execução que faço,
os dados vem para o TDBGrid da maneira esperada, mas quando chamo novamente
esta rotina, os dados do TDBGrid continuam a ser referentes ao parâmetro
anterior.

Debugei a aplicação para ver se o parâmetro estava realmente sendo passado
da maneira correta (atualizada) e notei que tudo estava OK. Fiz mais um
teste para saber se o TSQLQuery estava fazendo a consulta que eu estava
pedindo. Novamente tudo estava OK, ou seja, a instrução SQL era executada e
os dados vinham para o TSQLQuery. Aí notei que o problema só poderia ser no
TClientDataSet. Tentei várias abordagens como fechar e abrir novamente o
TClientDataSet, fazer um "refresh" nele, mas nada resolveu. É como se o
TClientDataSet estivesse mantendo os dados em memória referentes a primeira
consulta executada, mesmo depois do TClientDataSet ser fechado e reaberto, e
do conjunto de dados ao qual ele deveria refletir ter mudado.

Alguém já passou por esta situação, e pode me dar alguma dica?

Sds,
Ricardo.

__________________________________________________
Fale com seus amigos de graça com o novo Yahoo! Messenger 
http://br.messenger.yahoo.com/ 

[As partes desta mensagem que não continham texto foram removidas]

----------------------------------------------------------
Esta mensagem foi verificada pelo E-mail Protegido Terra.
Scan engine: McAfee VirusScan / Atualizado em 26/04/2007 / Versão:
5.1.00/5018
Proteja o seu e-mail Terra: http://mail.terra.com.br/ 

[As partes desta mensagem que não continham texto foram removidas]

_

__________________________________________________
Fale com seus amigos de graça com o novo Yahoo! Messenger 
http://br.messenger.yahoo.com/ 

[As partes desta mensagem que não continham texto foram removidas]

__________ Informação do NOD32 IMON 2223 (20070427) __________

Esta mensagem foi verificada pelo NOD32 sistema antivírus
http://www.eset.com.br

[As partes desta mensagem que não continham texto foram removidas]



_

__________________________________________________
Fale com seus amigos de graça com o novo Yahoo! Messenger 
http://br.messenger.yahoo.com/ 

[As partes desta mensagem que não continham texto foram removidas]

 

__________ Informação do NOD32 IMON 2223 (20070427) __________

Esta mensagem foi verificada pelo NOD32 sistema antivírus
http://www.eset.com.br



[As partes desta mensagem que não continham texto foram removidas]

Responder a