Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2018
75
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Delphi 3.54 KB | None | 0 0
  1. procedure TfrmPrincipal.btnDCClick(Sender: TObject);
  2. var
  3.   AdoQrySelectPedidos, AdoQrySelectPedidosLineas: TADOQuery;
  4.   ArrPedidos: TArreglo;
  5.   Add: boolean;
  6.   IdPedido: string;
  7.   i: integer;
  8.   cSQL: string;
  9. begin
  10.   btnDC.Enabled := False;
  11.  
  12.   try
  13.     // Obtener los Pedidos a cambiar (LUHN = False)
  14.     AdoQrySelectPedidos := OpenRecordSet(' SELECT TOP 2000 ID_PEDIDO FROM PEDIDOS WHERE LUHN = 0 AND PROCESADO = 0');
  15.     PBDC.Max := AdoQrySelectPedidos.RecordCount;
  16.     lblDC.Caption := 'Leyendo pedidos... (' + IntToStr(PBDC.Max) + ')';
  17.     Application.ProcessMessages;
  18.     while not AdoQrySelectPedidos.Eof do
  19.     begin
  20.       IdPedido := AdoQrySelectPedidos['ID_PEDIDO'];
  21.       Add := True;
  22.       // Obtener el estado del pedido (ESTADO <> 'C')
  23.       AdoQrySelectPedidosLineas := OpenRecordSet(' SELECT ESTADO FROM PEDIDOS_LINEAS WHERE ID_PEDIDO = ' + cCadena(IdPedido));
  24.       while not AdoQrySelectPedidosLineas.Eof do
  25.       begin
  26.         if (nz(AdoQrySelectPedidosLineas['ESTADO'], 'E') <> 'E') and (nz(AdoQrySelectPedidosLineas['ESTADO'], 'E') <> 'A') then
  27.         begin
  28.           Add := False;
  29.           break;
  30.         end;
  31.         AdoQrySelectPedidosLineas.Next;
  32.         Application.ProcessMessages;
  33.       end;
  34.       AdoQrySelectPedidosLineas.Close;
  35.       AdoQrySelectPedidosLineas.Free;
  36.  
  37.       if Add then
  38.       begin
  39.         SetLength(ArrPedidos, Length(ArrPedidos) + 1);
  40.         ArrPedidos[Length(ArrPedidos) - 1] := IdPedido;
  41.       end;
  42.  
  43.       ExecSQL('UPDATE PEDIDOS SET PROCESADO = 1 WHERE ID_PEDIDO = ' + cCadena(IdPedido));
  44.       PBDC.Position := PBDC.Position + 1;
  45.       AdoQrySelectPedidos.Next;
  46.     end;
  47.     AdoQrySelectPedidos.Close;
  48.     AdoQrySelectPedidos.Free;
  49.  
  50.     PBDC.Max := Length(ArrPedidos);
  51.     PBDC.Position := 0;
  52.     lblDC.Caption := 'Actualizando pedidos... (' + IntToStr(PBDC.Max) + ')';
  53.     Application.ProcessMessages;
  54.  
  55.     // Actualizar ID_PEDIDO
  56.     for i := 0 to Length(ArrPedidos) - 1 do
  57.     begin
  58.       cSQL := 'UPDATE PEDIDOS SET ID_PEDIDO = dbo.GetIdPedido(ID_PEDIDO), LUHN = 1 WHERE ID_PEDIDO = ' + cCadena(ArrPedidos[i]);
  59.       cSQL := cSQL + ';UPDATE PEDIDOS_PARTIDAS SET ID_PEDIDO = dbo.GetIdPedido(ID_PEDIDO) WHERE ID_PEDIDO = ' + cCadena(ArrPedidos[i]);
  60.       cSQL := cSQL + ';UPDATE PEDIDOS_LINEAS SET ID_PEDIDO = dbo.GetIdPedido(ID_PEDIDO) WHERE ID_PEDIDO = ' + cCadena(ArrPedidos[i]);
  61.       cSQL := cSQL + ';UPDATE PEDIDOS_ARCHIVOS SET ID_PEDIDO = dbo.GetIdPedido(ID_PEDIDO) WHERE ID_PEDIDO = ' + cCadena(ArrPedidos[i]);
  62.       cSQL := cSQL + ';UPDATE PEDIDOS_LINEAS_CONCEPTOS_FACTURACION SET ID_PEDIDO = dbo.GetIdPedido(ID_PEDIDO) WHERE ID_PEDIDO = ' + cCadena(ArrPedidos[i]);
  63.       cSQL := cSQL + ';UPDATE PEDIDOS_LINEAS_OPERADORES SET ID_PEDIDO = dbo.GetIdPedido(ID_PEDIDO) WHERE ID_PEDIDO = ' + cCadena(ArrPedidos[i]);
  64.  
  65.       // Ejecutar Consulta
  66.       SaveLog(cSQL);
  67.       ExecSQL(cSQL);
  68.  
  69.       PBDC.Position := PBDC.Position + 1;
  70.       Application.ProcessMessages;
  71.     end;
  72.  
  73.     Application.MessageBox(PChar('Se han convertido un total de (' + IntToStr(Length(ArrPedidos)) + ') pedidos.'),'Proceso Finalizado', MB_OK + MB_TASKMODAL + MB_ICONINFORMATION);
  74.     lblDC.Caption := '';
  75.     PBDC.Position := 0;
  76.     Application.ProcessMessages;
  77.   except
  78.     on E: Exception do
  79.     begin
  80.       lblDC.Caption := '';
  81.       PBDC.Position := 0;
  82.       Application.ProcessMessages;
  83.       btnDC.Enabled := True;
  84.       Application.MessageBox(PChar('Error al completar la operación: ' + E.Message), 'Error', MB_ICONERROR + MB_OK + MB_TASKMODAL);
  85.     end;
  86.   end;
  87.  
  88.   btnDC.Enabled := True;
  89. end;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement