Fórum uma de minhas transições não funciona direito no delphi com firebird #405179

18/07/2011

0

Criei um procedimento onde gero uma consulta com uma sqlquery e o resultado é transferido para outra tabela que possue disposições diferentes porem a mesma grava linha a linha tudo ocorre como o esperado mas só é atualizado se fechar o programa, estou usando dbexpress e firebird o codio é o a seguir.
transição 
  id_aux := 0; Start;          try             WITH dm.spauxembIU do                 begin                       params[0].AsInteger := dm.cdsauxembCODIGO.AsInteger;                       params[1].AsString := dm.cdsauxembCODIGOPRODUTO.AsString;                       params[2].AsInteger := dm.cdsauxembCONTROLE.AsInteger;                       params[3].AsString := dm.cdsauxembDESCRICAO.AsString;                       params[4].AsInteger := dm.cdsauxembCODPEDIDO.AsInteger;                       params[5].AsInteger := dm.cdsauxembCODCLIENTE.AsInteger;                       params[6].AsString := dm.cdsauxembPLACA.AsString;                       params[7].AsInteger := dm.cdsauxembPECA1.AsInteger;                       params[8].AsFloat := dm.cdsauxembPESO1.AsFloat;                       params[9].AsInteger := dm.cdsauxembPECA2.AsInteger;                       params[10].AsFloat := dm.cdsauxembPESO2.AsFloat;                       params[11].AsInteger := dm.cdsauxembPECA3.AsInteger;                       params[12].AsFloat := dm.cdsauxembPESO3.AsFloat;                       params[13].AsInteger := dm.cdsauxembPECA4.AsInteger;                       params[14].AsFloat := dm.cdsauxembPESO4.AsFloat;                       params[15].AsInteger := dm.cdsauxembPECA5.AsInteger;                       params[16].AsFloat := dm.cdsauxembPESO5.AsFloat;                       params[17].AsInteger := dm.cdsauxembPECA6.AsInteger;                       params[18].AsFloat := dm.cdsauxembPESO6.AsFloat;                       params[19].AsInteger := dm.cdsauxembPECA7.AsInteger;                       params[20].AsFloat := dm.cdsauxembPESO7.AsFloat;                       params[21].AsInteger := dm.cdsauxembPECA8.AsInteger;                       params[22].AsFloat := dm.cdsauxembPESO8.AsFloat;                       params[23].AsInteger := dm.cdsauxembPECA9.AsInteger;                       params[24].AsFloat := dm.cdsauxembPESO9.AsFloat;                       params[25].AsInteger := dm.cdsauxembPECA10.AsInteger;                       params[26].AsFloat := dm.cdsauxembPESO10.AsFloat;                       params[27].AsInteger := dm.cdsauxembPECA11.AsInteger;                       params[28].AsFloat := dm.cdsauxembPESO11.AsFloat;                       params[29].AsInteger := dm.cdsauxembPECA12.AsInteger;                       params[30].AsFloat := dm.cdsauxembPESO12.AsFloat;                       params[31].AsInteger := dm.cdsauxembPECA13.AsInteger;                       params[32].AsFloat := dm.cdsauxembPESO13.AsFloat;                       params[33].AsInteger := dm.cdsauxembPECA14.AsInteger;                       params[34].AsFloat := dm.cdsauxembPESO14.AsFloat;                       params[35].AsInteger := dm.cdsauxembPECA15.AsInteger;                       params[36].AsFloat := dm.cdsauxembPESO15.AsFloat;                       execproc;                       Comit;                       id_aux := params[37].AsInteger;
                 end;          except                Rollback;          end;// fim da transição no data module

