Fórum exibir os dados antes de salvar no BD - Delphi e e bd access #363644
10/09/2008
0
Estou precisando de uma ajuda, calculei os dados e tenho armazenado no StringList mas para exibir esses dados pelo cxGrid leve do componente Dev Express preciso salvar esses dados no banco??
Quero exibir e depois deixar para o usuário decidir de ele quer salvar no banco de dados.
Consegui exibir direto do banco de dados, mas quero exibir antes que salve, mas não sei que componente usar para armazenar esses dados temporários(antes de passar para o BD).
Para exibir direto do BD usei o ADOConect e ADODataSet.
Brenaox
Curtir tópico
+ 0Posts
10/09/2008
Adoniram
Para isso vc usa DataController.BeginUpdate e DataController.EndUpdate
Gostei + 0
10/09/2008
Brenaox
cxGrid1TableView1.DataController.BeginUpdate;
cxGrid1TableView1Column1.Create....:=1;
cxGrid1TableView1.DataController.EndUpdate;
??????????w
Gostei + 0
10/09/2008
Adoniram
Vc cria sua coluna em designtime e depois edita.
Reli a sua dúvida e na verdade você precisa persisitir esses dados em memória, permitir a validação do usuário e só depois disso vc jogar no banco de dados. Para isso você pode usar um clientdataset. Ele vai ser uma tabela em memória onde vc pode manipular seus dados antes de gravar efetivamente no BD.
Espero ter ajudado.
Gostei + 0
10/09/2008
Brenaox
vou fazer assim, era isso q eu estou precisando.
inte
Gostei + 0
11/09/2008
Brenaox
Fiz como me sugeriu,
desse jeito
coloque:
2 - SQLDataSet
3 - DataSource
1 - Provider
2 - ClientDataSet
1 - No SQLDataSet(Meste) na propriedade ´commandtext´ coloque sua instruçao SQL normalmente como e feito hoje.
2 - No SQLDataSet(Detalhe) na propriedade ´CommandText´ coloque sua instruçao SQL com um diferencia, coloque a clausula ´WHERE´
where codigo_FK = :codigo_PK
Obs.: o nome do parametro tem que ser igual a o nome da chave primaria da tabela Master.
isso vai fazer com que o seu SQLDataSet(Detalhe) saiba sempre que ele esta ligado ao seu SQLDataSet(Mestre).
3 - No SQLDataSet(Detalhe) na propriedade Params observe que ele passa a ter o parametro
params = codigo_PK
4 - Pegue agora um DataSource e ligue-o ao SQLDataSet(Mestre) em seguida ligando tambem o DataSetProvider ao SQLDataSet
5 - No SQLDataSet(Detalhe) ligue-o na propriedade DataSource ao DataSource que voce acabou de liga-lo ao SQLDataSet(Mestre)
6 - Faça a inclusao de todos os fields em ambos os SQLDataSet
7 - No ClientDataSet(Mestre) na propriedade ProviderName ligue-o normalmente ao DataSetProvider e faça a inclusao de todos os fields.
Observe que ele ira incluir um novo field diferente dos demais.
8 - No ClientDataSet(Detalhe) na propriedade ProviderName voce deixara ela em branco e ira colocar na propriedade DataSetFields o valor apresentado, apos feito isso faça a inclusa de todos os fields.
9 - ligue um DataSource ao ClientDataSet(Mestre) e ligue o outro DataSource ao ClientDataSet(Detalhe)
pronto esta configurado um mestre detalhe...
a vantagem e que voce nao necessita habilitar o ClientDataSet(Detalhe) como ele ja esta interligado ao Mestre basta fazer todos os processo no Mestre que ira se aplicar tambem ao Detalhe, como Cancel, ApplyUpdates entre outros.
10 - por ultimo, basta voce colocar no evento (OnNewRecord) do ClientDataSet(Detalhe) para que o campo ´codigo_FK´ receba sempre o valor do ´Codigo_PK´
e pronto...
Assim deu tudo certo mas agora estou tentando fazer o mesmo continuando, depois disto
O detalhe deste q criei é o mestre.
Fiz tudo de novo nesta condição mas neste passo 8 - No ClientDataSet(Detalhe) na propriedade ProviderName voce deixara ela em branco e ira colocar na propriedade DataSetFields o valor apresentado, apos feito isso faça a inclusa de todos os fields.
não apareceu o valor na propriedade DataSetFields ai nao deu certo
O que estou fazendo errado????????????????????
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)