Fórum laço for com update #561836
02/09/2016
0
estou fazendo um laço for e dentro dele um update, porem percorre e não faz o update.
segue o código:
for i:=0 to Vfinal do
begin
//recuperando a listview
Vdata := ListView1.Items[i].SubItems[1];
Vvalor := ListView1.Items[i].SubItems[2];
Vnosso_numero := ListView1.Items[i].SubItems[3];
// alterando a data para padrão MySql
vSql_data := QuotedStr(DateSQL(Vdata));
// fazendo a busca na tabela boletos gerados
DM1.Q_boletos_gerados.Close;
DM1.Q_boletos_gerados.SQL.Clear;
DM1.Q_boletos_gerados.SQL.Add('Select * from tb_boletos_gerados where Nosso_numero='+QuotedStr(Vnosso_numero));
DM1.Q_boletos_gerados.Open;
if DM1.CDS_boletos_geradosRemessa.Value<>'S' then // verifica se foi enviado para remessa
begin
vCmr := QuotedStr('99');
DM1.Q_boletos_gerados.Close;
DM1.Q_boletos_gerados.SQL.Clear;
DM1.Q_boletos_gerados.SQL.Add('Update Tb_boletos_gerados set Remessa='+QuotedStr('S')+', Pago='+QuotedStr('S')+', Data_pagamento='+vSql_data+', Valor_pago='+QuotedStr(Vvalor)+', cmr='+vCmr+' Where Numero_documento='+QuotedStr(Vnosso_numero)+' and apagar is null');
try
// Se a alteração ocorrer
DM1.Q_boletos_gerados.ExecSql;
except
// Se a alteração não ocorrer
On E:Exception do
begin
Showmessage('Falha na Alteração dos Dados!'#13#10'Mensagem: '+E.Message);
end;
end;
end
else // se foi enviado para remessa e pago em loja
begin
vCmr := QuotedStr('02');
// INFORMAÇÕES SOBRE O BANCO DO TÍTULO
DM1.Q_boletos_gerados.Close;
DM1.Q_boletos_gerados.SQL.Clear;
DM1.Q_boletos_gerados.SQL.Add('Select * from tb_boletos_gerados Where Numero_documento ='+QuotedStr(Vnosso_numero));
DM1.Q_boletos_gerados.Open;
// qual o banco pertence o boleto
Vtipo_banco := QuotedStr(DM1.Q_boletos_gerados.FieldByName('C_banco_config_id').AsString);
// INFORMAÇÕES SOBRE O VALOR DE CUSTO DO TÍTULO
DM1.Q_cmr.Close;
DM1.Q_cmr.SQL.Clear;
DM1.Q_cmr.SQL.Add('Select * from tb_cmr where N_banco='+Vtipo_banco+' and Cmr='+vCmr);
DM1.Q_cmr.Open;
if DM1.Q_cmr.FieldByName('valor').AsString <> '' then
begin
vValor_cmr := QuotedStr(DM1.Q_cmr.FieldByName('valor').AsString);
end
else
begin
vValor_cmr := 'NULL';
end;
vRemessa := 'NULL';
DM1.Q_boletos_gerados.Close;
DM1.Q_boletos_gerados.SQL.Clear;
DM1.Q_boletos_gerados.SQL.Add('update Tb_boletos_gerados set Remessa='+vRemessa+', Pago='+QuotedStr('S')+', Data_pagamento='+vSql_data+', Valor_pago='+QuotedStr(vValor)+', Cmr='+QuotedStr('02')+', Baixa='+QuotedStr('S')+', valor_cmr_baixa='+vValor_cmr+' Where Numero_documento='+QuotedStr(Vnosso_numero)+' and apagar is null' );
try
// Se a alteração ocorrer
DM1.Q_boletos_gerados.ExecSql;
except
// Se a alteração não ocorrer
On E:Exception do
begin
Showmessage('Falha na Alteração dos Dados!'#13#10'Mensagem: '+E.Message);
end;
end;
end;
// Atualiza a Grid
DM1.Q_boletos_gerados.Close;
DM1.Q_boletos_gerados.SQL.Clear;
DM1.Q_boletos_gerados.SQL.Add('Select * from tb_boletos_gerados where pago is Null and Apagar is Null and Baixa is Null order by Nosso_numero Desc ');
DM1.Q_boletos_gerados.Open;
DM1.CDS_boletos_gerados.Close;
DM1.CDS_boletos_gerados.Open;
// desabilitando o botão equalizar
BitBtn2.Enabled := False;
end;
Marcos
Curtir tópico
+ 0Post mais votado
02/09/2016
Vfinal = ?
Tenta criar procedures de update, dentro do for você vai chamando as procedures e fica melhor de pescar alguma falha
ai é só debugar
Raimundo Pereira
Gostei + 2
Mais Posts
02/09/2016
Marcos
esta fazendo o loop do for, porem não faz o update... dei showmessage no sql, esta ok, cada vez que faz o loop apresenta a menssagem.
Gostei + 1
02/09/2016
Raimundo Pereira
Gostei + 0
03/09/2016
Marcos
Gostei + 0
03/09/2016
Raimundo Pereira
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)