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

[resolvido] Botão Editar


Guest Iniciante Programador

Pergunta

Guest Iniciante Programador

Pessoal peguei um exemplo de botões de salvar, excluir, novo e pesquisar na net, mas não consiguo Localizar um de editar como eu faço para fazer um botão de Editar?, gostaria muito que o meu projeto tenho um botão de editar e não ficar editando direto quando os dados estão espostas na janela, tenho um unit de funções onde eu faço as funções do meu projeto e vou ligando nos formularios esse é o exemplo da função alterarregistro que ele me passou com essa eu acho que dá para fazer a ligação com o botão:

procedure alterarregistro (ptabela:string;pcampos, pvalores:tstringlist;pcondicao:string);

var a:integer;instrucaosql:string;

begin

instrucaosql:='update ' + ptabela + ' set ';

for a :=0 to (pcampos.Count-1) do

begin

instrucaoSQL := instrucaosql+pcampos [a]+ '='+ pvalores [a] + ', ' ;

end;

instrucaosql:= copy (instrucaosql,1,length (instrucaosql)-2);

if (pcondicao<>'') then

begin

instrucaosql := instrucaosql + ' where ' + pcondicao;

end;

// showmessage (instrucaosql);

with dtmiza.qryiza do

begin

close;

sql.Clear;

sql.add (instrucaosql);

execsql;

end;

Como eu faço um botão de editar mais ou menos desse tipo.

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Bom, este já parece ser um exemplo de função para alterar os valores dos campos na tabela - eu diria que é um salvar alterações.

a ideía de clicar me um botão Editar deve ser mais ou menos essa:

- clica no botão editar;

- no evento OnClick do botão, você localiza na tabela o registro a ser editado;

- uma vez localizado, move os valores dos campos para seus edit's no form;

- mostra o form para que seja feita a edição/altração;

- ao final, cancela ou grava as alterações.

Link para o comentário
Compartilhar em outros sites

  • 0

Do post de onde você tirou essa "encrenca" (link), tem o procedimento LeRegistro que aparentemente faz isto.

É bem verdade que ele ainda chama uma procedure Consultaregistros que vai realmente efetivar a consulta, mas é bem óbvio o que tem lá dentro - dê uma olhada no post que fiz em resposta ao questionamento dele - é praticamente o código que lhe falta.

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Iniciante Programador
Micheus Postado Hoje, 14:30

Do post de onde você tirou essa "encrenca" (link), tem o procedimento LeRegistro que aparentemente faz isto.

É bem verdade que ele ainda chama uma procedure Consultaregistros que vai realmente efetivar a consulta, mas é bem óbvio o que tem lá dentro - dê uma olhada no post que fiz em resposta ao questionamento dele - é praticamente o código que lhe falta.

Postado Hoje, 14:18

Foi dele que eu peguei esses exemplos mas eu me falou que não fez o botão editar, por isso que eu estou lhe perguntando.

Do jeito que você sabe fazer como eu posso fazer como o botão editar?

Link para o comentário
Compartilhar em outros sites

  • 0
Foi dele que eu peguei esses exemplos mas eu me falou que não fez o botão editar, por isso que eu estou lhe perguntando.

Do jeito que você sabe fazer como eu posso fazer como o botão editar?

Se você pegou com ele, você deve ter algo parecido com isto em seu código:

procedure Tfrmalunos.leregistro;
begin
    if consultaregistros('alunos', 'codigo, nome, cpf, processos', 'codigo =' + retorno) then
    begin
      txtmat.text := ledados ('codigo');
      txtnom.text := ledados ('nome');
      txtcpf.text := ledados ('cpf');
      txtpro.text := ledados ('processos');
    end;
    if consultaregistros('usuarios', 'codigo, nome', 'codigo =' + retorno) then
    begin
      txtcodi.text := ledados ('codigo');
      txtusu.text := ledados ('nome');
    end;
end;

O que este procedimento faz é, após encontrar a informação (via função consultaregistros), utilizar o dataset por ela aberto (e que está posicionado no registro desejado) para retornar as informações utilizando uma função chamada ledados, onde ele move o valor do campo lido para o respectivo edit.

O que a função consultaregistros faz é montar uma consulta SQL para procurar na tabela "alunos", os campos "codigo, nome, cpf, processos" com a cláusula where "codigo = <valor em retorno>".

Se você pegou com ele, você deve ter este procedimento em seu código.

