** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Otros de Microsoft: Windows y Office > Otros Productos Microsoft
  Mensajes nuevos Mensajes nuevos RSS - Crear Tablas y campos de access con códig
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoCrear Tablas y campos de access con códig

 Responder Responder
Autor
Mensaje Invertir el orden de clasificación
raipon Ver desplegable
Moderador
Moderador


Unido: 10/Diciembre/2004
Localización: Desconocida
Estado: Sin conexión
Puntos: 4005
Enlace directo a este mensaje Tema: Crear Tablas y campos de access con códig
    Enviado: 22/Octubre/2007 a las 08:36
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
Ramon desde Terrassa.

Mi blog
Arriba
mvillagran Ver desplegable
Nuevo
Nuevo


Unido: 07/Octubre/2007
Localización: Mexico
Estado: Sin conexión
Puntos: 0
Enlace directo a este mensaje Enviado: 22/Octubre/2007 a las 03:14

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.Clap

Arriba
mvillagran Ver desplegable
Nuevo
Nuevo


Unido: 07/Octubre/2007
Localización: Mexico
Estado: Sin conexión
Puntos: 0
Enlace directo a este mensaje Enviado: 22/Octubre/2007 a las 03:11

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 2007

cat.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 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

db1 = New ADODB.Connection

db1.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.Recordset

table1.Open("create table ADMINISTRADOR (ID COUNTER,ADMINISTRADOR TEXT (35),CONTRASEÑA TEXT(25))", db1, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic)

table2 = New ADODB.Recordset

table2.Open("create table USUARIOS(ID COUNTER,USUARIO TEXT (35),CONTRASEÑA TEXT (25))", db1, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic)

table3 = New ADODB.Recordset

table3.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.Recordset

table4.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.Recordset

table5.Open("INSERT INTO ADMINISTRADOR (ADMINISTRADOR,CONTRASEÑA) VALUES ('MANUEL',640324)", db1, ADODB.CursorTypeEnum.adOpenStatic, ADODB.LockTypeEnum.adLockOptimistic)

End Sub

Todo esto es para crear base de datos, tablas y sus respectivos campos en Access 2007.

Wink
 
Nuevamente te agradezco la ayuda y seguiremos participando en los foros
Arriba
raipon Ver desplegable
Moderador
Moderador


Unido: 10/Diciembre/2004
Localización: Desconocida
Estado: Sin conexión
Puntos: 4005
Enlace directo a este mensaje Enviado: 20/Octubre/2007 a las 18:11
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.
Ramon desde Terrassa.

Mi blog
Arriba
mvillagran Ver desplegable
Nuevo
Nuevo


Unido: 07/Octubre/2007
Localización: Mexico
Estado: Sin conexión
Puntos: 0
Enlace directo a este mensaje Enviado: 19/Octubre/2007 a las 14:14
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
Arriba
raipon Ver desplegable
Moderador
Moderador


Unido: 10/Diciembre/2004
Localización: Desconocida
Estado: Sin conexión
Puntos: 4005
Enlace directo a este mensaje Enviado: 18/Octubre/2007 a las 19:06
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.
Ramon desde Terrassa.

Mi blog
Arriba
mvillagran Ver desplegable
Nuevo
Nuevo


Unido: 07/Octubre/2007
Localización: Mexico
Estado: Sin conexión
Puntos: 0
Enlace directo a este mensaje Enviado: 18/Octubre/2007 a las 15:24
Ok, muchas gracias es que todavía no me ajusto a como preguntar a los foros.
 
Saludos
Arriba
CarCar Ver desplegable
Moderador
Moderador


Unido: 30/Septiembre/2004
Localización: España
Estado: Sin conexión
Puntos: 9049
Enlace directo a este mensaje Enviado: 18/Octubre/2007 a las 15:18
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
Arriba
mvillagran Ver desplegable
Nuevo
Nuevo


Unido: 07/Octubre/2007
Localización: Mexico
Estado: Sin conexión
Puntos: 0
Enlace directo a este mensaje 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.Cry
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable