|
Responder ![]() |
Autor | |
mvillagran ![]() Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Nuevo ![]() Unido: 07/Octubre/2007 Localización: Mexico Estado: Sin conexión Puntos: 0 |
![]() Enviado: 18/Octubre/2007 a las 15:16 |
Necesito Crear una base de datos, tablas y campos de Access con puro cósigo fuente, sin botones ni Data Grid desde un Form Load de Visual Basic .Net o visual 2005.
![]() |
|
![]() |
|
CarCar ![]() Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Moderador ![]() Unido: 30/Septiembre/2004 Localización: España Estado: Sin conexión Puntos: 9049 |
![]() |
Hola:
Pues lo quitamos del foro de Access y lo pasamos al de otros sistemas. |
|
Si realmente estás agradecido, pásate por http://www.mvp-access.com/foro/foroonline.htm |
|
![]() |
|
mvillagran ![]() Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Nuevo ![]() Unido: 07/Octubre/2007 Localización: Mexico Estado: Sin conexión Puntos: 0 |
![]() |
Ok, muchas gracias es que todavía no me ajusto a como preguntar a los foros.
Saludos
|
|
![]() |
|
raipon ![]() Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Moderador ![]() Unido: 10/Diciembre/2004 Localización: Desconocida Estado: Sin conexión Puntos: 4017 |
![]() |
Hay varios caminos que puedes seguir.
- Utilizar alguna libreria que te permita interactuar con Access, para crear la base de datos y los demás objetos, mediante los métodos propios de dicha libreia. Caso de Dao, Ado, Adox, etc.
- Utilizando el acceso que brindan al entorno de Access los métodos anteriores, enviar sentencias sql de tipo DDL, (Create Table, Create View, etc) para crear los objetos.
Así que lo primero que debes decidir es en qué entorno te sientes más cómodo, para escoger una de las opciones.
|
|
![]() |
|
mvillagran ![]() Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Nuevo ![]() Unido: 07/Octubre/2007 Localización: Mexico Estado: Sin conexión Puntos: 0 |
![]() |
ANTES QUE NADA GRACIAS POR TU RECOMENDACIÓN, LO HE DECIDIDO DE LA SIGUIENTE MANERA, PERO AHORA MI PROBLEMA ES QUE NO PUEDO AGREGAR LOS CAMPOS A MIS TABLAS, EL CÓDIGO ESTA ASÍ:
Public Class Form1
Dim db As ADODB.Connection
Dim table As ADODB.Recordset Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim cat As New ADOX.Catalog Try ' Generamos una nueva base de datos Access 2000, 2002 ó 2003 ' cat.Create("Provider = Microsoft.Jet.OLEDB.4.0;" & _ ' "Data Source = C:\Documents and Settings\PERALTA\Mis documentos\PROYECTO ELECTRÓNICA\ELECTRONICA.mdb") ' Generamos una nueva base de datos Access 2007
cat.Create("Provider=Microsoft.ACE.OLEDB.12.0;" & _ "Data Source=d:\Nuevo1.accdb") ' Cerramos el objeto ADODB.Connection que ímplicitamente
' se ha originado al crear el archivo de información. CType(cat.ActiveConnection, ADODB.Connection).Close() MessageBox.Show("Se ha creado con éxito la base de datos.", _
"Crear base de datos", _ MessageBoxButtons.OK, _ MessageBoxIcon.Information) Catch ex As Exception
MessageBox.Show(ex.Message, _ "Crear base de datos", _ MessageBoxButtons.OK, _ MessageBoxIcon.Error) Finally
' Quitamos las referencias a las instancias de los objetos creados.
cat.ActiveConnection = Nothing cat = Nothing End Try
db = New ADODB.Connection
db.CursorLocation = ADODB.CursorLocationEnum.adUseClient db.Open("Provider=Microsoft.ACE.OLEDB.12.0;" & _ "Data Source=C:\Documents and Settings\PERALTA\Mis documentos\PROYECTO ELECTRÓNICA\ELECTRONICA.accdb") table = New ADODB.Recordset
table.Open("create table clientes", db, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic) 'AQUI ES DONDE DEBO AGREGAR MIS CAMPOS Y NO ENCUENTRO LA FORMA
End Sub End Class SI ME TIENES ALGUNA RECOMENDACIÓN O SOLUCIÓN TE LO AGRADECERÍA.
MANUEL VILLAGRÃN PRADO
|
|
![]() |
|
raipon ![]() Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Moderador ![]() Unido: 10/Diciembre/2004 Localización: Desconocida Estado: Sin conexión Puntos: 4017 |
![]() |
Bueno, te paso un ejemplo lo más esquemático y claro posible. Es para Access 2000, para otras versiones tendrás que modificar la propiedad Provider.
Dim cn As New ADODB.Connection
Dim cat As New ADOX.Catalog Dim tbl As New ADOX.Table cn.Provider = "Microsoft.Jet.OleDb.4.0"
cn.Properties("Data Source") = "C:\Nueva.mdb" 'Creas la nueva base de datos en el directorio hacia donde apunta
'la propiedad ConnectionString del objeto Connection cat.Create cn.ConnectionString 'Creas la tabla Clientes con dos campos : IdCliente '(campo clave autonumérico) y Nombre (texto, de tamaño 50, 'requerido, no admite cadenas vacias). With tbl Set .ParentCatalog = cat .Name = "Clientes" .Columns.Append "IdCliente", adInteger !IdCliente.Properties("AutoIncrement") = True .Columns.Append "Nombre", adVarWChar, 50 !Nombre.Properties("Nullable") = False !Nombre.Properties("Jet OLEDB:Allow Zero Length") = False .Keys.Append "Pk_IdCliente", adKeyPrimary, "IdCliente" End With cat.Tables.Append tbl 'Cierras los objetos y liberas las variables : cat.ActiveConnection.Close Set cat = Nothing Adios, un saludo.
|
|
![]() |
|
mvillagran ![]() Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Nuevo ![]() Unido: 07/Octubre/2007 Localización: Mexico Estado: Sin conexión Puntos: 0 |
![]() |
Antes que nada te agradezco tu recomendación sobre el ejemplo que me pusiste, el cual funciona perfectamente, lo agregue en un form diferente y si funciona, pero lo resolví de la siguiente manera, espero que mi ejemplo sirva para alguien más necesite realizarla de esa manera: Public Class CONTRASEÑA Dim db As ADOX.Catalog Dim db1 As ADODB.Connection Dim table1 As ADODB.Recordset Dim table2 As ADODB.Recordset Dim table3 As ADODB.Recordset Dim table4 As ADODB.Recordset Dim table5 As ADODB.Recordset Private Sub CONTRASEÑA_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim cat As New ADOX.Catalog Try ' Generamos una nueva base de datos Access 2000, 2002 ó 2003 ' cat.Create("Provider = Microsoft.Jet.OLEDB.4.0;" & _ ' "Data Source = C:\Mis documentos\Nuevo1.mdb") ' Generamos una nueva base de datos Access 2007cat.Create( "Provider=Microsoft.ACE.OLEDB.12.0;" & _ "Data Source=C:\Documents and Settings\PERALTA\Mis documentos\PROYECTO ELECTRÓNICA2\APARATOS.accdb") ' Cerramos el objeto ADODB.Connection que ímplicitamente ' se ha originado al crear el archivo de información. CType(cat.ActiveConnection, ADODB.Connection).Close()MessageBox.Show( "Se ha creado con éxito la base de datos.", _ "Crear base de datos", _MessageBoxButtons.OK, _ MessageBoxIcon.Information) Catch ex As ExceptionMessageBox.Show(ex.Message, _ "Crear base de datos", _MessageBoxButtons.OK, _ MessageBoxIcon.Error) Finally ' Quitamos las referencias a las instancias de los objetos creados.cat.ActiveConnection = Nothingcat = Nothing End Trydb1 = New ADODB.Connectiondb1.CursorLocation = ADODB.CursorLocationEnum.adUseClient db1.Open( "Provider=Microsoft.ACE.OLEDB.12.0;" & _ "Data Source=C:\Documents and Settings\PERALTA\Mis documentos\PROYECTO ELECTRÓNICA2\APARATOS.accdb")table1 = New ADODB.Recordsettable1.Open( "create table ADMINISTRADOR (ID COUNTER,ADMINISTRADOR TEXT (35),CONTRASEÑA TEXT(25))", db1, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic)table2 = New ADODB.Recordsettable2.Open( "create table USUARIOS(ID COUNTER,USUARIO TEXT (35),CONTRASEÑA TEXT (25))", db1, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic)table3 = New ADODB.Recordsettable3.Open( "CREATE TABLE ARTICULOS (ID COUNTER, CLAVEARTICULO TEXT(25),ARTICULO TEXT (45),PRECIO LONG,LINEA TEXT (30),CANTIDAD LONG)", db1, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic)table4 = New ADODB.Recordsettable4.Open( "create table NUEVO(ID COUNTER, NOM TEXT(35),APP TEXT (25), APM TEXT(25),DEPTO TEXT (20),CCONTROL TEXT (25))", db1, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic)table5 = New ADODB.Recordsettable5.Open( "INSERT INTO ADMINISTRADOR (ADMINISTRADOR,CONTRASEÑA) VALUES ('MANUEL',640324)", db1, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic) End SubTodo esto es para crear base de datos, tablas y sus respectivos campos en Access 2007. ![]() Nuevamente te agradezco la ayuda y seguiremos participando en los foros
|
|
![]() |
|
mvillagran ![]() Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Nuevo ![]() Unido: 07/Octubre/2007 Localización: Mexico Estado: Sin conexión Puntos: 0 |
![]() |
Agradezco a los que participaron en este foro, lo he resuelto y aca dejo el código para alguien más le sea de utilidad. |
|
![]() |
|
raipon ![]() Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Moderador ![]() Unido: 10/Diciembre/2004 Localización: Desconocida Estado: Sin conexión Puntos: 4017 |
![]() |
Me alegro que lo tengas solucionado. De todas formas, y por si quieres optimizarlo algo más, te recomiendo que para consultas de acción e instrucciones DDL, no utilices objetos recordset, sino el método execute de los objetos Connection o Command :
db1.Execute "Create Table ...", adExecuteNoRecords
db1.Execute "Create Table ...", adExecuteNoRecords ... etc
Como ves, puedes prescindir de todas las variables tableN, y sin duda, el código se ejecutará con mayor rapidez, puesto que no intentará devolverte conjuntos de resultados. Editado por raipon - 22/Octubre/2007 a las 08:36 |
|
![]() |
Responder ![]() |
|
Tweet
|
Ir al foro | Permisos de foro ![]() Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |