Foro de elhacker.net

Programación => Programación Visual Basic => Mensaje iniciado por: CARRY-ON en 30 Octubre 2006, 21:07 pm



Título: crear base de datos desde visual
Publicado por: CARRY-ON en 30 Octubre 2006, 21:07 pm
Tengo un formulario con distinto campos lo que yo quiero es que al apretar guaradar se guarde los datos en una base de datos yo se que seria mas facil hacer una base de datos en access y conectar todo pero necesito ver si se puede crear la base de datos en tiempo de ejecucion??


Título: Re: crear base de datos desde visual
Publicado por: CeLaYa en 31 Octubre 2006, 00:24 am
claro que se puede crear una BD, este es un ejemplo que viene en la pagina de el Guille http://www.elguille.info/VB/bases/indiceDAO.asp#db010


Private Sub CrearBase(sBase As String)
    'Crear la base de datos indicada
    '
    Dim Db As Database
    Dim Fd As Field
    Dim Tb As New TableDef      'Definir una Tabla
    Dim Idx As New Index        'Para crear un índice
    Dim i As Integer

    'Crear base de datos, idioma español y para la versión 2.0 del Jet de Access
    'Si vas a adaptar este programa para VB3, usa dbVersion11 en lugar de dbVersion20
    '================================================================================
    Set Db = CreateDatabase(sBase, dbLangSpanish, dbVersion20)
    '
    'La constante dbVersion20 no aparece en la ayuda, en su lugar lo hace la dbVersion25
    'pero ésa no está creada!!!
    '
    'Primero la tabla de las tareas
    Set Tb = Db.CreateTableDef("Tareas")
    'Vamos a crear cada uno de los campos
    Set Fd = Tb.CreateField("ID", dbLong)
    'Ahora vamos a asignar las propiedades de contador, etc.
    Fd.Attributes = dbAutoIncrField Or dbUpdatableField Or dbFixedField
    Tb.Fields.Append Fd
    'El resto de los campos
    Set Fd = Tb.CreateField("Fecha", dbDate)
    Tb.Fields.Append Fd
    Set Fd = Tb.CreateField("Asunto", dbText, 255)
    Tb.Fields.Append Fd
    Set Fd = Tb.CreateField("Descripcion", dbMemo)
    Tb.Fields.Append Fd
    Set Fd = Tb.CreateField("FechaInicio", dbDate)
    Tb.Fields.Append Fd
    Set Fd = Tb.CreateField("FechaTermino", dbDate)
    Tb.Fields.Append Fd
    Set Fd = Tb.CreateField("Terminada", dbInteger)
    Tb.Fields.Append Fd
    'Creamos un índice con el ID
    Idx.Name = "PrimaryKey"
    Idx.Unique = True
    Idx.Primary = True
    Idx.Fields = "ID"
    Tb.Indexes.Append Idx
    'Añadimos la tabla a la base
    Db.TableDefs.Append Tb
    '
    'Creamos la otra tabla: Anotaciones
    Set Tb = Db.CreateTableDef("Anotaciones")
    'El campo ID, es el contador, etc.
    Set Fd = Tb.CreateField("ID", dbLong)
    Fd.Attributes = dbAutoIncrField Or dbUpdatableField Or dbFixedField
    Tb.Fields.Append Fd
    'El resto de los campos
    Set Fd = Tb.CreateField("Fecha", dbDate)
    Tb.Fields.Append Fd
    Set Fd = Tb.CreateField("Tema", dbText, 50)
    Tb.Fields.Append Fd
    Set Fd = Tb.CreateField("Asunto", dbText, 255)
    Tb.Fields.Append Fd
    Set Fd = Tb.CreateField("Medio", dbText, 255)
    Tb.Fields.Append Fd
    Set Fd = Tb.CreateField("Localizacion", dbText, 255)
    Tb.Fields.Append Fd
    Set Fd = Tb.CreateField("Descripcion", dbMemo)
    Tb.Fields.Append Fd
    Set Fd = Tb.CreateField("Detalle", dbLongBinary)
    Tb.Fields.Append Fd
    'Creamos un índice con el ID
    Set Idx = Nothing           'Quitar la referencia anterior
    Idx.Name = "PrimaryKey"
    Idx.Unique = True
    Idx.Primary = True
    Idx.Fields = "ID"
    Tb.Indexes.Append Idx
    'Añadimos la segunda tabla a la base
    Db.TableDefs.Append Tb
    'Cerramos la base
    Db.Close

    MsgBox "Nueva base de datos " & sBase & " creada.", vbInformation
End Sub