¿Cómo insertar un campo?

Estoy haciendo un sistema donde es necesario agregarle un campo a mi tabla en access, por el momento no se como lograrlo, te comento que creo un recordset.

1 Respuesta

Respuesta
1
Para saber como insertar un campo, como para casi todas las preguntas que tengan relación con Access, lo primero que tienes que indicarme es si utilizar DAO o ADO, me da igual la version:
* Insertar un campo con DAO:
Dim TD as DAO.TableDef
Dim FD as DAO.Field
Dim IX as DAO.Index
'Si la tabla no existe
Set TD = BD.CreateTableDef("Tabla1")
'Si la tabla existe
Set TD = BDPadrino.TableDefs("Tabla1")
'Añadir un campo de texto de 6 caracteres
Set FD = TD.CreateField("Campo1", dbText, 6)
TD.Fields.Append FD
TD.Fields.Refresh
'Añadir un campo entero con posibles valores nulos
Set FD = TD.CreateField("Campo2", dbInteger)
FD.AllowZeroLength = True
'Convertir el primer campo en clave primaria
Set IX = TD.CreateIndex("PrimaryKey")
Set FD = IX.CreateField("Campo1", dbText, 6)
IX.Fields.Append FD
IX.Fields.Refresh
IX.Properties("Primary").Value = True
IX.Properties("Unique").Value = True
TD.Indexes.Append IX
TD.Indexes.Refresh
'Añadimos la tabla a la BD (si la hemos creado nueva)
BD.TableDefs.Append TD
BD.TableDefs.Refresh
* Insertar un campo con ADO:
Dim TBL as ADOX.Table
Dim PK As ADOX.Key
'Si la tabla no existe
Set TBL = New ADOX.Table
TBL.Name = "Tabla1"
'Si la tabla existe
Set TBL = BD.Tables("Tabla1")
'Añadir un campo de texto de 6 caracteres
TBL.Columns.Append "Campo1", adVarWChar, 6
'Añadir un campo entero con posibles valores nulos
TBL.Columns.Append "Campo2", adSmallInt
TBL.Columns("Campo2").Attributes = adColNullable
'Convertir el primer campo en clave primaria
Set PK = New ADOX.Key
PK.Name = "PK_Tabla1"
PK.Type = adKeyPrimary PK.Columns.Append "Campo1", adVarWChar, 6
TBL. Keys. Append PK
BD. Tables. Append TBL
BD. Tables. Refresh
Mira tengo una duda, si creo mi recordset de la siguiente manera:
Dim rst As ADODB.Recordset
Public cnx As ADODB.Connection
Puedo poner el procedimiento que tu me diste, si mayor problemas o se sigue otro método para este caso. Disculpa la pregunta, pero no se y me gustaría que me ayudaras.
Muchas gracias
El procedimiento que te escribí era para que lo tomaras de ejemplo y lo adaptaras a tu aplicación. Como poder puedes poner los nombres de las variables que quieras y al nivel que quieras (Dim sera a nivel de procedimiento, Public a nivel de modulo... me imagino).
Lo único que si debes tener en cuenta es que no puedes crear campos con la referencia ADODB (que viene del "Microsoft ActiveX Data Objects 2.X Library) sino con la ADOX ("Microsoft Jet And Replication Objects 2.X Library").
Lamento el retraso, pero es que el fin de semana no puedo conectarme.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas