Utilizo Ibo+Firebird y la siguiente rutina para la creación o reconstruccion de los indices:
Código:
procedure TCheque.Indice(Nome,Tabla,Campos:String);
begin
Query.Close;
Query.SQL.Clear;
Query.SQL.Text:='select RDB$INDEX_NAME from RDB$INDICES '+
'where RDB$INDEX_NAME='+#39+Nome+#39;
Query.Open;
if not Query.IsEmpty then
begin
Query.Close;
Query.SQL.Clear;
Query.SQL.Add('drop index '+Nome+';');
try
Query.Open;
except
Imprime('No se ha podido Eliminar el INDICE '+Nome+' en '+Tabla);
Transa.Rollback;
end;
Transa.Commit;
Imprime('Eliminado Indice '+Nome+' en '+Tabla);
end;
Query.Close;
Query.SQL.Clear;
Query.SQL.Add('create index '+Nome+' on '+Tabla+' ('+Campos+')');
try
Query.Open;
except
Imprime('No se ha podido crear el INDICE '+Nome+' en '+Tabla);
Transa.Rollback;
exit;
end;
Transa.Commit;
Imprime('Creado Indice '+Nome+' en '+Tabla);
Query.Close;
end;
y lo llamo de la siguiente manera:
Código:
Indice('RES_NUMERO','RES','RES_TIPO,RES_ANO,RES_NUMERO');
y solo consigo este error:
"FIeldNº: -1 not found". y los campos que incluyo existen en la tanbla. De hecho si inserto por consola este comando:
Código:
create index RES_NUMERO on RES (RES_TIPO,RES_ANO,RES_NUMERO);
funciona correctamente.
Alguien me puede ayudar?: