exibir os dados antes de salvar no BD - Delphi e e bd access
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.
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
Curtidas 0
Respostas
Adoniram
10/09/2008
Vc pode inserir os valores direto no grid, sem necessidade do BD.
Para isso vc usa DataController.BeginUpdate e DataController.EndUpdate
Para isso vc usa DataController.BeginUpdate e DataController.EndUpdate
GOSTEI 0
Brenaox
10/09/2008
então posso inserir os dados de variáveis
cxGrid1TableView1.DataController.BeginUpdate;
cxGrid1TableView1Column1.Create....:=1;
cxGrid1TableView1.DataController.EndUpdate;
??????????w
cxGrid1TableView1.DataController.BeginUpdate;
cxGrid1TableView1Column1.Create....:=1;
cxGrid1TableView1.DataController.EndUpdate;
??????????w
GOSTEI 0
Adoniram
10/09/2008
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.
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
Brenaox
10/09/2008
Obrigada,
vou fazer assim, era isso q eu estou precisando.
inte
vou fazer assim, era isso q eu estou precisando.
inte
GOSTEI 0
Brenaox
10/09/2008
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????????????????????
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