Ir para conteúdo
Fórum Script Brasil
  • 0

Editar Tabela


Curinga

Pergunta

Pessoal, apareceu uma duvida e gostaria que vocês me ajudassem.

Estou fazendo uma area de edição, ou seja o usuario pode editar um cliente já cadastrado, para isso, ele faz a busca, clica com o botao direito em cima dos dados do cliente no DBGrid, abre o menu de opções, e ai quando ele clica em EDITAR, o programa roda um SHOW ate a area de edição.

Pois aí é q está o problema, nessa area de edição está todos os meus DBEdits, para que seja editado o cliente, só que quando eu abro o form de edição aparece o NOME, CODIGO, CPF, tudo certo, tdo beleza, mas quando eu coloco o foco em um determinado DBGrid ele apaga automaticamente, porque isso ta acontecendo?

Como eu faço para que, ao abrir o FORM de edição, ele pegue os valores contidos dos campos que eu cliquei do DBGRID e jogue nos DBEdits do FORM de edição?

obrigado pela atenção, e espero que eu tenha explicado com clareza o problema.

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0

Olá Curinga,

Uma alternativa (não digo que seja a mais prática!) é você usar Edits normal ao invés de DBEdits. Logo, no evento on Show do formulário de alteração você coloca o edit recebendo o campo do banco de dados:

Edit1.Text:= Query.FieldByName('campo').AsString; 

e fazer isso para todos os edits e campos que quiser que sejam exibidos.

Espero ter ajudado...

Qualquer coisa posta eaew!

falou

Link para o comentário
Compartilhar em outros sites

  • 0

Bem....

A idéia do SelectAll é boa, mas não sei se será bem aplicada corretamente na sua aplicação, contudo... não custa tentar!

Caso você resolva usar Edits, a inclusão dependerá de qual componente está sendo usado para acessar o banco (Table, Query,.....).

falou...

Link para o comentário
Compartilhar em outros sites

  • 0
Guest - Rafael -
Pessoal, apareceu uma duvida e gostaria que vocês me ajudassem.

Estou fazendo uma area de edição, ou seja o usuario pode editar um cliente já cadastrado, para isso, ele faz a busca, clica com o botao direito em cima dos dados do cliente no DBGrid, abre o menu de opções, e ai quando ele clica em EDITAR, o programa roda um SHOW ate a area de edição.

Pois aí é q está o problema, nessa area de edição está todos os meus DBEdits, para que seja editado o cliente, só que quando eu abro o form de edição aparece o NOME, CODIGO, CPF, tudo certo, tdo beleza, mas quando eu coloco o foco em um determinado DBGrid ele apaga automaticamente, porque isso ta acontecendo?

Como eu faço para que, ao abrir o FORM de edição, ele pegue os valores contidos dos campos que eu cliquei do DBGRID e jogue nos DBEdits do FORM de edição?

obrigado pela atenção, e espero que eu tenha explicado com clareza o problema.

Meu caro colega experimente usar o edit comum na paleta standart, ok? ele deve funcionar.

Link para o comentário
Compartilhar em outros sites

  • 0

Pessoal, obrigado pela ajuda, consegui resolver o problema anterior,

mas agora ta acontecendo um segundo problema.

Toda vez que eu mando salvar da erro de "Key Violation". já mudei minha rotina toda e não acho o problema, o q pode ta acontecendo?

Ta ai a minha rotina, pessoal.

Para explicar melhor:

Antes de entrar nesse FORM(EDITAR), tem um FORM(PESQUISAR), então a pessoa pesquisa e os resultados aparecem no DBGrid(DBPesquisa2). Ele clica com o botão direito em cima de um determinado resultado, e então abre o TPopupMenu com o item EDITAR. Nesse EDITAR do TPopupMenu tem um SHOW q leva até o nosso FORM(EDITAR).

procedure TEditar.FormActivate(Sender: TObject);

begin

TCPFisica.Edit;

Pesquisar.DBPesquisa2.SelectedIndex:=0;

TCPFisica.FieldByName('CODIGO').AsString := Pesquisar.DBPesquisa2.SelectedField.Text;

Pesquisar.DBPesquisa2.SelectedIndex:=1;

TCPFisica.FieldByName('NOME').AsString := Pesquisar.DBPesquisa2.SelectedField.Text;

etc...

etc...

end;

procedure TEditar.BtnSalvarClick(Sender: TObject);

begin

TCPFisica.Edit;

TCPFisica.Post;

MessageBox(Application.Handle, Pchar ('As informações foram salvas com sucesso.'), 'C-Commerce', MB_OK+MB_ICONWARNING+MB_DEFBUTTON1);

end;

O interessante disso tudo é que, o primeiro item q aparece do meu DBGrid, quando eu faço a pesquisa

da certo, ele altera, se eu fizer uma busca e achar dois ou mais resultados e fizer isso com o 2.º

item q aparece, ou o 3º, ele da erro de "Key Violation", estranho...

Eu sei que eu tenho enchido vocês, mas eu não tenho a qm recorrer, por isso pesso a ajuda de vocês.

Obrigado, mais uma vez...

Link para o comentário
Compartilhar em outros sites

  • 0

cara pelo q eu pude notar ele da esse erro porque ele não ta achando o codigo da pessoa q você ta querendo muda... não sei se você ta usando uma qry ou uma table pra fazer isso... se tiver usando uma queri adiciona uma restricao do tipo:

where codigo= :codigo
so pra ele saber qual pessoa ele tem q mudar.. ai quando você for chamar esse form pra mudar tu manda o codigo.. ficaria algo do tipo:

dtmPrincipal.qrydados.Close;
dtmPrincipal.qrydados.Parameters.ParamByName('codigo').Value := tblCODIGO.valeu
dtmPrincipal.qrydados.Open;

onde o tblCODIGO.valeu é o campo da tua tabela q tem o codigo da pessoa q você que mudar...

axo q isso pode te ajuda... qualquer coisa... posta ai velho...

Link para o comentário
Compartilhar em outros sites

  • 0

Olá,

Obrigado pela dica, complementando, eu estou usando table na busca, quando entra no FORM, ele identifica perfeitamente o CODIGO, mas so altera o primeiro, o resto não.

Como eu transformaria sua dica, se fosse no meu caso, q é o uso de TABELA?

Obrigado...

Link para o comentário
Compartilhar em outros sites

  • 0

Olá Curinga,

Não sei se entendi bem o que você quer, mas veja se é isso:

    DM.Tabela.Edit;
    DM.Tabela.Insert;

    DM.Tablela.FieldbyName('Campo1').AsString := Edit1.Text;
    DM.Tablela.FieldbyName('Campo2').AsString := Edit2.Text;
    DM.Tablela.FieldbyName('Campo3').AsString := Edit3.Text;
    DM.Tablela.FieldbyName('Campo4').AsString := Edit4.Text;
    DM.Tablela.FieldbyName('Campo5').AsString := Edit5.Text;
    DM.Tablela.FieldbyName('Campo6').AsString := Edit6.Text;
    .
    .
    . {aqui continua a insersão, dependendo de quantos campos você tem}

Ou se você quiser pode usar o método Append, ao invés do Edit e do Insert.

Não sei se era isso, qualquer coisa posta eaw...

Até mais!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...