Tema: Out of date
Ver Mensaje Individual
  #3  
Antiguo 12-07-2007
Arturo_ Arturo_ is offline
Miembro
 
Registrado: jul 2007
Posts: 48
Reputación: 0
Arturo_ Va por buen camino
Index Out Date

// Este Procedimiento te Ayudara a reparar tus Indices estudialo y veraz...

Código Delphi [-]
procedure TForm_MAIN.SpeedButton_DATABASE_REPAIRClick(Sender: TObject);
var
  FILE_Attrs : Integer;
  SEARCH_Rec : TSearchRec;
  FILE_Name  : string;
  FILE_Ext   : string;
  procedure DELETE_DataFile(pmt_FILENAME: string);
  begin      
    {$I-}
    if (IOResult = 0) then
    begin
      if (SYSUTILS.FindFirst(Init_PATH_RED + '\' + pmt_FILENAME, FILE_Attrs, SEARCH_Rec) = 0) then
      begin
        repeat
          FILE_Name := UpperCase(ExtractFileName(SEARCH_Rec.Name));
          FILE_Name := Copy(FILE_Name, 1, Pos('.', FILE_Name) - 1);
          FILE_Ext := UpperCase(ExtractFileExt(SEARCH_Rec.Name));
          if ((SEARCH_Rec.Attr and FILE_Attrs) = SEARCH_Rec.Attr) and
             (FILE_Ext <> '.DB') and
             (FILE_Ext <> '.MB') then
            SYSUTILS.DeleteFile(Init_PATH_RED + '\' + SEARCH_Rec.Name);
        until (SYSUTILS.FindNext(SEARCH_Rec) <> 0);
        SYSUTILS.FindClose(SEARCH_Rec);
      end;
    end;
    {$I+}
  end;
begin
  // CREATE: Table_OFS and DataSource_OFS
  if (Tmp_TABLE_OFS = nil) then
  begin
    Tmp_TABLE_OFS := TTable.Create(Owner);
    Tmp_TABLE_OFS.Name := 'Tmp_TABLE_OFS';
    Tmp_TABLE_OFS.SessionName := 'Session_DELPHI_1';
    Tmp_TABLE_OFS.DatabaseName := 'DELPHI_Data';
    Tmp_TABLE_OFS.TableType := ttParadox;
    Tmp_TABLE_OFS.TableName := 'DDBTLM01.DB';
    Tmp_TABLE_OFS.MasterSource := nil;
    Tmp_TABLE_OFS.MasterFields := '';
    Tmp_TABLE_OFS.IndexFieldNames := '';
  end;
  if (Tmp_DS_OFS = nil) then
  begin
    Tmp_DS_OFS := TDataSource.Create(Owner);
    Tmp_DS_OFS.Name := 'Tmp_DS_OFS';
    Tmp_DS_OFS.DataSet := Tmp_TABLE_OFS;
    Tmp_DS_OFS.Enabled := True;
  end;
  // Init
  Gauge_DATABASE.Progress := 0;
  Gauge_DATABASE.MaxValue := 17;
  FILE_Attrs := (SYSUTILS.faReadOnly + SYSUTILS.faHidden
                + SYSUTILS.faSysFile + SYSUTILS.faVolumeID
                + SYSUTILS.faArchive + SYSUTILS.faAnyFile);
  // Execute >> Tables_DDBTLM
  if (CheckBox_Tables_DDBTLM.Checked) then
  begin
    // Table_DDBTLM01
    Tmp_TABLE_OFS.TableName := 'DDBTLM01.DB';
    DELETE_DataFile('DDBTLM01.*');
    Tmp_TABLE_OFS.AddIndex('', 'LINK_0001', [ixPrimary]);
    Tmp_TABLE_OFS.AddIndex('ID_Table_Name', 'Table_Name', [ixCaseInsensitive]);
    Gauge_DATABASE.Progress := Gauge_DATABASE.Progress + 1;
    // Table_DDBTLM02
    Tmp_TABLE_OFS.TableName := 'DDBTLM02.DB';
    DELETE_DataFile('DDBTLM02.*');
    Tmp_TABLE_OFS.AddIndex('', 'LINK_0001;LINK_0002', [ixPrimary]);
    Tmp_TABLE_OFS.AddIndex('ID_LINK_0001_', 'LINK_0001;LINK_0001_', [ixCaseInsensitive]);
    Tmp_TABLE_OFS.AddIndex('ID_LINK_0002_', 'LINK_0001;LINK_0001_;LINK_0002_', [ixCaseInsensitive]);
    Tmp_TABLE_OFS.AddIndex('ID_LINK_0003_', 'LINK_0001;LINK_0001_;LINK_0002_;LINK_0003_', [ixCaseInsensitive]);
    Tmp_TABLE_OFS.AddIndex('ID_LINK_0004_', 'LINK_0001;LINK_0001_;LINK_0002_;LINK_0003_;LINK_0004_', [ixCaseInsensitive]);
    Tmp_TABLE_OFS.AddIndex('ID_LINK_0005_', 'LINK_0001;LINK_0001_;LINK_0002_;LINK_0003_;LINK_0004_;LINK_0005_', [ixCaseInsensitive]);
    Tmp_TABLE_OFS.AddIndex('ID_LINK_0006_', 'LINK_0001;LINK_0001_;LINK_0002_;LINK_0003_;LINK_0004_;LINK_0005_;LINK_0006_', [ixCaseInsensitive]);
    Tmp_TABLE_OFS.AddIndex('ID_LINK_0007_', 'LINK_0001;LINK_0001_;LINK_0002_;LINK_0003_;LINK_0004_;LINK_0005_;LINK_0006_;LINK_0007_', [ixCaseInsensitive]);
    Tmp_TABLE_OFS.AddIndex('ID_LINK_0008_', 'LINK_0001;LINK_0001_;LINK_0002_;LINK_0003_;LINK_0004_;LINK_0005_;LINK_0006_;LINK_0007_;LINK_0008_', [ixCaseInsensitive]);
    Tmp_TABLE_OFS.AddIndex('ID_LINK_0009_', 'LINK_0001;LINK_0001_;LINK_0002_;LINK_0003_;LINK_0004_;LINK_0005_;LINK_0006_;LINK_0007_;LINK_0008_;L  INK_0009_', [ixCaseInsensitive]);
    Gauge_DATABASE.Progress := Gauge_DATABASE.Progress + 1;
    // Table_MUS
    Table_MUS.Close;
    Tmp_TABLE_OFS.TableName := 'MUSICAS.DB';
    DELETE_DataFile('MUSICAS.*');
    Tmp_TABLE_OFS.AddIndex('', 'LINK_0001', [ixPrimary]);
    Tmp_TABLE_OFS.AddIndex('ID_Ord', 'MUSIC_Order', [ixCaseInsensitive]);
    Gauge_DATABASE.Progress := Gauge_DATABASE.Progress + 1;
    Table_MUS.Open;
  end;
  // Execute >> Tables_ECAM
  if (CheckBox_Tables_SYSTEM.Checked) then
  begin
    // Table_PRJ
    Tmp_TABLE_OFS.TableName := 'EMPPRJ.DB';
    DELETE_DataFile('EMPPRJ.*');
    Tmp_TABLE_OFS.AddIndex('', 'LINK_0001', [ixPrimary]);
    Tmp_TABLE_OFS.AddIndex('ID_Fec', 'Fecha', [ixCaseInsensitive]);
    Tmp_TABLE_OFS.AddIndex('ID_Prj', 'Proyecto', [ixCaseInsensitive]);
    Gauge_DATABASE.Progress := Gauge_DATABASE.Progress + 1;
    // Table_CVMMOV
    Tmp_TABLE_OFS.TableName := 'CVMMOV.DB';
    DELETE_DataFile('CVMMOV.*');
    Tmp_TABLE_OFS.AddIndex('', 'LINK_0001;LINK_0002', [ixPrimary]);
    Tmp_TABLE_OFS.AddIndex('ID_Fec', 'LINK_0001;Fecha', [ixCaseInsensitive]);
    Gauge_DATABASE.Progress := Gauge_DATABASE.Progress + 1;
    // Table_CVMITM
    Tmp_TABLE_OFS.TableName := 'CMVITM.DB';
    DELETE_DataFile('CVMMOV.*');
    Tmp_TABLE_OFS.AddIndex('', 'LINK_0001;LINK_0002;LINK_0003', [ixPrimary]);
    Tmp_TABLE_OFS.AddIndex('ID_Itm', 'LINK_0001;LINK_0002;Item', [ixCaseInsensitive]);
    Gauge_DATABASE.Progress := Gauge_DATABASE.Progress + 1;
    // Table_STDANO
    Tmp_TABLE_OFS.TableName := 'STDANO.DB';
    DELETE_DataFile('STDANO.*');
    Tmp_TABLE_OFS.AddIndex('', 'LINK_0001;LINK_0002', [ixPrimary]);
    Tmp_TABLE_OFS.AddIndex('ID_Ano', 'LINK_0001;Ano', [ixCaseInsensitive]);
    Gauge_DATABASE.Progress := Gauge_DATABASE.Progress + 1;
    // Table_STDMES
    Tmp_TABLE_OFS.TableName := 'STDMES.DB';
    DELETE_DataFile('STDMES.*');
    Tmp_TABLE_OFS.AddIndex('', 'LINK_0001;LINK_0002;LINK_0003', [ixPrimary]);
    Gauge_DATABASE.Progress := Gauge_DATABASE.Progress + 1;
    // Table_KDXALM
    Tmp_TABLE_OFS.TableName := 'KDXALM.DB';
    DELETE_DataFile('KDXALM.*');
    Tmp_TABLE_OFS.AddIndex('', 'LINK_0001;LINK_0002', [ixPrimary]);
    Tmp_TABLE_OFS.AddIndex('ID_Alm', 'LINK_0001;Almacen', [ixCaseInsensitive]);
    Gauge_DATABASE.Progress := Gauge_DATABASE.Progress + 1;
    // Table_KDXPRD
    Tmp_TABLE_OFS.TableName := 'KDXPRD.DB';
    DELETE_DataFile('KDXPRD.*');
    Tmp_TABLE_OFS.AddIndex('', 'LINK_0001;LINK_0002;LINK_0003', [ixPrimary]);
    Tmp_TABLE_OFS.AddIndex('ID_Prd', 'LINK_0001;LINK_0002;Producto', [ixCaseInsensitive]);
    Gauge_DATABASE.Progress := Gauge_DATABASE.Progress + 1;
    // Table_KDXHTR
    Tmp_TABLE_OFS.TableName := 'KDXHTR.DB';
    DELETE_DataFile('KDXHTR.*');
    Tmp_TABLE_OFS.AddIndex('', 'LINK_0001;LINK_0002;LINK_0003;LINK_0004', [ixPrimary]);
    Tmp_TABLE_OFS.AddIndex('ID_Fec', 'LINK_0001;LINK_0002;LINK_0003;Fecha', [ixCaseInsensitive]);
    Tmp_TABLE_OFS.AddIndex('ID_LINK_0002_', 'LINK_0001;LINK_0002;LINK_0003;LINK_0002_', [ixCaseInsensitive]);
    Tmp_TABLE_OFS.AddIndex('ID_LINK_0003_', 'LINK_0001;LINK_0002;LINK_0003;LINK_0002_;LINK_0003_', [ixCaseInsensitive]);
    Gauge_DATABASE.Progress := Gauge_DATABASE.Progress + 1;
    // Table_MTRPRT
    Tmp_TABLE_OFS.TableName := 'MTRPRT.DB';
    DELETE_DataFile('MTRPRT.*');
    Tmp_TABLE_OFS.AddIndex('', 'LINK_0001;LINK_0002', [ixPrimary]);
    Tmp_TABLE_OFS.AddIndex('ID_Tip', 'LINK_0001;Tipo', [ixCaseInsensitive]);
    Gauge_DATABASE.Progress := Gauge_DATABASE.Progress + 1;
    // Table_MTRPRD
    Tmp_TABLE_OFS.TableName := 'MTRPRD.DB';
    DELETE_DataFile('MTRPRD.*');
    Tmp_TABLE_OFS.AddIndex('', 'LINK_0001;LINK_0002;LINK_0003', [ixPrimary]);
    Tmp_TABLE_OFS.AddIndex('ID_Prd', 'LINK_0001;LINK_0002;Producto', [ixCaseInsensitive]);
    Gauge_DATABASE.Progress := Gauge_DATABASE.Progress + 1;
    // Table_MTRCLT
    Tmp_TABLE_OFS.TableName := 'MTRCLT.DB';
    DELETE_DataFile('MTRCLT.*');
    Tmp_TABLE_OFS.AddIndex('', 'LINK_0001;LINK_0002', [ixPrimary]);
    Tmp_TABLE_OFS.AddIndex('ID_Nom', 'LINK_0001;Nombres', [ixCaseInsensitive]);
    Gauge_DATABASE.Progress := Gauge_DATABASE.Progress + 1;
    // Table_MTRPRV
    Tmp_TABLE_OFS.TableName := 'MTRPRV.DB';
    DELETE_DataFile('MTRPRV.*');
    Tmp_TABLE_OFS.AddIndex('', 'LINK_0001;LINK_0002', [ixPrimary]);
    Tmp_TABLE_OFS.AddIndex('ID_Nom', 'LINK_0001;Nombres', [ixCaseInsensitive]);
    Gauge_DATABASE.Progress := Gauge_DATABASE.Progress + 1;
    // Table_MTRIMP
    Tmp_TABLE_OFS.TableName := 'MTRIMP.DB';
    DELETE_DataFile('MTRIMP.*');
    Tmp_TABLE_OFS.AddIndex('', 'LINK_0001;LINK_0002', [ixPrimary]);
    Gauge_DATABASE.Progress := Gauge_DATABASE.Progress + 1;
    // Table_BNKFLT
    Tmp_TABLE_OFS.TableName := 'BNKFLT.DB';
    DELETE_DataFile('BNKFLT.*');
    Tmp_TABLE_OFS.AddIndex('', 'LINK_0001', [ixPrimary]);
    Gauge_DATABASE.Progress := Gauge_DATABASE.Progress + 1;
  end;
  // Done
  Gauge_DATABASE.Progress := 17;
  // DESTROY: Objects_EMP
  if (Tmp_TABLE_OFS <> nil) then
  begin
    Tmp_TABLE_OFS.Close;
    Tmp_TABLE_OFS.Free;
    Tmp_TABLE_OFS := nil;
  end;
  if (Tmp_DS_OFS <> nil) then
  begin
    Tmp_DS_OFS.Free;
    Tmp_DS_OFS := nil;
  end;
end;

Última edición por marcoszorrilla fecha: 12-07-2007 a las 19:27:38.
Responder Con Cita