Ver Mensaje Individual
  #12  
Antiguo 01-03-2007
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.289
Reputación: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
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".
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.

Última edición por Neftali [Germán.Estévez] fecha: 01-03-2007 a las 13:06:31.
Responder Con Cita