Access - OTRA FORMA DE HACER ESO

 
Vista:
sin imagen de perfil

OTRA FORMA DE HACER ESO

Publicado por RICAURTE (4 intervenciones) el 17/03/2006 17:25:16
O SI HAY OTRA FORMA DE HACER ESO DE CREAR TABLAS Y RELACIONARLAS Y CREALE CAMPOS,

PERO TENGO QUE CREAR ALREDEDOR DE 58 CAMPOS EN DIFERENTES TABLAS, CUAL SERIA UNA FORMA MAS FACIL??? NO PUEDO ESTAR PONIENDO LAS CONDICIONES PARA LOS 58 CAMPOS, ESO SERIA MUCHO TRABAJO, PIENSO YO

SI TENGO ESTO

'Set BASE = CurrentDb 'USA LA BASE DE DATOS ACTUAL

'Set TABLA = BASE.CreateTableDef("01_" & TXTNOMEMP)
'Set CAMPO = TABLA.CreateField("NOMBRE", DB_TEXT, 100)
'TABLA.Fields.Append CAMPO
'BASE.TableDefs.Append TABLA
'
'MsgBox "SE HA CREADO CORRECTAMENTE", vbInformation

POR FAVOR AYUDA!!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Generación automática de tablas y campos basada en configuración

Publicado por Alejandro (4142 intervenciones) el 21/06/2023 21:35:11
Si necesitas crear alrededor de 58 campos en diferentes tablas y quieres simplificar el proceso, puedes considerar utilizar un enfoque basado en datos. En lugar de crear manualmente cada campo y tabla, puedes almacenar la información sobre los campos en una tabla de configuración y luego usar un código VBA para generar automáticamente las tablas y los campos.

Aquí te muestro un ejemplo de cómo podrías abordar este enfoque:

1. Crea una tabla en tu base de datos de Access para almacenar la información de configuración de los campos. Puedes llamarla "TablaCampos" y tener columnas como "NombreTabla", "NombreCampo", "TipoDato", etc. Esta tabla contendrá los datos necesarios para generar las tablas y campos.

2. Agrega los registros a la tabla "TablaCampos" con la información de los campos que deseas crear. Cada registro representará un campo y contendrá detalles como el nombre de la tabla, el nombre del campo, el tipo de dato, etc.

3. En tu código VBA, puedes recuperar los registros de la tabla "TablaCampos" y utilizarlos para generar dinámicamente las tablas y los campos. Aquí tienes un ejemplo básico de cómo podría ser el código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
Private Sub CrearTablasCampos()
    Dim db As Database
    Dim rs As Recordset
    Dim strSQL As String
 
    Set db = CurrentDb
    Set rs = db.OpenRecordset("TablaCampos")
 
    ' Recorrer los registros de la tabla de configuración
    Do Until rs.EOF
        Dim tablaNombre As String
        Dim campoNombre As String
        Dim tipoDato As Integer
 
        tablaNombre = rs("NombreTabla")
        campoNombre = rs("NombreCampo")
        tipoDato = rs("TipoDato")
 
        ' Crear la tabla si no existe
        If Not TableExists(tablaNombre) Then
            strSQL = "CREATE TABLE " & tablaNombre & " (ID AUTOINCREMENT, CONSTRAINT PK_" & tablaNombre & " PRIMARY KEY(ID))"
            db.Execute strSQL
        End If
 
        ' Agregar el campo a la tabla
        strSQL = "ALTER TABLE " & tablaNombre & " ADD COLUMN " & campoNombre & " " & GetDataType(tipoDato)
        db.Execute strSQL
 
        rs.MoveNext
    Loop
 
    rs.Close
    Set rs = Nothing
    Set db = Nothing
 
    MsgBox "Se han creado las tablas y campos correctamente.", vbInformation
End Sub
 
' Función para verificar si una tabla existe
Private Function TableExists(tableName As String) As Boolean
    Dim db As Database
    Set db = CurrentDb
 
    On Error Resume Next
    TableExists = (db.TableDefs(tableName) IsNot Nothing)
 
    Set db = Nothing
End Function
 
' Función para obtener el tipo de dato según el código
Private Function GetDataType(dataTypeCode As Integer) As String
    Select Case dataTypeCode
        Case 1
            GetDataType = "TEXT(100)"
        Case 2
            GetDataType = "NUMBER"
        Case 3
            GetDataType = "DATE"
        ' Agrega más casos según los tipos de datos que necesites
        ' ...
        Case Else
            GetDataType = "TEXT(255)"
    End Select
End Function

Asegúrate de ajustar el código según las columnas y nombres de tabla específicos que hayas definido en tu base de datos.

Este enfoque te permitirá generar automáticamente las tablas y los campos según la configuración

definida en la tabla "TablaCampos". Solo necesitarás agregar los registros correspondientes a la tabla de configuración en lugar de crear manualmente cada campo.

Espero que esta solución te sea útil.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar