GARANTIR DESCONTO

Fórum Data controls/DbGrid #381196

12/07/2010

0

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á!
Fernando Ramos

Fernando Ramos

Responder

Posts

12/07/2010

Wilson Junior

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.
Responder

Gostei + 0

12/07/2010

Fernando Ramos

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!
Responder

Gostei + 0

13/07/2010

Wilson Junior

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.
Responder

Gostei + 0

13/07/2010

Fernando Ramos

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!
Responder

Gostei + 0

13/07/2010

Wilson Junior

No DBGrid, na propriedade Options, marque dgEditing=False.

Espero ter colaborado.
Responder

Gostei + 0

13/07/2010

Fernando Ramos

Boa tarde.

  Mesmo com essa opção, ao sair do último DbEdit ele salva o registro!
Responder

Gostei + 0

13/07/2010

Wilson Junior

Você está fazendo algo para setar o foco para algum outro registro, ou algum código de gravação?
Responder

Gostei + 0

13/07/2010

Fernando Ramos

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:

      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;
Responder

Gostei + 0

13/07/2010

Wilson Junior

Quando sai do último DBEdit o foco do cursor vai para qual componente? Está sendo feito alguma coisa no evento OnExit do DBEdit?
Responder

Gostei + 0

13/07/2010

Fernando Ramos

Não existe nada no OnExit do último DbEdit.

Após sair deste último DbEdit... ele retorna para o botão Alterar.....
Responder

Gostei + 0

13/07/2010

Fernando Ramos

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


Responder

Gostei + 0

13/07/2010

Wilson Junior

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

Gostei + 0

13/07/2010

Fernando Ramos

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!
Responder

Gostei + 0

13/07/2010

Wilson Junior

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.
Responder

Gostei + 0

13/07/2010

Fernando Ramos

Ok, ajudou muito. Obrigado!
Responder

Gostei + 0

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

Aceitar