Filipe eu tentei fazer com generator mas encontrei o seguinte problema... é que o clientdataset trabalha em memoria, entao no beforepost do clientdataset criei um metodo ValidateFields que tem a finalidade de verificar quais campos obrigatorios estao nulos e sempre estourava uma excessao, pois o generator ainda n tinha sido disparado, pesquisei em varios foruns e vi esse exemplo que postei aqui. Mas de qualquer maneira muito obrigado pela dica
Diego ----- Mensagem original ---- De: Filipe Belchior <[EMAIL PROTECTED]> Para: delphi-br@yahoogrupos.com.br Enviadas: Quinta-feira, 26 de Outubro de 2006 16:49:04 Assunto: [delphi-br] Re: Procedures no Firebird Jorge, vai ficar assim.. ---------- corpo da procedure ---------------- CREATE PROCEDURE P_INCREMENTA_CAMPOS ( PI_TABELA VARCHAR(30), PI_CAMPO VARCHAR(20)) RETURNS ( PO_VALUE INTEGER) AS BEGIN EXECUTE STATEMENT 'SELECT MAX (' || :PI_CAMPO || ') FROM ' || :PI_TABELA INTO :PO_VALUE; SUSPEND; END; ---------------------------------------------------- ..Mas não é aconselhavel tratar assim incremento de PK de tabela, o ideal é usar generator, e ter um outro campo, q vc possar usar como quiser e mostrar ao usuário. --- Em delphi-br@yahoogrupos.com.br, Rodrigo Bevilacqua Marcondes <[EMAIL PROTECTED]> escreveu > > [FOR] EXECUTE STATEMENT <string> > [INTO :var1 [, var2 [, :varn]]] DO > <compound-statement>]; > <compound-statement> = {statement | block-of-statements} > > ---Ex . > SQL = 'EXECUTE PROCEDURE '||PROC_NAME; > EXECUTE STATEMENT SQL; > > "Jorge Diego de A. Lopes" <[EMAIL PROTECTED]> escreveu: Ola pessoal estou tentando fazer uma StoredProcedure generica para > fazer o auto incremento do campo chave no momento da inserção pelo delphi. > > ---------- corpo da procedure ---------------- > CREATE PROCEDURE P_INCREMENTA_CAMPOS ( > PI_TABELA VARCHAR(30), > PI_CAMPO VARCHAR(20)) > RETURNS ( > PO_VALUE INTEGER) > AS > BEGIN > SELECT MAX (:PI_CAMPO) FROM :PI_TABELA > INTO :PO_VALUE; > SUSPEND; > END; > ---------------------------------------------------- > so que está procedure nao esta compilando, pois ela informa que esta > tabela nao existe, pois o correto seria assim > SELECT MAX (ID_USUARIO) FROM USUARIOS > INTO :PO_VALUE; > So que esta forma nao ficaria generia para todas as tabelas... alguem > poderia me informar se teria alguma forma generica de fazer isso... > > > > > > --------------------------------- > Yahoo! Acesso Grátis - Internet rápida e grátis. Instale o discador agora! > > [As partes desta mensagem que não continham texto foram removidas] > _______________________________________________________ O Yahoo! está de cara nova. Venha conferir! http://br.yahoo.com [As partes desta mensagem que não continham texto foram removidas] -- <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>> <*> Para ver as mensagens antigas, acesse: http://br.groups.yahoo.com/group/delphi-br/messages <*> Para falar com o moderador, envie um e-mail para: [EMAIL PROTECTED] Links do Yahoo! Grupos <*> Para visitar o site do seu grupo na web, acesse: http://br.groups.yahoo.com/group/delphi-br/ <*> Para sair deste grupo, envie um e-mail para: [EMAIL PROTECTED] <*> O uso que você faz do Yahoo! Grupos está sujeito aos: http://br.yahoo.com/info/utos.html