Estrutura programa... DBExpress!

Delphi

11/05/2006

Gostaria de uma opinião a respeito da estrutura...
Estou usando DBExpress da seguinte maneira...
SQLConnection
SQLDataSet+DataSetProvider+ClientDataSet+DataSource - Para Cadastro
SQLDataSet+DataSetProvider+ClientDataSet+DataSource - Para Consulta

Em cada tabela estou utilizando essa estrutura...

Isso é recomendado??? Tanto faz?? Ou o ideal é utilizar apenas um?
SQLDataSet+DataSetProvider+ClientDataSet+DataSource - Para Cadastro e Consulta.


Se alguém puder esclarecer ficaria grato...

Obrigado!


Slipkorn

Slipkorn

Curtidas 0

Respostas

Eselvati

Eselvati

11/05/2006

Amigo, eu particularmente utilizo somente um componente para consulta e inserções/alterações/exclusões, funciona perfeitamente...imagino se tiver q ter dois conjuntos de 4 componentes para cada tabela, nao havera datamodulo que aguente aquele monte de componentes pendurados...


use a propriedade allowcommandtext do datasetprovider, para que na aplicacao cliente vc consiga mudar o commandtext do clientdataset...possibilitando as consultas


Ederson Selvati


GOSTEI 0
Slipkorn

Slipkorn

11/05/2006

eselvi,

Segundo sua sugestão modifiquei a estrura para apenas: SQLDataSet+DataSetProvider+ClientDataSet+DataSource


Só que agora estou tendo problema nas tabelas que possuem chave estrangeira...
Em tabelas que não possuem chave estrangeira... está funcionando tudo perfeitamente (consultar,inserir,editar).
Agora em tabelas que possuem chave estrangeira a alteração da erro... consigo inserir e consultar normal mais editar não!

SQLDataSet+DataSetProvider+ClientDataSet+DataSource

SQLDataSet
Código:
select
PRODUTOR.*,
CIDADE.NOME_CIDADE
from
PRODUTOR
inner join
CIDADE on (PRODUTOR.COD_CIDADE = CIDADE.COD_CIDADE)
where
PRODUTOR.COD_PRODUTOR = :CODIGO


Para editar o registro uso apenas: dm.cdsProdutor.Edit;

E para salvar uso o dm.cdsProdutor.Post; aqui aparece o erro na modificação do registro!

Erro:
Código:
EDatabaseError ´DBX Error: No Mapping for Error Code Found´


Tem alguma idéia do que pode estar errado?

Ah... no AfterPost estou usando

Código:
if (DataSet as TClientDataSet).ApplyUpdates(0) <> 0 then
raise EDataBaseError.Create(Exception(exceptobject).Message)
else
(DataSet as TClientDataSet).Refresh;


Por favor se alguém puder ajudar!

Obrigado


GOSTEI 0
POSTAR