Fórum exibir os dados antes de salvar no BD - Delphi e e bd access #363644

10/09/2008

0

Bom dia,

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

Brenaox

Responder

Posts

10/09/2008

Adoniram

Vc pode inserir os valores direto no grid, sem necessidade do BD.
Para isso vc usa DataController.BeginUpdate e DataController.EndUpdate


Responder

Gostei + 0

10/09/2008

Brenaox

então posso inserir os dados de variáveis
cxGrid1TableView1.DataController.BeginUpdate;
cxGrid1TableView1Column1.Create....:=1;
cxGrid1TableView1.DataController.EndUpdate;


??????????w


Responder

Gostei + 0

10/09/2008

Adoniram

não.
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.


Responder

Gostei + 0

10/09/2008

Brenaox

Obrigada,
vou fazer assim, era isso q eu estou precisando.
inte


Responder

Gostei + 0

11/09/2008

Brenaox

Bom dia

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????????????????????


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar