Access - criacao de indices,

Top  Previous  Next

Eu uso um objeto TQuery e faço duas sentenças SQL para remover o 

índice, prevendo alteração e outra para criar

 

    qryOut.SQL.Clear;

    qryOut.SQL.Add('DROP INDEX ' + 'ndxNomeDoIndice' + ' ON ' + 'NomeDaTabela');

    try

      qryOut.ExecSQL;

    except

    end;

 

// cTipo pode conter 'P' para índice primário ou 'U' para chave não duplicada

 

    qryOut.SQL.Clear;

    if (pos('P', cTipo) = 0and (pos('U', cTipo) > 0) then

       qryOut.SQL.Add('CREATE UNIQUE INDEX ')

    else

      qryOut.SQL.Add('CREATE INDEX ');

 

    qryOut.SQL.ADD('ndxNomeDoIndice' + ' ON ' + 'NomeDaTabela' + ' (' 

                   + 'Campos,que,compoem,o,indice' + ')')

    if pos('P', cTipo) > 0 then

       qryOut.SQL.Text := qryOut.SQL.Text + ' WITH PRIMARY';

    qryOut.ExecSQL;