Data controls/DbGrid
Amigos,
Boa tarde.
Parece uma pergunta bem básica, mas não sei... rs.. :)
Vamos lá, coloquei um DbGrid no form, fiz todas as conexões e já está exibindo os resultados...ok
Abaixo, tenho alguns DbEdits, que gostaria da ajuda de vocês para saber como fazer para quando selecionar algum registro no grid, e clicar no botão ALTERAR, aparecer o registro para edição nos DbEdits localizados abaixo do DbGrid.
agradeço desde já!
Boa tarde.
Parece uma pergunta bem básica, mas não sei... rs.. :)
Vamos lá, coloquei um DbGrid no form, fiz todas as conexões e já está exibindo os resultados...ok
Abaixo, tenho alguns DbEdits, que gostaria da ajuda de vocês para saber como fazer para quando selecionar algum registro no grid, e clicar no botão ALTERAR, aparecer o registro para edição nos DbEdits localizados abaixo do DbGrid.
agradeço desde já!
Fernando Ramos
Curtidas 0
Respostas
Wilson Junior
12/07/2010
Nos DBEdits você preenche as propriedades:
- DataSource -> com o mesmo DataSource que está no DBGrid;
- DataField -> com o nome do campo da tabela.
Depois, ao clicar no botão alterar e colocar o registro em modo de edição (Edit).
Qualquer coisa é só perguntar.
Espero ter colaborado.
- DataSource -> com o mesmo DataSource que está no DBGrid;
- DataField -> com o nome do campo da tabela.
Depois, ao clicar no botão alterar e colocar o registro em modo de edição (Edit).
Qualquer coisa é só perguntar.
Espero ter colaborado.
GOSTEI 0
Fernando Ramos
12/07/2010
Wilson,
Boa noite.
Fiz conforme orientado e funcionou, mas não como eu queria.
Estou setando o DATAFIELD dos DbEdits via código, no evento Activate do form. Assim como ativando o AdoQuery neste mesmo evento.
Assim, quando percorro os itens do DbGrid, automaticamente já vai preenchendo os DbEdits e ao passar por todos os DbEdits o registro é salvo. Eu gostaria que preenchesse os DbEdits apenas quando clicasse no botão ALTERAR e salvasse apenas quando eu clicasse no botão OK.
É possível? Abraços!
Boa noite.
Fiz conforme orientado e funcionou, mas não como eu queria.
Estou setando o DATAFIELD dos DbEdits via código, no evento Activate do form. Assim como ativando o AdoQuery neste mesmo evento.
Assim, quando percorro os itens do DbGrid, automaticamente já vai preenchendo os DbEdits e ao passar por todos os DbEdits o registro é salvo. Eu gostaria que preenchesse os DbEdits apenas quando clicasse no botão ALTERAR e salvasse apenas quando eu clicasse no botão OK.
É possível? Abraços!
GOSTEI 0
Wilson Junior
12/07/2010
Bom, tem diversas maneiras de serem feitos.
- invisibilizar os DBEdits;
- somente atribuir as propriedades que citei no tópico anterior somente quando clicar no botão "Alterar" e retirá-las ao clicar no botão "Ok".
Existem várias formas.
Espero ter colaborado.
- invisibilizar os DBEdits;
- somente atribuir as propriedades que citei no tópico anterior somente quando clicar no botão "Alterar" e retirá-las ao clicar no botão "Ok".
Existem várias formas.
Espero ter colaborado.
GOSTEI 0
Fernando Ramos
12/07/2010
Bom dia.
É também pensei nisso, apenas habilitar os DbEdits quando clicar no botão alterar. Acho que isso resolve o problema.
Agora, percebi que ele salva o registro quando saio do último DbEdit. Tem como evitar isso? Gostaria de salvar clicando no botão OK, dando um "POST". É possível?
abraços!
É também pensei nisso, apenas habilitar os DbEdits quando clicar no botão alterar. Acho que isso resolve o problema.
Agora, percebi que ele salva o registro quando saio do último DbEdit. Tem como evitar isso? Gostaria de salvar clicando no botão OK, dando um "POST". É possível?
abraços!
GOSTEI 0
Wilson Junior
12/07/2010
No DBGrid, na propriedade Options, marque dgEditing=False.
Espero ter colaborado.
Espero ter colaborado.
GOSTEI 0
Fernando Ramos
12/07/2010
Boa tarde.
Mesmo com essa opção, ao sair do último DbEdit ele salva o registro!
Mesmo com essa opção, ao sair do último DbEdit ele salva o registro!
GOSTEI 0
Wilson Junior
12/07/2010
Você está fazendo algo para setar o foco para algum outro registro, ou algum código de gravação?
GOSTEI 0
Fernando Ramos
12/07/2010
Não.
Vou postar tudo q estou fazendo:
Objetos no form:
1 DBGRID (GrdUsuarios)1 ADOCONNECTION (ConUsuarios)1 ADOQUERY (QryUsuarios)1 DATASOURCE (DsUsuarios)2 DBESDITs (TxtLogin e TxtNome)2 BITBTNS (BtnAlt e BitBtn1)No OnActivate do form:
No OnClick do BtnAlt:
No OnClick do BitBtn1
Via Object Inspector, defino as seguintes propriedades:
TxtLogin:
- DataSource: DsUsuarios
TxtNome:
- DataSource: DsUsuarios
GrdUsuarios:
- DataSource: DsUsuarios
- Options:
dgEditing: False;
dgColumnResize: False;
dgRowSelect: True;
Vou postar tudo q estou fazendo:
Objetos no form:
1 DBGRID (GrdUsuarios)1 ADOCONNECTION (ConUsuarios)1 ADOQUERY (QryUsuarios)1 DATASOURCE (DsUsuarios)2 DBESDITs (TxtLogin e TxtNome)2 BITBTNS (BtnAlt e BitBtn1)No OnActivate do form:
ConUsuarios.ConnectionString := ..... ConUsuarios.Connected := true; QryUsuarios.SQL.ADD(...); QryUsuarios.Active := true; QryUsuarios.open;
No OnClick do BtnAlt:
TxtLogin.DataField := '...'; TxtNome.DataField := '...'; QryUsuarios.Edit;
No OnClick do BitBtn1
QryUsuarios.Post;
Via Object Inspector, defino as seguintes propriedades:
TxtLogin:
- DataSource: DsUsuarios
TxtNome:
- DataSource: DsUsuarios
GrdUsuarios:
- DataSource: DsUsuarios
- Options:
dgEditing: False;
dgColumnResize: False;
dgRowSelect: True;
GOSTEI 0
Wilson Junior
12/07/2010
Quando sai do último DBEdit o foco do cursor vai para qual componente? Está sendo feito alguma coisa no evento OnExit do DBEdit?
GOSTEI 0
Fernando Ramos
12/07/2010
Não existe nada no OnExit do último DbEdit.
Após sair deste último DbEdit... ele retorna para o botão Alterar.....
Após sair deste último DbEdit... ele retorna para o botão Alterar.....
GOSTEI 0
Fernando Ramos
12/07/2010
Atualização...
Quando saio do último DbEdit ele apenas atualiza no DBGRID e não salva no banco...se fechar e entrar novamente no Form não salvou....
Quando saio do último DbEdit ele apenas atualiza no DBGRID e não salva no banco...se fechar e entrar novamente no Form não salvou....
GOSTEI 0
Wilson Junior
12/07/2010
O DBGrid sempre será atualizado, caso você queira gravar, use o comando POST, mas para não gravar, utilize o CANCEL e ele não efetuará nenhuma alteração, mas o DBGrid sempre vai estar preenchido com o valor atual, mesmo estando em modo de edição. Entendeu?
GOSTEI 0
Fernando Ramos
12/07/2010
Tem como o DbGrid aparecer atualizado apenas depois do POST? Pq isso pode confundir o usuário assim como me confundiu. Como trata-se apenas de dois campos...ao sair do DbEdit os valores são alterados inicialmente no Grid... logo...parece que já foi efetuada a alteração tb no Grid!
GOSTEI 0
Wilson Junior
12/07/2010
Não sei se tem, pois isto é padrão do componente.
Quando o DataSource é atualizado, todos os componentes ligado a ele serão atualizados automaticamente.
O que lhe sugiro é pintar a linha do registro quando a mesma estiver em modo de edição, assim ele saberá que está em edição. Lembrando que existe no DBGrid.Options o dgIndicator, para indicar o status.
Qualquer coisa é só perguntar.
Espero ter colaborado.
Quando o DataSource é atualizado, todos os componentes ligado a ele serão atualizados automaticamente.
O que lhe sugiro é pintar a linha do registro quando a mesma estiver em modo de edição, assim ele saberá que está em edição. Lembrando que existe no DBGrid.Options o dgIndicator, para indicar o status.
Qualquer coisa é só perguntar.
Espero ter colaborado.
GOSTEI 0
Fernando Ramos
12/07/2010
Ok, ajudou muito. Obrigado!
GOSTEI 0