Pessoal para resolver esse problema que vcs tem após gravar no IB/FB Eu fiz uma função que vai no banco e no Generator da sua tabela e vê qual é o último registro ou tb adiciona Um novo registro. // Se for TRUE ele vai pegar o numero do generator mais 1, se for FALSE pega o número atual. function ProximoRegistro(GenName:string;Inc:boolean):integer; var ResultSet:TCustomSqlDataSet; Sqlstr:string; begin if Inc then Sqlstr := 'Select gen_id('+GenName+',1) as valor from RDB$DATABASE;' else Sqlstr := 'Select gen_id('+GenName+',0) as valor from RDB$DATABASE;'; ResultSet:=nil; try dmDB.Conexao_Modelagem.Execute(Sqlstr,nil,@ResultSet); if Assigned(ResultSet) then Result:= ResultSet.FieldByName('Valor').AsInteger; finally FreeAndNil(ResultSet); end; end; Rodrigo Mota Consultor de Informática Respec Recursos Humanos -----Mensagem original----- De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de <<ledo>> Enviada em: quarta-feira, 14 de setembro de 2005 01:18 Para: delphi-br@yahoogrupos.com.br Assunto: RES: [delphi-br] Interbase Generator x Trigger Oi Jenifer.
Sua duvida é igual a minha. Tb uso o IB/FB com a paleta IBX. A forma que utilizei com a ajuda de um amigo aqui da lista foi colocar o seguinte codigo no seu botão gravar; IBDataset.close; IBDataset.clear; IBDataset.SelectSql.Add('select * from tabela'); IBDataset.open; IBDataset.last; DataWare.caption := IBDataset.FieldByName('seucampoid').AsString; Assim vai funcionar tudo o que vc pediu... Seu generator disparado por uma trigger no post e como mostrar esse codigo de incremento no seu formulario. Meio que gambiarra mas vai funcionar. Se algum outro colega tiver uma solução melhor. Espero ter ajudado [[]] Ledo -----Mensagem original----- De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Jenifer Arosa Enviada em: sexta-feira, 9 de setembro de 2005 15:24 Para: delphi-br@yahoogrupos.com.br Assunto: RES: [delphi-br] Interbase Generator x Trigger Oi Gente,,,, Eu criei uma tabela de vendedores e o campo que identifica o código do vendedor é integer not null Bom. Criei um generator para incrementar esse campo, mas no GeneratorFields do DataSet eu perco a numeração quando o usuário desiste da operação de inclusão. Para contornar resolvi fazer uso de uma Trigger que dispara o generator apos a sua inserção, ou seja no post. Porque desta forma eu não perco o numero e tenho o banco controlando essa operação. Meu problema é que no fields editor tenho que colocar o required como false para não dar erro. então não consigo que um DataWare mostre o valor desse campo a não ser quando em edição. Alguma sugestão para contornar esse problema. Agradeço muito beijos {{}} Jenifer -----Mensagem original----- De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Jenifer Arosa Enviada em: sexta-feira, 9 de setembro de 2005 15:13 Para: delphi-br@yahoogrupos.com.br Assunto: RES: [delphi-br] Interbase Generator x Trigger Oi Antonio,,, Pois é... Mas voltando a sua dica do required.... O campo é integer e not null no IB. Criei um generator para incrementar e a trigguer para disparar no post. O problema é que se retorno o required no Fields do DataSet ele da erro. Tem outra forma para que eu possa fazer isso? Grata pela ajuda beijos {{}} Jenifer -----Mensagem original----- De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Antonio Sérgio P. Santin Enviada em: sexta-feira, 9 de setembro de 2005 10:33 Para: delphi-br@yahoogrupos.com.br Assunto: Re: [delphi-br] Interbase Generator x Trigger Ola Jenifer bom, para ajudar no teu raciocínio, o código é gerado no momento do POST, ou seja, quando você manda gravar os dados. Para obter o código é só associar um dbedit somente leitura ao campo código. bjs... Antonio. ----- Original Message ----- From: "Jenifer Arosa" <[EMAIL PROTECTED]> To: <delphi-br@yahoogrupos.com.br> Sent: Friday, September 09, 2005 10:11 AM Subject: RES: [delphi-br] Interbase Generator x Trigger Oi Antonio,,, Funcionou como eu esperava. Realmente a Trigger controla o incremento numa boa. Já estou modificando tudo o que havia feito. Agradeço ao Francisco sua dica do required no DataSet ja é. D+ Agradeço ao Alisson tb... vcs são 10+. Porem tenho uma duvida básica de como fazer o tratamento de uma label ou até mesmo de um edit para receber esse valor apos a gravação.. Minha tela fica sem o danado do código do vendedor. Eu abro ele em branco mas gostaria que ao gravar o usuário pudesse ver o numero que foi gravado... Já tentei IbDataset.FieldByName('id').asString, já tentei Value mas não mostra. Acho que o erro possa estar no botão gravar... pois pelo meu entendimento o código vem antes do post. Mas não sei como poderia faze-lo. Agradeço a ajuda. beijos. {{}} Jenifer -----Mensagem original----- De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Antonio Santin Enviada em: quinta-feira, 8 de setembro de 2005 17:00 Para: delphi-br@yahoogrupos.com.br Assunto: Re: [delphi-br] Interbase Generator x Trigger Oi Jenifer, já queimei as pestanas com isto e resolvi o problema com a seguinte definição do generator e do trigger, tudo rodando dentro do delphi em uma rotina de "Instalação da Tabela", é importante que o campo "Chave" seja definido como NOT NULL na criação da tabela, talvez aí esteja o teu problema. SQL.Text := 'CREATE GENERATOR Chv_Numer;'; ExecQuery; SQL.Text := 'CREATE TRIGGER Auto_Table1 FOR Table1 ACTIVE BEFORE INSERT POSITION 0 ' + 'AS BEGIN IF (Table1.Chave = 0) THEN NEW.Chave = GEN_ID(Chv_Numer, 1); END'; ExecQuery; Quanto a tua dúvida se funciona em rede, sim funciona, pois os números serão controlados pelo servidor e trigger será disparado no banco e não na aplicação. Bjs. ;) Antonio [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] ou [EMAIL PROTECTED] Yahoo! Grupos, um serviço oferecido por: PUBLICIDADE <http://br.rd.yahoo.com/SIG=12fnlgm8q/M=365837.7000707.7924794.2369893/D =brclubs/S=2137111264:HM/Y=BR/EXP=1126296859/A=2950750/R=2/id=noscript/S IG=10tift5qr/*http://br.movies.yahoo.com/> _____ 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] <mailto:[EMAIL PROTECTED]> * O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo! <http://br.yahoo.com/info/utos.html> . [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] ou [EMAIL PROTECTED] Yahoo! Grupos, um serviço oferecido por: PUBLICIDADE <http://br.rd.yahoo.com/SIG=12fc6ecp9/M=365837.7000707.7924794.2369893/D =brclubs/S=2137111264:HM/Y=BR/EXP=1126297547/A=2950750/R=2/id=noscript/S IG=10tift5qr/*http://br.movies.yahoo.com/> _____ 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] <mailto:[EMAIL PROTECTED]> * O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo! <http://br.yahoo.com/info/utos.html> . [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] ou [EMAIL PROTECTED] Yahoo! Grupos, um serviço oferecido por: PUBLICIDADE <http://br.rd.yahoo.com/SIG=12f6mcdqv/M=365837.7000707.7924794.2369893/D =brclubs/S=2137111264:HM/Y=BR/EXP=1126678750/A=2950750/R=2/id=noscript/S IG=10tift5qr/*http:/br.movies.yahoo.com/> <http://br.i1.yimg.com/br.yimg.com/i/br/ads6/0829_lrec_cinema_calendario .gif> _____ 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] <mailto:[EMAIL PROTECTED]> * O uso que você faz do Yahoo! Grupos está sujeito aos Termos do <http://br.yahoo.com/info/utos.html> Serviço do Yahoo!. [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] ou [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