Como indicar que quero um Insert ou um Update?

3 respostas
Zeed01

Boa tarde pessoal !

Minha dúvida é a seguinte:
Numa aplicação desktop, suponha uma tela de cadastro onde sempre aparece o registro atual e que possui os botões Novo, Gravar, Cancelar e Excluir.

Novo = Limpar campos para pergmitir a digitação dos dados de um novo registro.

Gravar = Fazer um Insert no banco no caso do usuário ter clicado antes em Novo, ou um Update, caso o usuário tenha apenas alterado algum dado do registro atual e queira salvar.

Sendo assim, qual a melhor maneira de sinalizar para o botão Gravar qual ação ele deve tomar ?

Criar uma váriavel boolean que será setada quando o usuario clicar no botão Novo ?

Desde já agradeço a todos.

Um abraço.

3 Respostas

M

Se o campo ID for auto-generate, vc pode usar ele. Se ele for null vc insere, caso contrário vc dá um update.

Espero ter ajudado.

Zeed01

marceloplis:

Antes de mais nada muito obrigado pela pronta ajuda !
Sem dúvida que ajudou muito, no caso que estou tratando agora o campo é auto-generate e realmente sua sacada é muito boa, vou utilizá-la sim.

Mas pensando em um caso onde o campo não fosse auto-generate, você tem idéia da melhor saída ?

Obrigado.

Um abraço.

rodrigovfsilva

Se não houver problema em resolver isto na query e se o banco for oracle.
Não é aconselhável, mas em última instância vc pode fazer assim.

begin
  update ... 
     set ...
   where ... ; 
  if (SQL%NOTFOUND) then 
    insert into ...
      (...) 
    values 
      (...); 
  end if; 
end;

Boa sorte

Criado 4 de junho de 2007
Ultima resposta 4 de jun. de 2007
Respostas 3
Participantes 3