Vamos a ver, no puede ser tan difícil.
Basándome en el código inicial, y añadiendo dos columnas, una para PK y otra para un campo entero Autoincremental queda así:
Código Delphi
[-]
procedure TForm1.Button1Click(Sender: TObject);
var
Catalog : _Catalog;
Table : _Table;
BaseName : String;
DS : String;
col : _Column;
key : _Key;
begin
// Nombre de la Base de Datos
BaseName := 'C:\Temp\MiBaseDatos.mdb';
// Create a Catalog Object
Catalog := CreateCOMObject(StringToGUID('ADOX.Catalog')) as _Catalog;
// Set the Connection String
DS := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source='+BaseName;
// Check if we already have such a file and delete it
If FileExists(BaseName) Then begin
DeleteFile(BaseName);
end;
// Create new Access database
Catalog.Create(DS);
// Create a Table Object
Table := CreateCOMObject(StringToGUID('ADOX.Table')) as _Table;
// Set the name of a table
Table.Name := 'MiTabla';
// Append Table into the base
Catalog.Tables.Append(Table);
// Now add two columns (fields) into the table
// Both are Text fields up to 128 characters
Table.Columns.Append('Nombre', adVarWChar, 128);
Table.Columns.Append('Apellido', adVarWChar, 128);
// Creamos el objeto columna para el autoIncremental
col := CoColumn.Create;
// BD a la que pertenece
col.ParentCatalog := Catalog;
col.Name := 'Auntoincremental';
// Tipo del campo
col.Type_ := adInteger;
// Asignamos que es un AutoIncremental
col.Properties['AutoIncrement'].Value := True;
// Añadimos la columna
Table.Columns.Append(col, adInteger, col.DefinedSize);
// Columna para la clave primaria
col := CoColumn.Create;
// BD a la que pertenece
col.ParentCatalog := Catalog;
col.Name := 'ClavePrimaria';
col.Type_ := adInteger;
// Añadirla
Table.Columns.Append(col, adInteger, col.DefinedSize);
// Creamos la clave primaria
Key := CoKey.Create;
Key.Name := 'ClavePrimaria';
Key.Type_ := adKeyPrimary;
// Columna que forma parte de la PK
Key.Columns.Append('ClavePrimaria', adInteger, 0 );
// Añadirla a la tabla
Table.Keys.Append(Key, 0, EmptyParam, Unassigned, Unassigned);
end;
Añade al uses ADOX_TLB y ComObj.
A mi me crea la tabla perfectamente con los 4 campos.
Pruébalo y dime algo.
La prueba "del delito".