ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Update em varios campos no Firebird 2.5

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
Renob
Novato
Novato


Registrado: Segunda-Feira, 20 de Março de 2017
Mensagens: 3

MensagemEnviada: Seg Mar 20, 2017 2:43 pm    Assunto: Update em varios campos no Firebird 2.5 Responder com Citação

Boa tarde pessoal, preciso atualizar uma tabela de
Produtos ( Campo1 , campo2 , campo3 , campo 4)
Na tela existem 4 Edits para o usuario digitar os dados ( todos numéricos (integer) ).,
porém nem todos são preenchidos pelo usuário (tenho que ver qual esta preenchido para depois atualizar
só estes).
Estou usando Firebird 2.5 - ADO ODBC - Delphi 2010.
Pelo jeito simples seria assim :
UPDATE produto
SET Campo1 = 101 ,Campo2 = 500 , campo3 = 5100
WHERE codprod = 1
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
imex
Moderador
Moderador


Registrado: Sexta-Feira, 7 de Janeiro de 2011
Mensagens: 11666

MensagemEnviada: Seg Mar 20, 2017 9:05 pm    Assunto: Responder com Citação

Boa noite,

Acho que você pode montar o Update dinamicamente utilizando código de acordo com os Edits preenchidos. Ex:

Código:
var
  Prefixo: string;
  // ...
begin
  // ...
  Prefixo := 'set';
  ADOQuery1.SQL.Clear;
  ADOQuery1.SQL.Add('update produto');
  if Edit1.Text <> '' then
    begin
      ADOQuery1.SQL.Add(Prefixo + ' campo1 = :campo1');
      ADOQuery1.Parameters.ParamByName('campo1').Value := StrToInt(Edit1.Text);
      Prefixo := ',';
    end;
  if Edit2.Text <> '' then
    begin
      ADOQuery1.SQL.Add(Prefixo + ' campo2 = :campo2');
      ADOQuery1.Parameters.ParamByName('campo2').Value := StrToInt(Edit2.Text);
      Prefixo := ',';
    end;
  if Edit3.Text <> '' then
    begin
      ADOQuery1.SQL.Add(Prefixo + ' campo3 = :campo3');
      ADOQuery1.Parameters.ParamByName('campo3').Value := StrToInt(Edit3.Text);
      Prefixo := ',';
    end;
  if Edit4.Text <> '' then
    begin
      ADOQuery1.SQL.Add(Prefixo + ' campo4 = :campo4');
      ADOQuery1.Parameters.ParamByName('campo4').Value := StrToInt(Edit4.Text);
    end;
  ADOQuery1.SQL.Add('where codprod = :codprod');
  ADOQuery1.Parameters.ParamByName('codprod').Value := StrToInt(edtCodProd.Text);
  ADOQuery1.ExecSQL;


Espero que ajude


Editado pela última vez por imex em Ter Mar 07, 2023 5:39 pm, num total de 1 vez
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Renob
Novato
Novato


Registrado: Segunda-Feira, 20 de Março de 2017
Mensagens: 3

MensagemEnviada: Ter Mar 21, 2017 9:44 am    Assunto: Responder com Citação

Obrigado imex, deu certo
pelo menos até os usuários acharem uma brecha Very Happy , sabe como é né

Novamente obrigado pela ajuda.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Banco de Dados Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB