Consulta usando SqlDataSet, DataSetProvider, ClientDataSet e DataSource

Delphi

04/05/2013

Bom dia pessoal, como faria uma consulta para mostrar no DBGrid? Estou usando SqlDataSet, DataSetProvider, ClientDataSet e DataSource.

Tentei fazer uma consulta usando um sqlDataSet e um DataSource, fiz um teste com SQLQuery mas deu o mesmo problema

Ta dando: Operation not allowed on a unidirectional dataset
Frederico Brigatte***

Frederico Brigatte***

Curtidas 0

Melhor post

Tomas Raponi

Tomas Raponi

05/05/2013

Frederico, faca o seguinte.
1. para conexao a uma tabela voce precisa dos componentes:
sqlquery (informar sqlconnection).
datasetprovider (informar sqlquery, e colocar true em poAloowCommandtext)
ClientDataSet (informar o ProviderName (datasetprovider).
Datasource( informar o clientdataset).
dbgrid (informar o Datasource).
Pronto..com isso voce tem a ligacao entre os componentes).

2. Para fazer uma consulta tipo Select Codigo, Nome, Endereco from Clientes voce faz o sequinte:
Coloca esse select na linha de CommandText do ClientDataset.

o seu codigo ficaria?
cdsclientes.close; (clientdataset).
cdsclientes.commandtext:='Select Codigo, Nome, Endereco from Clientes';
cdsclientes.open;

No seu DBGRID aparecerao as informacoes que voce quer.
Qualquer duvida manda email: tomas@guestori.com.br
GOSTEI 2

Mais Respostas

Marcos Morais

Marcos Morais

04/05/2013

Em Primeiro lugar, tenho que te dizer que esse erro é devido ao DbExpress Ser Unidirecional.
a Solução:

01- Você tem que mudar a propriedade DataSet do DataSetProvider para o nome do SqlDataSet;
02- Agora no ClientDataSet mude a propriedade ProviderName para o seu DataSetProvider;
03- Mude a Propriedade do DataSet seu DataSource para o ClientDataSet (um ponto interessante, nunca aponte o DataSource, para o SqlDataSet, pois o mesmo é unidirecional);
04- Feito isso, aponte a propriedade do seu dbgrid para o Seu DataSource.

No DbExpress é assim que se faz, espero ter ajudado. qualquer dúvida, estamos aqui.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

04/05/2013

Vamos supor que vou montar a consulta, não está feita. Tenho que usar mais um SqlDataSet?
GOSTEI 0
Marcos Morais

Marcos Morais

04/05/2013

A Consulta em SQL fica no SqlDataSet, você so precisa de um SQLData Set, e os outros componentes já citados, o DataSeProvider, o DataSource, e o ClientDataSet.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

04/05/2013

Espera um pouco, já tenho um SQLConnection, um SQLDataSet, um DataSetProvider, um ClientDataSet e um DataSource no DataModule, certo?

Não estou entendendo direito essa parte de Consulta.
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

04/05/2013

Esses componentes fazem a conexão, certo? Utilizo para Inserir, Editar e Excluir o ClientDataSet. Certo?
GOSTEI 0
Marcos Morais

Marcos Morais

04/05/2013

sim, isso mesmo, qual é então a sua dúvida?
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

04/05/2013

Ligo o Grid com o DataSource do ClientDataSet?
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

04/05/2013

Marcos, vc tem MSN?
GOSTEI 0
Frederico Brigatte***

Frederico Brigatte***

04/05/2013

Obrigado, Tomas, muito explicativo. Valeu.
GOSTEI 0
POSTAR