Fórum Gravação dos dados no banco de dados - Conexão com FDConection #616160
01/07/2021
0
Boa tarde pessoal, estou tendo um problema na hora de gravar meus registros no banco de dados. Quando eu clico em GRAVAR e vou olhar lá no banco de dados e dou um commit o código gerado não aparece. Em outro projeto que eu fiz utilizei os componentes da palheta INTERBASE e dava certo (quando eu clicava em GRAVAR e ia olhar la no banco e dava o commit o código aparecia) e utilizando os componentes da palheta do FIREDAC não esta dando certo. No meu projeto estou usando para fazer conexão com o banco os seguintes componentes:
FDConnection1
FDTransaction1
FDGUIxWaitCursor1
FDPhysFBDriverLink1
FDQuery1
FDConnection1
>>Properties (Transaction):FDTransaction1
FDQuery1
>>Properties (Transaction):FDTransaction1
Nos botões NOVO , EDITAR, CANCELAR , GRAVAR eu uso o seguinte condido:
BOTAO NOVO
dados.FDTransaction.StartTransaction;
dados.fdq_LF_Resultados.Append;
...
BOTAO EDITAR
dados.FDTransaction.StartTransaction;
dados.fdq_LF_Resultados.Edit;
...
BOTAO CANCELAR
dados.fdq_LF_Resultados.Cancel;
dados.FDTransaction.RollbackRetaining;
...
BOTAO GRAVAR
dados.fdq_LF_Resultados.Post;
dados.FDTransaction.CommitRetaining;
...
E dentro do FDQuery - Query Editor - Options
- Automatic incrementing
Fetch next gener. Value point : gpDeferred
Generator : GEN_LF_RESULTADOS_ID
Autoinc fields : ID_JOGOS
Gostaria de saber como eu devo fazer as ligações para que no momento que eu clicar em gravar e for lá no banco ver e der o commit o código gerado esteja lá, pois ate o presente momento ele só aparece quando estou fechando o form.
Obs. Os números tem que ser sequenciais, pois eles serão usados como números dos concursos e não pode ter pulo entre eles.
FDConnection1
FDTransaction1
FDGUIxWaitCursor1
FDPhysFBDriverLink1
FDQuery1
FDConnection1
>>Properties (Transaction):FDTransaction1
FDQuery1
>>Properties (Transaction):FDTransaction1
Nos botões NOVO , EDITAR, CANCELAR , GRAVAR eu uso o seguinte condido:
BOTAO NOVO
dados.FDTransaction.StartTransaction;
dados.fdq_LF_Resultados.Append;
...
BOTAO EDITAR
dados.FDTransaction.StartTransaction;
dados.fdq_LF_Resultados.Edit;
...
BOTAO CANCELAR
dados.fdq_LF_Resultados.Cancel;
dados.FDTransaction.RollbackRetaining;
...
BOTAO GRAVAR
dados.fdq_LF_Resultados.Post;
dados.FDTransaction.CommitRetaining;
...
E dentro do FDQuery - Query Editor - Options
- Automatic incrementing
Fetch next gener. Value point : gpDeferred
Generator : GEN_LF_RESULTADOS_ID
Autoinc fields : ID_JOGOS
Gostaria de saber como eu devo fazer as ligações para que no momento que eu clicar em gravar e for lá no banco ver e der o commit o código gerado esteja lá, pois ate o presente momento ele só aparece quando estou fechando o form.
Obs. Os números tem que ser sequenciais, pois eles serão usados como números dos concursos e não pode ter pulo entre eles.
Rubens Pena
Curtir tópico
+ 0
Responder
Post mais votado
01/07/2021
BOTAO GRAVAR
dados.fdq_LF_Resultados.Post; dados.fdq_LF_Resultados.CommitUpdates; // efetiva a gravação no banco de dados dados.FDTransaction.CommitRetaining;
Emerson Nascimento
Responder
Gostei + 1
Mais Posts
01/07/2021
Rubens Pena
BOTAO GRAVAR
dados.fdq_LF_Resultados.Post; dados.fdq_LF_Resultados.CommitUpdates; // efetiva a gravação no banco de dados dados.FDTransaction.CommitRetaining;
Mestre eu fiz da seguinte forma e esta dando certo, segue abaixo parte das linhas de código que utilizei nos botões NOVO e GRAVAR
//BOTAO NOVO:
procedure Tfrm_Resultados_LF.spb_NovoClick(Sender: TObject);
begin
dados.fdq_LF_Resultados.Active := True;
try
dados.fdq_LF_Resultados.Append;
dados.fdq_LF_Aux_Cod.Close;
dados.fdq_LF_Aux_Cod.SQL.Clear;
dados.fdq_LF_Aux_Cod.SQL.Text:='select gen_id(GEN_LF_RESULTADOS_ID,0) from rdb$database' ;
dados.fdq_LF_Aux_Cod.Open();
DBEdit1.Text:=IntToStr(dados.fdq_LF_Aux_Cod.FieldByName('gen_id').AsInteger+1);
...//BOTAO GRAVAR
procedure Tfrm_Resultados_LF.spb_GravarClick(Sender: TObject);
begin
dados.fdq_LF_ResultadosDATA_CONCURSO.AsDateTime := dtp_Data_Concuso.Date;
dados.fdq_LF_Resultados.Post;
dados.fdq_LF_Resultados.ApplyUpdates(0);
dados.fdq_LF_Aux_Cod.Close;
dados.fdq_LF_Aux_Cod.SQL.Clear;
dados.fdq_LF_Aux_Cod.SQL.Text:='select gen_id(GEN_LF_RESULTADOS_ID,1) from rdb$database' ;
dados.fdq_LF_Aux_Cod.Open();
...Fiz do modo como me disse deu certo.
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)