kduzinh 0 Denunciar post Postado Março 31, 2008 Boa noite amigos do forum, Tenho uma duvida acredito q seja simples, como tratar erro de primary key usando dbexpress, exemplo em um cadastro de produtos tento inserir uma chave primaria que ja exista, quero que apareça um erro do tipo "Codigo ja registrado". Obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
marcio.theis 3 Denunciar post Postado Abril 1, 2008 Você pode fazer antes de salvar uma validação procurando no BD pelo código, caso encontre mostra a mensagem desejada, pode fazer isto no momento em que o usuário clica em salvar. Compartilhar este post Link para o post Compartilhar em outros sites
kduzinh 0 Denunciar post Postado Abril 1, 2008 obrigado pela atenção Marcio, vou tentar obrigado. Compartilhar este post Link para o post Compartilhar em outros sites
LHAlmeida 0 Denunciar post Postado Abril 2, 2008 Boa noite amigos do forum, Tenho uma duvida acredito q seja simples, como tratar erro de primary key usando dbexpress, exemplo em um cadastro de produtos tento inserir uma chave primaria que ja exista, quero que apareça um erro do tipo "Codigo ja registrado". Obrigado. você usa firebird? Eu uso uma query minha generica soh pra retornar o valor do generator, se quiser posso postar o codigo aqui, basicamente tem uma funcao q eu passo o nome do GENERATOR q eu quero... e ela retorna o codigo do proximo registro q sera inserido e jah incrementa o generator abraço Compartilhar este post Link para o post Compartilhar em outros sites
kduzinh 0 Denunciar post Postado Abril 3, 2008 LHAlmeida, seria muito interessante e me ajudaria muito, se for possivel colocar o codigo. Compartilhar este post Link para o post Compartilhar em outros sites
LHAlmeida 0 Denunciar post Postado Abril 4, 2008 LHAlmeida, seria muito interessante e me ajudaria muito, se for possivel colocar o codigo. Então vamos lá... crie um ClientDataSet chamado genId, ligue ele a um TDataSetProvider (mude a propriedade allowcommandtext:=true) crie um TSQLQuery e ligue a sua SQLConnection volte no seu TDataSetProvider criado duas linhas acima e conecte o seu TSQLQuery a ele. no evento BeforePost do clientdataset que precisa recuperar o código a ser inserido coloque o seguinte codigo: (o comando before post passa o objeto TDataset por parametro com o nome de DataSet ou seja, o dataset que chamou o evento, é ele que vamos utilizar) //vamos supor que a sua tabela seja a famosa tabela de clientes rs //verifica se o estado do dataset é de insert, ou seja, novo registro, você precisa gerar um novo codigo para ele if(DataSet.State in [dsInsert])then begin //usando seu genID with genId do begin Close; CommandText:=''; //passa a sql pela commandText com o nome do seu generator criado para a tabela q estará em uso, no caso a de CLIENTES define um apelido para o valor retornado "ID", e já incrementa seu generator CommandText:='select gen_id(GEN_CLIENTES_ID, 1) as ID from rdb$database'; //executa Open; //atribui o valor do ID retornado ao campo codigo da sua tabela DataSet.FieldByName('CODIGO').AsInteger := FieldByName('ID').asinteger; end; end; simples assim rs tem outras formas de implementar isso, achei essa a mais facil de explicar aqui, aqui vai o codigo sem comentarios para um melhor entendimento: CODE if(DataSet.State in [dsInsert])then begin with genId do begin Close; CommandText:=''; CommandText:='select gen_id(GEN_CLIENTES_ID, 1) as ID from rdb$database'; Open; DataSet.FieldByName('CODIGO').AsInteger := FieldByName('ID').asinteger; end; end; não se esqueça de verificar o generator q esta usando, espero que tenha ajudado abraço Lucas Compartilhar este post Link para o post Compartilhar em outros sites
kduzinh 0 Denunciar post Postado Abril 4, 2008 vlw LHAlmeida, vou dar uma olhada no codigo depois vlw pela ajuda. Compartilhar este post Link para o post Compartilhar em outros sites
LHAlmeida 0 Denunciar post Postado Abril 5, 2008 vlw LHAlmeida, vou dar uma olhada no codigo depois vlw pela ajuda. que isso amigo, pode contar sempre abraço Lucas Compartilhar este post Link para o post Compartilhar em outros sites