Eu não tenho como adivinhar todo o malabarismo que há nos códigos de vocês, mas o conceito é este (denovo):

- em algum momento o usuário seleciona um item para editar (é o que você irá utilizar na cláusula where, ou seja, na procedure é o valor em retorno);

- após selecionado, ao pressionar um botão edit, você chamará o seu LeRegitro, que irá obter todos os dados na tabela e mover para os respectivos Edit;

- ao final da edição, deve haver um botão gravar. É sabendo que você está editando e não inserindo, que você chamará o procedimento que move os valores dos edit's para a lista de campos e valores e chama o procedimento AlteraRegistro.

posso perguntar por que você começou a aprender (já que se diz iniciante) delphi com banco de dados utilizando justo esta abordagem - não utilização de componentes data-aware (os TDB...)?

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
Guest Iniciante Programador

Sei entendi, mas o problema meu que eu quero contornar é assim:

Tenho o programa e quando ele retorna os dados para o meu form ele já retorna podendo editar os campos, mas por exemplo se os dados estão disponiveis na tela e o usuario mudar algo sem perceber vai ficar ruim, o que eu quero é colocar para retornar os dados e que não possa editar e que sim se eu clicar no botão de editar eu possa fazer isso e salvar.

Obrigado Micheus

Link para o comentário
Compartilhar em outros sites

  • 0
Guest --felipe --
Do jeito que você sabe fazer como eu posso fazer como o botão editar?

Iniciante Programador você está fazendo de uma simples execução de editar uma coisa muito complicada sacou??

vou te mostrar um jeito mais simples ...

supondo que:

- utilize um DataModule(nomeado dm)

- utilize uma Query(nomeada ClientesQuery), dentro do Datamodule(dm), como Dataset.

- você utilize um DBGrid e nele selecione a linha que deseja editar.

- após encontrada a linha, é clicado em um botão "Editar".

- a tabela a ser editada é "CLIENTES" com os campos "idcliente, nome, idade".

crie um novo form e nomeie como EditarCliForm, e insira nele estes componentes:

- paleta DataControls, 3 DBEdits

- paleta DataAccess, 1 DataSource

- 1 button "Confirma", 1 button "Cancela"

primeiramente, aperte Alt+F11 e de 2 cliques no form que se encontram seus componentes de relação com banco de dados (Datasets, Database etc...), então relacione no componente Datasource a propriedade Dataset com ClientesQuery

relacione todos os 3 DBEdits com o Datasource na propriedade Datasource, e na propriedade DataField:

-DBEdit1=IDCLIENTE

-DBEdit2=NOME

-DBEdit3=IDADE

no button Confirma insira este código:

dm.ClientesQuery.applyupdates; //executa applyupdates (aplicar alterações)

close;

no button Cancela insira apenas close //ao fechar o software automaticamente cancela as alterações no evento OnClose (Ao Fechar);

no evento OnClose:

dm.ClientesQuery.cancel; //cancela as alterações ao fechar, obs: só vai cancelar o que não tiver sido aplicado em (applyupdates)

agora vá ao seu form que lista os clientes (apenas suposição), e no seu botão Editar insira o seguinte código:

dm.Clientesquery.Edit;
  EditarCliForm := TEditarCliForm.Create(nil);
  EditarCliForm.DBEdit1.enabled:=false; //supondo que o campo IDCLIENTE não possa ser mudado.
  EditarCliForm.ShowModal;
  EditarCliForm.Free;
e tá feito!! você também pode usar o EditarCliForm para Cadastrar, é so tirar a linha que desativa o DBEdit1 e trocar Edit por Append assim (logicamente no botão Cadastrar):
dm.Clientesquery.Append;
  EditarCliForm := TEditarCliForm.Create(nil);
  EditarCliForm.ShowModal;
  EditarCliForm.Free;

fechou!

abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Aqui estamos nós denovo com problemas de comunicação. :huh:

Se o Iniciante Programador partiu do exemplo do robinho, que NÃO utilizou componentes data-aware (os tal TDB...), então o exemplo bem detalhado do felipe não vai ajudar muito.

Já se ele utilizou apenas partes do exemplo do robinho, mas trabalhou com componentes data-aware, então seria bom ter informado, por que utilizando eles todo o processo é simples, e a questão de evitar edição acidental fica fácil controlar apenas definindo a propriedade AutoEdit=false do datasouce ligado aos componentes.

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