Problema ao Editar Registro
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
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
Curtidas 0
Respostas
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:
É 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,
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
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
Depois de post utilizo IBtransaction.commitRetaining
adria
GOSTEI 0
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,
se quiser algumas dicas de como utilizá-las, pode perguntar que eu te passo os macetes, ok?!
Abraços,
GOSTEI 0
Adria
18/02/2004
Se puderes me passar dicas de query ficarei muito grata.
Adri
Adri
GOSTEI 0
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!
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