//inicio do evento 

      strsql:='select * from tempauxemb where dataemissao = '''+formatdatetime('dd.mm.yyyy',datetimepicker1.Date)+''' And CodPedido = '''+dbtext2.Caption+''' order by descrel ';               dmbusca.Query1.Close;               dmbusca.Query1.SQL.Clear;               dmbusca.Query1.SQL.Add(strsql);               dmbusca.Query1.Open;
            //limpa tabela auxiliar do embarque          try             transc.IsolationLevel := xilreadcommitted;             transc.TransactionID := strtoint(idtransaction);             sqlconnection1.Connected := true;             sqlconnection1.Open;             SQLCONNECTION1.StartTransaction(TRANSC);             errorcode := sqlconnection1.ExecuteDirect('delete from AUXEMB');             if errorcode = 0 then             begin                  sqlconnection1.Commit(transc);             end;             if errorcode <> 0 then            //  SQLConnection1.Rollback(Transc);                raise exception.Create('error: code = '+ inttostr(errorcode))
             except                    on E: Exception do                   ShowMessage( E.Message )         end;         //termina a transaçao
         //REINICIA SEQUENCIA          try             transc.IsolationLevel := xilreadcommitted;             transc.TransactionID := strtoint(idtransaction);             sqlconnection1.Connected := true;             sqlconnection1.Open;             SQLCONNECTION1.StartTransaction(TRANSC);             errorcode := sqlconnection1.ExecuteDirect('SET GENERATOR seq_auxemb TO 0');             if errorcode = 0 then             begin                  sqlconnection1.Commit(transc);             end;             if errorcode <> 0 then            //  SQLConnection1.Rollback(Transc);                raise exception.Create('error: code = '+ inttostr(errorcode))
             except                    on E: Exception do                   ShowMessage( E.Message )         end;         //termina a transaçao

        dmbusca.Query1.First;         Auxilio := 1;         Auxcontrole := 1;
                  while not dmbusca.Query1.Eof do              begin                     If Auxilio=1 Then                       Begin                       dm.cdsauxemb.Insert;                       dm.cdsauxembcodpedido.AsInteger := dmbusca.Query1codpedido.AsInteger;                       dm.cdsauxembCODIGOPRODUTO.AsString:= dmbusca.Query1CODIGOPRODUTO.Value;                       filters(DM.cdspedido, fsInteger,inttostr(dmbusca.Query1codpedido.AsInteger));                       dm.cdsauxembcodcliente.AsInteger :=dm.cdspedidoCODCLIENTE.AsInteger;                       dm.cdsauxembDESCRICAO.AsString:=dmbusca.Query1DESCREL.AsString;                       dm.cdsauxembCONTROLE.AsInteger:=AuxControle;
                       dm.cdsauxembPLACA.AsString:= dmbusca.Query1PLACA.AsString;                       dm.cdsauxembPECA1.AsInteger:= dmbusca.Query1QTDEPC.AsInteger;                       dm.cdsauxembPESO1.AsFloat:=dmbusca.Query1QTDEKG.AsFloat;                       AuxProduto := dmbusca.Query1CODIGOPRODUTO.AsString;                       dmbusca.Query1.Next;

                       If AuxProduto=dmbusca.Query1CODIGOPRODUTO.AsString then                          begin                                dm.cdsauxembPECA2.AsInteger:=dmbusca.Query1QTDEPC.AsInteger;                                dm.cdsauxembPESO2.AsFloat:=dmbusca.Query1QTDEKG.AsFloat;                                dmbusca.Query1.Next;

                         dm.cdsauxemb.Post;                         
                         AuxControle:=AuxControle+1;
                 End;
                  AuxProduto := dmbusca.Query1CODIGOPRODUTO.AsString;

                     If AuxProduto<>dmbusca.Query1CODIGOPRODUTO.AsString Then                   AuxProduto := dmbusca.Query1CODIGOPRODUTO.AsString;                   Auxilio:=1;

sera que alguem pode me dizer porque não atualiza a tabela sem que reinicie o program se estou usando a transição como nas outras e todas deram certo?
Nislei Cassio

Nislei Cassio

Responder

Posts

18/07/2011

José Curdo

Em que momento após o Commit você tenta verificar se os dados foram gravados?  Qual instrução no seu exemplo você utiliza?
Responder

Gostei + 0

18/07/2011

Nislei Cassio


  APÓS O COMIT DOU UM CLICK EM UM BOTÃO E ELE GERA UM RELATÓRIO MAS SE FAÇO UM COMMIT NO IBEXPRESS VERIFICO QUE AO CONTRARIO DAS DEMAIS ESTA NAO RETORNA NADA E O MESMO ACONTECE NO RELATORIO POIS PRECISO DESSES DADOS PARA GERAR A SQL DO RELATÓRIO 
Responder

Gostei + 0

09/05/2013

José

Este tópico esta sendo fechado por inatividade. Se necessário, sinalizar para que seja reaberto ou abrir um novo.
Responder

Gostei + 0

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

Aceitar