[Ajuda] Não consigo gravar no bando de dados

Delphi

03/04/2014

Boa a tarde a todos.

Eu tenho uma tela com um campo edit que faz uma pesquisa e me mostra ela do dbgrid, uma vez que eu clico num campo do grid ele mostra todos os dados armazenados nos edits abaixo, até ai blz.

Agora eu preciso que ele faça o seguinte quando eu digitar ou seja alterar dado em um dos edits e clicar no botão " Alterar " eu preciso que ele altere no bando de dados.

Eu testei essas duas verssoes abaixo.

• Nesse primeiro quando eu altero ele altera no grid mas nao no banco de dados.

Datamodule2.IBQUERY1.Open;
Datamodule2.IBQUERY1.Edit;
Datamodule2.IBQUERY1.Fields[2].text := edit2.text;
Datamodule2.IBtable1.POST;


• Nesse segundo ele altera e grava porem ele fica travado no primeiro registro da tabela e não o registro q estou selecionando no momento ou seja eu posso editar o ultimo registro e no fim das contas ele altero o primeiro registro.

Datamodule2.IBtable1.Open;
Datamodule2.IBtable1.Edit;
Datamodule2.IBQUERY1.Fields[2].text := edit2.text;
Datamodule2.IBtable1.POST;



Obg e aguardo a ajuda!

Bruno Souza

Bruno Souza

Curtidas 0

Respostas

Ricardo

Ricardo

03/04/2014

Deixa ver se eu entendi; Você faz a pesquisa, retorna a mesma em um DBgrid e ao clicar em uma das linhas alguns campos são preenchidos com o valor do registro selecionado. Então você altera um desses valores no Edit e esses novos valores não são salvos no BD.

Se é isso o que acontece, a resposta é porque os dados ficam tipo que em "cache" no componente(Edit) e não é repassado a campo da tabela no BD. Você tem que passar esse valor direto para a tabela antes de dar o post.
GOSTEI 0
Bruno Souza

Bruno Souza

03/04/2014

Deixa ver se eu entendi; Você faz a pesquisa, retorna a mesma em um DBgrid e ao clicar em uma das linhas alguns campos são preenchidos com o valor do registro selecionado. Então você altera um desses valores no Edit e esses novos valores não são salvos no BD.

Se é isso o que acontece, a resposta é porque os dados ficam tipo que em "cache" no componente(Edit) e não é repassado a campo da tabela no BD. Você tem que passar esse valor direto para a tabela antes de dar o post.


É isso mesmo cara. porem como eu faço isso? eu ja tentei até deixar os dois códigos que passei no post inicial ativos, mas ai ele fica na de somente registrar no primeiro registro do banco de dados idependete do registro selecionado.
GOSTEI 0
Ricardo

Ricardo

03/04/2014

Passa o valor que você digitou no edit direto para o banco de dados. Supomos que vc usa uma query:

Query.FieldByName('campo da tabela').Asxxx := edit.text;
Query. Post;

Qualquer coisa manda o trecho do código no email ou skype. ricardo.cardosoti@gmail.com / ricardo.cardosoti
GOSTEI 0
Bruno Souza

Bruno Souza

03/04/2014

Passa o valor que você digitou no edit direto para o banco de dados. Supomos que vc usa uma query:

Query.FieldByName('campo da tabela').Asxxx := edit.text;
Query. Post;



Eu uso uma ibquery com datamodule.

Eu testei e ele reclamo que nao tava em modo edit ai adiconei o edit.

datamodule2.IBQuery1.EDIT;
datamodule2.IBQuery1.FieldByName('NOME_CLIENTE').AsString := edit2.text;
datamodule2.IBQuery1.Post;



Ele não da erro, altera no grid . Ai eu fecho e abro denovo e nada ele não gravo no DB.
GOSTEI 0
Ricardo

Ricardo

03/04/2014

Que banco você esta usando? por acaso você está dando um commit depois do post?
GOSTEI 0
Mauricio Rodrigues

Mauricio Rodrigues

03/04/2014

só o post não resolve, veja se está dando Read Committed no IBTransaction
GOSTEI 0
POSTAR