Atualização de Dados
:( Estou iniciando o uso do IB e para tentei fazer um pequeno programa teste que utiliza um BD com uma Tabela Alunos [CodAluno(este possui um Trigger e um Genegator para Autoincremento) e Nome].
Este pequeno programa consiste de uma DBGrid e um DBNavigator e mais os componentes do IBX (1 IBDatabase, 1 IBTransaction e 1 IBTable), tem tbm um botão que serve para executar o comando ´CommitRetaing´ na Tabela Alunos.
Quando incluo um novo aluno e clico em POST, até ai tudo bem, depois dou um CommitRetaing ele não mostra o valor do campo CodAluno (fica vazio), nem atualizando os dados (botão atualizar do DBNavigator e até mesmo o comando Table1.Refresh)ele mostra, apenas quando fecho e abro a tabela ele aparece.
:( Teria alguma forma dele mostrar esse valor?
ou alguem teria algum material didático que mostre exemplos em delphi utilizando interbase?
Desde já agradeço. :wink:
Este pequeno programa consiste de uma DBGrid e um DBNavigator e mais os componentes do IBX (1 IBDatabase, 1 IBTransaction e 1 IBTable), tem tbm um botão que serve para executar o comando ´CommitRetaing´ na Tabela Alunos.
Quando incluo um novo aluno e clico em POST, até ai tudo bem, depois dou um CommitRetaing ele não mostra o valor do campo CodAluno (fica vazio), nem atualizando os dados (botão atualizar do DBNavigator e até mesmo o comando Table1.Refresh)ele mostra, apenas quando fecho e abro a tabela ele aparece.
:( Teria alguma forma dele mostrar esse valor?
ou alguem teria algum material didático que mostre exemplos em delphi utilizando interbase?
Desde já agradeço. :wink:
Jpedrosojr
Curtidas 0
Respostas
Afarias
14/08/2003
|Quando incluo um novo aluno e clico em POST, até ai tudo bem, depois
|dou um CommitRetaing ele não mostra o valor do campo CodAluno (fica
|vazio),
Usando triggers para gerar o código, a operação passa a ser realizada no servidor e não há como o cliente ficar sabendo até q execute a query novamete (close/open)
Exclua sua trigger e, se estiver usando IBX use a propriedade GeneratorField do IBDataSet ou IBQuery com a opção OnPost ou OnNewRecord (o q mais lhe convier).
Caso não use IBX, vc pode ter uma query com o SQL:
select gen_id(nome_generator, 1) from rdb$database
executá-la, pegar o valor de retorno e jogar no campo código de sua tabela no evento OnNewRecord ou BeforePost de seu DataSet.
|nem atualizando os dados (botão atualizar do DBNavigator e até mesmo
|o comando Table1.Refresh)ele mostra, apenas quando fecho e abro a
|tabela ele aparece.
Correto (como expliquei acima). Sugiro q nunca utilize componentes TABLE. E mais, não aconselho usar BDE.
|ou alguem teria algum material didático que mostre exemplos em delphi
|utilizando interbase?
Existem diversas apostilas no site do ClubeDelphi e outros sites de Delphi na Internet.
T+
|dou um CommitRetaing ele não mostra o valor do campo CodAluno (fica
|vazio),
Usando triggers para gerar o código, a operação passa a ser realizada no servidor e não há como o cliente ficar sabendo até q execute a query novamete (close/open)
Exclua sua trigger e, se estiver usando IBX use a propriedade GeneratorField do IBDataSet ou IBQuery com a opção OnPost ou OnNewRecord (o q mais lhe convier).
Caso não use IBX, vc pode ter uma query com o SQL:
select gen_id(nome_generator, 1) from rdb$database
executá-la, pegar o valor de retorno e jogar no campo código de sua tabela no evento OnNewRecord ou BeforePost de seu DataSet.
|nem atualizando os dados (botão atualizar do DBNavigator e até mesmo
|o comando Table1.Refresh)ele mostra, apenas quando fecho e abro a
|tabela ele aparece.
Correto (como expliquei acima). Sugiro q nunca utilize componentes TABLE. E mais, não aconselho usar BDE.
|ou alguem teria algum material didático que mostre exemplos em delphi
|utilizando interbase?
Existem diversas apostilas no site do ClubeDelphi e outros sites de Delphi na Internet.
T+
GOSTEI 0