GARANTIR DESCONTO

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.
Rubens Pena

Rubens Pena

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

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

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

Aceitar