Crear base de datos Access desde código.

19/07/2006 - 20:58 por xavendano | Informe spam
Saludos,

¿cómo puedo crear base de datos de access desde código .NET VS2005?


He logrado hacer varias cosas:
- Crear la base de datos utilizando las referencias ADO y ADOX
- Pero no logro crear una tabla X con la estructura indicada desde código?

Pueden darme una referencia de como hacer esto?

De antemano, gracias.

Preguntas similare

Leer las respuestas

#1 xavendano
20/07/2006 - 00:00 | Informe spam
Además,

La creación de la base de datos en un principio es en blanco.
Progresivamente se van incluyendo las tablas en estructuras diferentes

Pasa que cuando quiero "recuperar" o "setear" la base de datos para incluir
las nuevas estructuras de tablas, me presenta un error.

El ejemplo lo recuperé de la página del conocido "guille"...


Dim cat As ADOX.Catalog
Dim tbl As ADOX.Table
'
Set cat = New ADOX.Catalog
Set tbl = New ADOX.Table
'
' Abrir el catálogo (ESTA INSTRUCCION ME PRESENTA UN ERROR) (LA BASE DE
DATOS YA EXISTE) (ESTOY PASANDO LOS VALORES CORRECTOS)
cat.ActiveConnection = _
"Provider=" & cboProvider.Text & ";" & _
"Data Source=" & txtNombreBase.Text & ";"



"xavendano" wrote in message
news:e%
Saludos,

¿cómo puedo crear base de datos de access desde código .NET VS2005?


He logrado hacer varias cosas:
- Crear la base de datos utilizando las referencias ADO y ADOX
- Pero no logro crear una tabla X con la estructura indicada desde código?

Pueden darme una referencia de como hacer esto?

De antemano, gracias.

Respuesta Responder a este mensaje
#2 SoftJaén
20/07/2006 - 15:52 | Informe spam
"xavendano" preguntó:

¿cómo puedo crear base de datos de access desde código .NET VS2005?



Lo que es crear el archivo físico, en el siguiente enlace te lo explico:

Cómo crear una nueva base de datos Microsoft Access
http://mvp-access.com/softjaen/base...onet05.htm

- Pero no logro crear una tabla X con la estructura indicada desde código?

Pueden darme una referencia de como hacer esto?



Aparte de utilizar la biblioteca de ADOX para crear la tabla, puedes
utilizar el propio lenguaje SQL del motor de datos Microsoft Jet, para
ejecutar consultas CREATE TABLE. Si deseas conocer la sintaxis, consulta el
siguiente enlace:

Capítulo III. Cómo crear, modificar, copiar y eliminar tablas
http://mvp-access.com/softjaen/manu...qlj003.htm

En cuanto a utilizar la biblioteca de ADOX, consulta el siguiente manual, y
lo adaptas a Visual Basic 2005

Manual de la biblioteca de ADOX
http://mvp-access.com/softjaen/manu.../index.htm

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
Respuesta Responder a este mensaje
#3 SoftJaén
20/07/2006 - 16:17 | Informe spam
"xavendano" escribió:

Pasa que cuando quiero "recuperar" o "setear" la base de datos para
incluir las nuevas estructuras de tablas, me presenta un error.

' Abrir el catálogo (ESTA INSTRUCCION ME PRESENTA UN ERROR) (LA BASE DE
DATOS YA EXISTE) (ESTOY PASANDO LOS VALORES CORRECTOS)
cat.ActiveConnection = _
"Provider=" & cboProvider.Text & ";" & _
"Data Source=" & txtNombreBase.Text & ";"




En Visual Basic .net no puedes asignar la propiedad «ActiveConnection»
utilizando una cadena de conexión Ole Db. Eso sirve para ejecutar el código
con Visual Basic 6.0, pero en .net tienes que asignar expresamente un objeto
ADODB.Connection de la propia biblioteca de ADO.

Aquí tienes un ejemplo para crear una supuesta tabla de Clientes, utilizando
código de Visual Basic .net:

Dim cnn As New ADODB.Connection

Try

' Creamos la conexión
cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Mis documentos\Bd1.mdb"
cnn.Open()

Dim cat As New ADOX.Catalog
Dim tbl As New ADOX.Table

