Fórum [Ajuda] Não consigo gravar no bando de dados #475040

03/04/2014

0

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

Responder

Posts

03/04/2014

Ricardo

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.
Responder

Gostei + 0

03/04/2014

Bruno Souza

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.
Responder

Gostei + 0

03/04/2014

Ricardo

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
Responder

Gostei + 0

03/04/2014

Bruno Souza

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.
Responder

Gostei + 0

03/04/2014

Ricardo

Que banco você esta usando? por acaso você está dando um commit depois do post?
Responder

Gostei + 0

05/04/2014

Mauricio Rodrigues

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

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar