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]
no DataModule do Projeto o código é assim
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.
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
Curtir tópico
+ 0
Responder
Clique aqui para fazer login e interagir na Comunidade :)