' Establecemos la conexión activa
cat.ActiveConnection = cnn

' Creamos la tabla
tbl = New ADOX.Table

With tbl
.Name = "Clientes"

' Añadimos los campos a la tabla
.Columns.Append("IdCliente", ADOX.DataTypeEnum.adInteger)
.Columns.Append("Nombre", ADOX.DataTypeEnum.adVarWChar, 50)
.Columns.Append("CIF", ADOX.DataTypeEnum.adVarWChar, 9)
.Columns.Append("FechaAlta", ADOX.DataTypeEnum.adDate)
.Columns.Append("Domicilio", ADOX.DataTypeEnum.adVarWChar, 50)
.Columns.Append("CPostal", ADOX.DataTypeEnum.adInteger)
.Columns.Append("Localidad", ADOX.DataTypeEnum.adVarWChar, 30)
.Columns.Append("Provincia", ADOX.DataTypeEnum.adVarWChar, 20)
.Columns.Append("Pais", ADOX.DataTypeEnum.adVarWChar, 20)
.Columns.Append("Telefono", ADOX.DataTypeEnum.adVarWChar, 10)
.Columns.Append("Fax", ADOX.DataTypeEnum.adVarWChar, 10)
.Columns.Append("TotaICompras", ADOX.DataTypeEnum.adCurrency)
.Columns.Append("Notas", ADOX.DataTypeEnum.adLongVarWChar)
End With

' Añadimos la tabla al catálogo
cat.Tables.Append(tbl)

cat = Nothing

Catch ex As Exception
MessageBox.Show(ex.Message)

Finally
' Cerramos la conexión
cnn.Close()
cnn = Nothing

End Try

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o
sugerido en el presente mensaje.
Respuesta Responder a este mensaje
#4 xavendano
20/07/2006 - 23:44 | Informe spam
Excelente Soft
Funcionó todo perfectamente...además, gracias por pasarme el dato entre ADO
y ADODB

Como siempre...gracias por tu colaboración!


"SoftJaén" wrote in message
news:
"xavendano" escribió:

Pasa que cuando quiero "recuperar" o "setear" la base de datos para
incluir las nuevas estructuras de tablas, me presenta un error.

' Abrir el catálogo (ESTA INSTRUCCION ME PRESENTA UN ERROR) (LA BASE DE
DATOS YA EXISTE) (ESTOY PASANDO LOS VALORES CORRECTOS)
cat.ActiveConnection = _
"Provider=" & cboProvider.Text & ";" & _
"Data Source=" & txtNombreBase.Text & ";"




En Visual Basic .net no puedes asignar la propiedad «ActiveConnection»
utilizando una cadena de conexión Ole Db. Eso sirve para ejecutar el
código
con Visual Basic 6.0, pero en .net tienes que asignar expresamente un
objeto
ADODB.Connection de la propia biblioteca de ADO.

Aquí tienes un ejemplo para crear una supuesta tabla de Clientes,
utilizando
código de Visual Basic .net:

Dim cnn As New ADODB.Connection

Try

' Creamos la conexión
cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Mis documentos\Bd1.mdb"
cnn.Open()

Dim cat As New ADOX.Catalog
Dim tbl As New ADOX.Table

' Establecemos la conexión activa
cat.ActiveConnection = cnn

' Creamos la tabla
tbl = New ADOX.Table

With tbl
.Name = "Clientes"

' Añadimos los campos a la tabla
.Columns.Append("IdCliente", ADOX.DataTypeEnum.adInteger)
.Columns.Append("Nombre", ADOX.DataTypeEnum.adVarWChar, 50)
.Columns.Append("CIF", ADOX.DataTypeEnum.adVarWChar, 9)
.Columns.Append("FechaAlta", ADOX.DataTypeEnum.adDate)
.Columns.Append("Domicilio", ADOX.DataTypeEnum.adVarWChar, 50)
.Columns.Append("CPostal", ADOX.DataTypeEnum.adInteger)
.Columns.Append("Localidad", ADOX.DataTypeEnum.adVarWChar, 30)
.Columns.Append("Provincia", ADOX.DataTypeEnum.adVarWChar, 20)
.Columns.Append("Pais", ADOX.DataTypeEnum.adVarWChar, 20)
.Columns.Append("Telefono", ADOX.DataTypeEnum.adVarWChar, 10)
.Columns.Append("Fax", ADOX.DataTypeEnum.adVarWChar, 10)
.Columns.Append("TotaICompras", ADOX.DataTypeEnum.adCurrency)
.Columns.Append("Notas", ADOX.DataTypeEnum.adLongVarWChar)
End With

