PDA

Ver la Versión Completa : ¿Cómo definir un "primary key" en tiempo de ejecución?


SMTZ
11-12-2005, 21:35:36
Hola, al buscar un registro dentro de una tabla con


MiDataSet.Tables.Item['MiTabla'].Rows.Find( 'texto a buscar' );


resulta que me de un error al no tener definida una clave primaria. En ese caso, hago lo siguiente:


var
PK : Array Of DataColumn;

begin

...

PK[0] := MiDataSet.Tables['MiTabla'].Columns['Columna'];
MiDataSet.Tables['MiTabla'].PrimaryKey := PK;

...

end;


Pero la primera linea ya falla dando el error object reference not set to an instance of an object. ¿Alguien sabe dónde está el fallo?

Gracias.

SMTZ
21-12-2005, 20:43:00
Buenas, la solución era sencilla. No había que definir una variable sino un tipo:


Type
PK = array of System.Data.DataColumn;

Begin

...

MiDataSet.Tables['MiTabla'].PrimaryKey := PK.Create ( MiDataSet.Tables['MiTabla'].Columns['MiColumna'] );

...

End;



Sin embargo, al ejecutarse esta linea da el siguiente error:
These columns don't currently have unique values

Tenía entendido que este error se da cuando no hay una clave primaria definida en la base de datos, pero es que es eso precisamente lo que hace esta línea.

En la BD de Oracle tengo definido un campo como "primary key", aunque también he probado como "unique" y sin atributos "especiales". El error siempre es el mismo, ¿sabeis el motivo?

Gracias.