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 de orande
1
1
orande, Amplios conocimientos y experiencia en Visual Basic, SQL Server y...
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.
1 comentario
Me da un error "No se ha definido el tipo definido por el usuario" y me marca el "Dim TBL AS ADOX.TABLE", tengo excel 2016. Tiene algo que ver???? - David Alavedra
Me da un error "No se ha definido el tipo definido por el usuario" y me marca el "Dim TBL AS ADOX.TABLE", tengo excel 2016. Tiene algo que ver???? - David Alavedra