' Añadimos la tabla al catálogo
cat.Tables.Append(tbl)

cat = Nothing

Catch ex As Exception
MessageBox.Show(ex.Message)

Finally
' Cerramos la conexión
cnn.Close()
cnn = Nothing

End Try

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado
o
sugerido en el presente mensaje.






Respuesta Responder a este mensaje
#5 xavendano
20/07/2006 - 23:50 | Informe spam
Pregnta adicional

Si deseo especificar un valor por defecto para alguna columna
específica..un DefValue
No logro visualizar una propiedad para ello.

Gracias de antemano.


"SoftJaén" wrote in message
news:
"xavendano" escribió:

Pasa que cuando quiero "recuperar" o "setear" la base de datos para
incluir las nuevas estructuras de tablas, me presenta un error.

' Abrir el catálogo (ESTA INSTRUCCION ME PRESENTA UN ERROR) (LA BASE DE
DATOS YA EXISTE) (ESTOY PASANDO LOS VALORES CORRECTOS)
cat.ActiveConnection = _
"Provider=" & cboProvider.Text & ";" & _
"Data Source=" & txtNombreBase.Text & ";"




En Visual Basic .net no puedes asignar la propiedad «ActiveConnection»
utilizando una cadena de conexión Ole Db. Eso sirve para ejecutar el
código
con Visual Basic 6.0, pero en .net tienes que asignar expresamente un
objeto
ADODB.Connection de la propia biblioteca de ADO.

Aquí tienes un ejemplo para crear una supuesta tabla de Clientes,
utilizando
código de Visual Basic .net:

Dim cnn As New ADODB.Connection

Try

' Creamos la conexión
cnn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\Mis documentos\Bd1.mdb"
cnn.Open()

Dim cat As New ADOX.Catalog
Dim tbl As New ADOX.Table

' Establecemos la conexión activa
cat.ActiveConnection = cnn

' Creamos la tabla
tbl = New ADOX.Table

With tbl
.Name = "Clientes"

' Añadimos los campos a la tabla
.Columns.Append("IdCliente", ADOX.DataTypeEnum.adInteger)
.Columns.Append("Nombre", ADOX.DataTypeEnum.adVarWChar, 50)
.Columns.Append("CIF", ADOX.DataTypeEnum.adVarWChar, 9)
.Columns.Append("FechaAlta", ADOX.DataTypeEnum.adDate)
.Columns.Append("Domicilio", ADOX.DataTypeEnum.adVarWChar, 50)
.Columns.Append("CPostal", ADOX.DataTypeEnum.adInteger)
.Columns.Append("Localidad", ADOX.DataTypeEnum.adVarWChar, 30)
.Columns.Append("Provincia", ADOX.DataTypeEnum.adVarWChar, 20)
.Columns.Append("Pais", ADOX.DataTypeEnum.adVarWChar, 20)
.Columns.Append("Telefono", ADOX.DataTypeEnum.adVarWChar, 10)
.Columns.Append("Fax", ADOX.DataTypeEnum.adVarWChar, 10)
.Columns.Append("TotaICompras", ADOX.DataTypeEnum.adCurrency)
.Columns.Append("Notas", ADOX.DataTypeEnum.adLongVarWChar)
End With

' Añadimos la tabla al catálogo
cat.Tables.Append(tbl)

cat = Nothing

Catch ex As Exception
MessageBox.Show(ex.Message)

Finally
' Cerramos la conexión
cnn.Close()
cnn = Nothing

End Try

Enrique Martínez
[MS MVP - VB]

Nota informativa: La información contenida en este mensaje, así como el
código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin
garantías de ninguna clase, y no otorga derecho alguno. Usted asume
cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado
o
sugerido en el presente mensaje.






Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida