Crear campos en una tabla (Access) por código, utilizando ADOX
En este ejemplo vamos a crear un par de campos de tipo String, una clave primaria y un campo de tipo entero y Autonumérico (Autoincremental) para probar las propiedades de ADOX:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | 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); |
Primero se crea la tabla, posteriormente se crean los objetos columna (coColumn) y se modifican sus propiedades, para finalmente añadirlo a la tabla. Finalmente se crea el objeto coKey para definir la clave primaria, se añade la columna que la compone y este objeto se añade también a la tabla creada.
Embarcadero MVP.
Analista y Programador de Sistemas Informáticos.
Estudios de Informática (Ingeniería Técnica Superior) en la UPC (Universidad Politécnica de Barcelona).
Llevo utilizando Delphi desde su versión 3. Especialista en diseño de componentes, Bases de Datos, Frameworks de Persistencia, Integración Continua, Desarrollo móvil,…