Salvar dados no Firebird

Delphi

07/08/2010

Olá, gente.Estou utilizando Delphi 7, Firebird 2.1 e o componente Zeos para conexão com o banco. Para salvar os registros estou utilizando o método Post, mas não grava nada, mesmo assim o campo código está autoincrementando, isto é, quando tento salvar um registro com código 2, por exemplo, ele não salva mas o registro seguinte ele mostra o código 3.Já tentei com ApplyUpdates mas dá no mesmo.Alguém pode me dar uma ajuda?Valeu.
Walder

Walder

Curtidas 0

Respostas

Pietro Braga

Pietro Braga

07/08/2010

Olá amigo, tente fazer com Append

Exemplo:
ZTable.insert;
...
...
ZTable.Append;


Se estiver usando uma ZQuery pode fazer assim:

With ZQuery do

Active:= False;
SQL.Clear;
SQL.Text:= '**********';
SQL.Active:= True;


ou

With ZQuery do



close;

SQL.Clear;

SQL.Text:= '**********';

open;

GOSTEI 0
Walder

Walder

07/08/2010


Olá amigo, tente fazer com Append

Exemplo:
ZTable.insert;
...
...
ZTable.Append;


Se estiver usando uma ZQuery pode fazer assim:

With ZQuery do

Active:= False;
SQL.Clear;
SQL.Text:= '**********';
SQL.Active:= True;


ou

With ZQuery do





close;


SQL.Clear;


SQL.Text:= '**********';


open;


 
 

Olá, Pietro.estou fazendo assim: Tenho alguns botões no form. No botão Incluir tem o seguinte código:dmDados.T_Funcionario.Append;...onde T_Funcionario é ZTable.No botão Gravar tem o seguinte código:dmDados.T_Funcionario.Post;Após dar Post, enquanto a aplicação estiver sendo executada, os registros aparecem. Mas se eu fechar a aplicação e abrir novamente os registros não aparecem, e se eu for incluir outro registro o código é incrementado, isto é, se no registro anterior o código era 2, no próximo aparece 3.Valeu.
GOSTEI 0
Pietro Braga

Pietro Braga

07/08/2010

Bom, acho que agora eu entendi.
O botão incluir prepara o formulário para a inserção de dados não é?
E o botão gravar faz o commit...

Se for isso faça assim.

No botão incluir bote o seguinte código:
dmDados.T_Funciionario.Insert;

E no botão gravar coloque este:
dmDados.T_Funcionario.Append;


O que está acontecendo é que o comando Append grava os dados no banco.

Como vc não tem nada ainda no formulario, ele está gravando todos os campos em branco (nulo).

Espero que tenha ajudado.
GOSTEI 0
Walder

Walder

07/08/2010

Valeu mesmo, Pietro, mas não grava ainda.Tenho um outro aplicativo em Interbase e utilizo os mesmo comandos para inserção (Append) e gravação (ApplyUpdates(-1)). Só que neste aplicativo utilizo SQLConnection e SimpleDataSet, ambos da paleta dbExpress para conexão ao banco. Estou tentando migrar para o Firebird usando o Zeos para conexão, mas estou com este problema de gravação de dados.Vou tentar reconstruir a base de dados e refazer o código.Valeu pela ajuda.
GOSTEI 0
Emerson Nascimento

Emerson Nascimento

07/08/2010

não uso o simpledataset, somente o clientdataset, mas sei que eles têm as mesmas características.

procure pelo método OnReconcileError do seu simpledataset implemente-o com a linha:
ShowMessage(e.message);

esse método será disparado quando algum erro for retornado pelo banco de dados (sqlconnection).

volte a usar o método ApplyUpdates ao gravar. se houver algum erro, o método OnReconcileError irá exibi-lo e você poderá tomar as medidas necessárias para corrigi-lo.
GOSTEI 0
Walder

Walder

07/08/2010

Obrigado, Emerson.Vou tentar dessa forma.
GOSTEI 0
POSTAR