Atualizar o grid de outra Tela Após inserir/alterar ou deletar - Delphi XE7
Olá sou iniciante em delphi e estou a quase seis meses programando nessa ferramente incrivel.
Estou desenvolvendo um sistema de clinicas e consultórios e estou implementando os primeiros códigos de inserir através do banco Firebird 2.5.1.
eu possuo duas telas:
a de cadastros que cadastrará e iniciará a alteração
a de gerenciamentos que mostrará os cadastros e a partir de seleção no grid irá iniciar a alteração
E tenho dois problemas:
* Estou inserindo porém para aparecer os dados no grid tenho que fechar as duas telas e reabrir a de gerenciamento. Como eu faço para ao incluir os dados caiam diretamente no grid desta tela de gerenciamento?
* como eu faço para carregar os cadastros do banco de inseri-los no campos da tela de cadastro levando em consideração que lá no banco a minha tabela chama-se CategProcedimentos e tem os campos id_categproced e categproced.
Me ajudem ai
Obrigado
Estou desenvolvendo um sistema de clinicas e consultórios e estou implementando os primeiros códigos de inserir através do banco Firebird 2.5.1.
eu possuo duas telas:
a de cadastros que cadastrará e iniciará a alteração
a de gerenciamentos que mostrará os cadastros e a partir de seleção no grid irá iniciar a alteração
E tenho dois problemas:
* Estou inserindo porém para aparecer os dados no grid tenho que fechar as duas telas e reabrir a de gerenciamento. Como eu faço para ao incluir os dados caiam diretamente no grid desta tela de gerenciamento?
* como eu faço para carregar os cadastros do banco de inseri-los no campos da tela de cadastro levando em consideração que lá no banco a minha tabela chama-se CategProcedimentos e tem os campos id_categproced e categproced.
Me ajudem ai
Obrigado
Thiago Santos
Curtidas 0
Respostas
Marcos P
01/06/2015
Thiago,
DBgrid... certo ?
Você tem um "Data Source" associado a grid na segunda tela, certo ?
Faça um teste simples... depois de gravar todos os dados, feche e reabra esse "Data Source" que alimenta a DBgrid.
Isso deve resolver seu problema !
Caso não resolva, nesse mesmo ponto, tente colocar um dbgrid.refresh ( ou algo do gênero ).
DBgrid... certo ?
Você tem um "Data Source" associado a grid na segunda tela, certo ?
Faça um teste simples... depois de gravar todos os dados, feche e reabra esse "Data Source" que alimenta a DBgrid.
Isso deve resolver seu problema !
Caso não resolva, nesse mesmo ponto, tente colocar um dbgrid.refresh ( ou algo do gênero ).
GOSTEI 0
Thiago Santos
01/06/2015
isso no evento do salvar no form de cadastros isso?
GOSTEI 0
Marcos P
01/06/2015
No local que você realiza a gravação / atualização dos registros...
Para testar, você pode até criar um botão para isso !
Para testar, você pode até criar um botão para isso !
GOSTEI 0
Thiago Santos
01/06/2015
não deu certo
GOSTEI 0
Cauê Nishijima
01/06/2015
Thiago se cada form tiver seu DataSet não tem jeito você tera que fazer uma nova consulta no Action do form, caso seja o mesmo DataSet que se encontra em um DataModule você pode dar apenas um Refresh no DataSet que deve funcionar.
Caso não funcione descreva melhor seu cenário.
E com relação a sua outra dúvida eu não entendi direito. Você quer fazer a pesquisa no banco de dados e o resultado popular no form? Só isso?
Caso não funcione descreva melhor seu cenário.
E com relação a sua outra dúvida eu não entendi direito. Você quer fazer a pesquisa no banco de dados e o resultado popular no form? Só isso?
GOSTEI 0
Thiago Santos
01/06/2015
não possuo o data module. possuo os componentes: o ib table, transaction, data base e o datasource é dentro da tela de cadastros.
na de gerenciamento tem o ibtable, ibdatabase, ibtransaction.
quero realizar um refresh que inserindo nos campos e cadastrando no banco ele aparecerá no grid sem precisar fechar.
quanto a outra duvida gostaria de fazer o seguinte o usuário está com a tela de gerenciamento aberta onde se encontram os cadastros como que faço para ao dar dois cliques no cadastro e os dados carregar do banco de dados e preencher os campos na tela de cadastro para alterar.
Como que eu faço isso em delphi pois em c# tem que criar um public void carregadados e no delphi como eu faço
obrigado a todos
na de gerenciamento tem o ibtable, ibdatabase, ibtransaction.
quero realizar um refresh que inserindo nos campos e cadastrando no banco ele aparecerá no grid sem precisar fechar.
quanto a outra duvida gostaria de fazer o seguinte o usuário está com a tela de gerenciamento aberta onde se encontram os cadastros como que faço para ao dar dois cliques no cadastro e os dados carregar do banco de dados e preencher os campos na tela de cadastro para alterar.
Como que eu faço isso em delphi pois em c# tem que criar um public void carregadados e no delphi como eu faço
obrigado a todos
GOSTEI 0
Thiago Santos
01/06/2015
consegui aparecer os dados após a inserção usei este codigo:
//confirma a inserção dos dados e abre e fecha a conexão e tabela na tela de gerenciamento de Cadastros
tblCategProcedimento.Transaction.Commit;
tblCategProcedimento.Close;
tblCategProcedimento.Open;
frmGCategProced.IBDatabase1.Connected := False;
frmGCategProced.IBDatabase1.Connected := True;
frmGCategProced.IBTable1.close;
frmGCategProced.IBTable1.open;
//mensagem de confirmação
ShowMessage('Categoria de Procedimento Cadastrada com Sucesso!!!');
//limpa os campos
edtIDCategProced.Clear;
edtNomeCategProced.Clear;
agora resta a segunda duvida como que eu carrego os dados do grid que estão no banco de dados para a tela de cadastro preenchendo os campos para eu começar a alterar
aguardo e obrigado
//confirma a inserção dos dados e abre e fecha a conexão e tabela na tela de gerenciamento de Cadastros
tblCategProcedimento.Transaction.Commit;
tblCategProcedimento.Close;
tblCategProcedimento.Open;
frmGCategProced.IBDatabase1.Connected := False;
frmGCategProced.IBDatabase1.Connected := True;
frmGCategProced.IBTable1.close;
frmGCategProced.IBTable1.open;
//mensagem de confirmação
ShowMessage('Categoria de Procedimento Cadastrada com Sucesso!!!');
//limpa os campos
edtIDCategProced.Clear;
edtNomeCategProced.Clear;
agora resta a segunda duvida como que eu carrego os dados do grid que estão no banco de dados para a tela de cadastro preenchendo os campos para eu começar a alterar
aguardo e obrigado
GOSTEI 0
Valsistemasdelphi
01/06/2015
Se eu entendi os Dados que estão No Grid e repassalos para Os Edits do Form Cadastro?
Tu Clicas No DbGrid No evento.... DBGrid1DrawColumnCel..Coloca este Código...
Exemplo: edit3.text := datasource1.dataset.fieldbyname('Cod_Produto').asstring;
Aqui e o Edit que vc quer que receba o valor do dbgrid que está armazenado no Banco. Entre aspas Simples e A referência que vc colocou no Banco.. Tem que ser exatamente o nome que vc Colocou no banco senão vai dar erro.. Ai e só colocar este Código para todos os Edits que vc tem no Form Cadastro...
Se for isso vai dar certo....
Tu Clicas No DbGrid No evento.... DBGrid1DrawColumnCel..Coloca este Código...
Exemplo: edit3.text := datasource1.dataset.fieldbyname('Cod_Produto').asstring;
Aqui e o Edit que vc quer que receba o valor do dbgrid que está armazenado no Banco. Entre aspas Simples e A referência que vc colocou no Banco.. Tem que ser exatamente o nome que vc Colocou no banco senão vai dar erro.. Ai e só colocar este Código para todos os Edits que vc tem no Form Cadastro...
Se for isso vai dar certo....
GOSTEI 0
Thiago Santos
01/06/2015
sim mais estou usando o string grid pois está tudo implementado para ele
e como fazer a ligação entre o edit do form cadastro e o grid do form gerenciamento
e como fazer a ligação entre o edit do form cadastro e o grid do form gerenciamento
GOSTEI 0
Valsistemasdelphi
01/06/2015
Tenta fazer Assim Thiago...FormGerenciamento.StringGrid1.Cells[1,0] := FormCadastro.Edit1.text;
GOSTEI 0
Thiago Santos
01/06/2015
mais na tela atual eu tenho dois campos e quando implementar para mais de dois campos é a mesma regra
GOSTEI 0
Thiago Santos
01/06/2015
GALERA ESTOU COM PROBLEMA DA ATUALIZAÇÃO DO GRID NA HORA DE ALTERAR
NÃO QUER ATUALIZAR O GRID ASSIM QUE ALTERA.
COMO EU REALIZADO.
NÃO QUER ATUALIZAR O GRID ASSIM QUE ALTERA.
COMO EU REALIZADO.
GOSTEI 0
Thiago Santos
01/06/2015
eu troquei o string grid para o db grid e agora não está atualizando em tempo de execução
os comandos inserir e alterar estão funcionando
mas não atualiza o db grid
me ajudem ai galera
os comandos inserir e alterar estão funcionando
mas não atualiza o db grid
me ajudem ai galera
GOSTEI 0
Marcos P
01/06/2015
Apenas como teste, depois de cada inserção / edição de registros... feche e reabra o componente que fornece os dados para a grid.
GOSTEI 0
Thiago Santos
01/06/2015
não deu certo ainda amigo
GOSTEI 0
Thiago Santos
01/06/2015
ele altera somente depois de fechar o sistema e abrir novamente.
tentei dar um transaction commit só que continua dando errado
tentei dar um apply updates também não deu certo
e é a unica coisa que falta para terminar o alterar é essa atualização do grid
outro problema é que apenas um arquivo está sendo carregado ao dar dois cliques no grid
se eu clico no cadastro 3 ele me abre os dados do 1 qualquer um que eu abrir, exibe os dados do cadastro 1
tentei dar um transaction commit só que continua dando errado
tentei dar um apply updates também não deu certo
e é a unica coisa que falta para terminar o alterar é essa atualização do grid
outro problema é que apenas um arquivo está sendo carregado ao dar dois cliques no grid
se eu clico no cadastro 3 ele me abre os dados do 1 qualquer um que eu abrir, exibe os dados do cadastro 1
GOSTEI 0
Daniel Thomaz
01/06/2015
tenta o seguinte depois que fizer o applyUpdates(0) coloca o seguinte codigo.
nao esqueca de trocar os nomes do componentes e declarar DBClient na uses.
boa sorte.
TClientDataSet(Form1.DataSoucer1.DataSet).refresh
nao esqueca de trocar os nomes do componentes e declarar DBClient na uses.
boa sorte.
GOSTEI 0
Thiago Santos
01/06/2015
não deu certo
não quer atualizar o grid após alterar só depois que eu fecho e abro o sistema que atualiza
não quer atualizar o grid após alterar só depois que eu fecho e abro o sistema que atualiza
GOSTEI 0