Problema ao Editar Registro

Delphi

18/02/2004

Galera, vejam que coisa louca:

meu sistema é um sistema de controle comum que utiliza IB6.
Ele executa e insere novos registro que uma beleza, mas nao salva as alterações (quando necessário alterar) do primeiro registro inserido após aberto sistema. Se eu desejar alterar este registro devo fechar e abrir o sistema novamente.

Isto já aconteceu com alguém? qual seria solução?

[]´s
Adrian


Adria

Adria

Curtidas 0

Respostas

Pedro Bugim

Pedro Bugim

18/02/2004

Com meus sistemas, faço o seguinte:
Considere que estamos num formulário de alteração, criado à partir de um formulário principal (Frmprincipal), o qual possui uma IBQuery, um DataSource, uma IbTransaction e um DataBase, devidamente ligados e ligados à tabela em questão.
No evento ´OnClick´ do botão ´Aterar´ coloque o código:


With Frmprincipal.IBQuery do
Begin
  Close;
  Sql.Clear;
  Sql.Add(´Update table....´);
  FrmPrincipal.IbTransaction.Active:=True;
  FrmPrincipal.IbTransaction.CommitRetainaing;
  ExecSql;
end;
With FrmPrincipal.IBQuery do 
Begin
  Close;
  sql.Clear;
  Sql.Add(´Select * from TABELA´);
  Open;
End;
Close;


É necessário dar um commitRetaining na IBTransaction e um execsql para a alteração ser devidamente armazenada. Logo após, antes de fechar o form, deve-se fazer um select novamente na tabela, para que as modificações sejam atualizadas no formulário aonde os dados são expostos!
Espero ter ajudado!
Se não funcionar, manda o erro que apareceu, ok?!
Abraços,


GOSTEI 0
Adria

Adria

18/02/2004

Eu nao estou utilizando IBQuery, somente IBTable e estou salvando pelo método post, inclusive as alterações... há problema nisto?
Depois de post utilizo IBtransaction.commitRetaining

adria


GOSTEI 0
Pedro Bugim

Pedro Bugim

18/02/2004

Putz! IBTable e Post são a maior furada! Claro que é beeeem mais simples de se utilizar, mas não são muito confiáveis... procure utilizar querys, pois são mais garantidas!
se quiser algumas dicas de como utilizá-las, pode perguntar que eu te passo os macetes, ok?!
Abraços,


GOSTEI 0
Adria

Adria

18/02/2004

Se puderes me passar dicas de query ficarei muito grata.

Adri


GOSTEI 0
Pedro Bugim

Pedro Bugim

18/02/2004

Adria,
Primeiramente, a grande vantagem de utilizar querys, é poder manipular código sql, ou seja, com uma mesma query, pode-se fazer distintos selects, alterações, exclusões e inclusões.
Deve-se inicialmente incluir no projeto, uma IBQuery, um DataSourse, um IBDataBase e um IBTransaction.
No IBTransaction, coloca-se a IBDatabase na propriedade ´Default DataBase´. No DataSourse, coloca-se a IBQuery no ´Dataset´. Já na IBDataBase, coloque:
- DataBaseName: path onde se encontra seu bd
- Default Transaction: IBTransaction1

Na IBQuery, coloque:
- DataBase: IBDataBase1
- Login prompt: false
- Params: Username=NOME_DO_USUÁRIO
password=SENHA_DO_USUÁRIO
(osb. Normalmente, como default, utiliza-se sysdba e masterkey respectivamente.)
- Sql: Aqui, vc coloca um select simples em cima da tabela que irá trabalhar;

Aí, quando for fazer alguma manipulação dos dados, basta colocar o seguinte código:

With IBQuery1 do
Begin
Close; //fecha a query
sql.Clear; // limpa o código sql que estiver na query
Sql.Add(´.....´); //Adiciona o código desejado
***
end;

No lugar de *** coloca-se:
- Open; //quando o sql colocadio for um select
- IBTransaction.Active:=true;
IBTransaction.CommitRetaining;
ExecSql; //qndo o sql for para exclusão, inserção ou alteração

Ufa! Ficou gigantesco e ainda falta alguma coisa... Infelizmente tá na minha hora de ir embora do trabalho (ainda bem!). Mas pode deixar que amanhã eu termino, ok?!
Aliás, se quiser me passar teu mail, posso te enviar isso bem melhor!
De início parece bem complicado, mas no fundo é pior! caracas! Brincadeira! É bem simples e muito mais funcional que tables e post.

Espero ter ajudado!


GOSTEI 0
POSTAR