GARANTIR DESCONTO

Fórum Ajuda em Function em um campo ID #347901

25/10/2007

0

Como criar uma [b:d550960989]Procedure [/b:d550960989] ou [b:d550960989]Function[/b:d550960989] em uma [b:d550960989]Form[/b:d550960989] de [b:d550960989]Cadastro[/b:d550960989] onde se o usuário quizer digitar um [b:d550960989]ID [/b:d550960989]e esse ID não existir ele pergunta deseja adicionar este Código.

Seria mais ou menos assim

No Click no [b:d550960989]Adicionar[/b:d550960989] o campo ID é i[b:d550960989]ncrementado[/b:d550960989] com uma Sequence_ID só que o usuário quer outro ID então ele da um Click no Cancelar ignorando a [b:d550960989]sequence_ID[/b:d550960989] então digita o Código desejado ao Pressionar [b:d550960989]enter[/b:d550960989] ele já informa se existe caso contrario ele pergunta se deseja cadastrar

So tem um porem no Click [b:d550960989]Gravar [/b:d550960989]ele faz um [b:d550960989]INSERT [/b:d550960989]via [b:d550960989]StoreProcedure[/b:d550960989] como ignorar o Sequence_ID da [b:d550960989]StoreProcedure[/b:d550960989] para esta funcão

Atualmente o mesmo Faz um [b:d550960989]UPDATE[/b:d550960989] se já existir pois na [b:d550960989]StoreProcedure[/b:d550960989] diz se o ID for Igual [b:d550960989]UPDATE[/b:d550960989].

segue a StoreProcedure do BD [b:d550960989]Firebird 2.0[/b:d550960989]

begin
  if (exists(select id_categoria from categoria where (id_categoria = :id_categoria))) then
    update categoria
    set nome_categoria = :nome_categoria
    where (id_categoria = :id_categoria);
  else
    insert into categoria (
        id_categoria,
        nome_categoria)
    values (
        NEXT VALUE FOR SEQ_CATEGORIA_ID,
        :nome_categoria);
end


no DataModule do Projeto o código é assim

procedure TDM.cdsCategoriaNewRecord(DataSet: TDataSet);
begin
  {: indica o valor 0 para o ID quando inserir novo registro }
  cdsCategoriaID_CATEGORIA.AsInteger := 0;
end;


Tentei colocando o um ID mas quando o mesmo já existia ele nem alertava, apenas dava um [b:d550960989]update[/b:d550960989] e não um [b:d550960989]insert[/b:d550960989] pois o código segue o que foi passado pela [b:d550960989]Storeprocedure[/b:d550960989].

qual a melhor solução para este caso.


Alves_sp

Alves_sp

Responder

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

Aceitar