Inicio ACCESS Preparando un backend de facturación en Access

Preparando un backend de facturación en Access

por juanjo@luna-soft.es

Este es el primer artículo de nuestra serie sobre SQL, donde vamos a preparar el archivo de Access que contendrá el backend. El archivo que vamos a utilizar se llama crear backend.txt1.

Cómo usar el archivo

Para utilizar el archivo crear backend.txt, sigue estos pasos:

Abrir Access: Abre Microsoft Access y crea una nueva base de datos.

Importar el archivo: Importa el archivo crear backend.txt en tu base de datos de Access.

Ejecutar el código: Ejecuta el código VBA contenido en el archivo para crear las tablas y insertar los registros.

Option Compare Database
Option Explicit


Sub CrearTablasEInsertarRegistros()
    Dim db As DAO.Database
    Set db = CurrentDb
    
    ' Crear tabla Clientes
    db.Execute "CREATE TABLE Clientes (" & _
               "ClienteID AUTOINCREMENT PRIMARY KEY, " & _
               "Nombre TEXT(100) NOT NULL, " & _
               "Direccion TEXT(255), " & _
               "Ciudad TEXT(100), " & _
               "CodigoPostal TEXT(10), " & _
               "Telefono TEXT(15), " & _
               "Email TEXT(100))"
    
    ' Crear tabla Productos
    db.Execute "CREATE TABLE Productos (" & _
               "ProductoID AUTOINCREMENT PRIMARY KEY, " & _
               "Nombre TEXT(100) NOT NULL, " & _
               "Descripcion TEXT(255), " & _
               "Precio CURRENCY NOT NULL, " & _
               "Stock INT NOT NULL)"
    
    ' Crear tabla Facturas
    db.Execute "CREATE TABLE Facturas (" & _
               "FacturaID AUTOINCREMENT PRIMARY KEY, " & _
               "ClienteID INT NOT NULL, " & _
               "Fecha DATE NOT NULL, " & _
               "Total CURRENCY NOT NULL, " & _
               "FOREIGN KEY (ClienteID) REFERENCES Clientes(ClienteID))"
    
    ' Crear tabla DetallesFactura
    db.Execute "CREATE TABLE DetallesFactura (" & _
               "DetalleID AUTOINCREMENT PRIMARY KEY, " & _
               "FacturaID INT NOT NULL, " & _
               "ProductoID INT NOT NULL, " & _
               "Cantidad INT NOT NULL, " & _
               "PrecioUnitario CURRENCY NOT NULL, " & _
               "FOREIGN KEY (FacturaID) REFERENCES Facturas(FacturaID), " & _
               "FOREIGN KEY (ProductoID) REFERENCES Productos(ProductoID))"
    
    ' Insertar registros en la tabla Clientes
    Dim i As Integer
    For i = 1 To 50
        db.Execute "INSERT INTO Clientes (Nombre, Direccion, Ciudad, CodigoPostal, Telefono, Email) VALUES " & _
                   "('Cliente " & i & "', 'Direccion " & i & "', 'Ciudad " & i & "', '100" & Format(i, "00") & "', '12345678" & Format(i, "90") & "', 'cliente" & i & "@example.com')"
    Next i
    
    ' Insertar registros en la tabla Productos
    For i = 1 To 50
        db.Execute "INSERT INTO Productos (Nombre, Descripcion, Precio, Stock) VALUES " & _
                   "('Producto " & i & "', 'Descripcion " & i & "', " & i * 10 & ".00, " & i * 10 & ")"
    Next i
    
    ' Insertar registros en la tabla Facturas
    For i = 1 To 50
        db.Execute "INSERT INTO Facturas (ClienteID, Fecha, Total) VALUES " & _
                   "(" & i & ", #" & Format(DateAdd("d", i, Date), "yyyy-mm-dd") & "#, " & i * 10 & ".00)"
    Next i
    
    ' Insertar registros en la tabla DetallesFactura
    For i = 1 To 50
        db.Execute "INSERT INTO DetallesFactura (FacturaID, ProductoID, Cantidad, PrecioUnitario) VALUES " & _
                   "(" & i & ", " & i & ", " & i & ", " & i * 10 & ".00)"
    Next i
    
    MsgBox "Tablas creadas y registros insertados correctamente."
End Sub

Análisis del código

Este código crea cuatro tablas: Clientes, Productos, Facturas y DetallesFactura. Luego, inserta 50 registros en cada una de estas tablas. Al final, muestra un mensaje de confirmación indicando que las tablas se han creado y los registros se han insertado correctamente.

Vamos a partirlo un poquito más.

Declaración de la variable db

Dim db As DAO.Database

En esta línea, estamos declarando una variable llamada db de tipo DAO.Database. DAO (Data Access Objects) es una biblioteca de objetos que permite interactuar con bases de datos en Access. La variable db será utilizada para referirse a la base de datos actual en la que estamos trabajando.

Asignación de la base de datos actual a la variable db

Set db = CurrentDb

En esta línea, estamos asignando la base de datos actual a la variable dbCurrentDb es una función que devuelve una referencia a la base de datos que está actualmente abierta en Access. Al hacer esto, estamos diciendo que la variable db ahora representa la base de datos actual, permitiéndonos realizar operaciones en ella, como crear tablas, insertar registros, etc.

Ejemplo de uso

Una vez que hemos declarado y asignado la variable db, podemos utilizarla para ejecutar comandos SQL en la base de datos. Por ejemplo, para crear una tabla llamada Clientes, utilizamos el siguiente código:

db.Execute "CREATE TABLE Clientes (" & _
"ClienteID AUTOINCREMENT PRIMARY KEY, " & _
"Nombre TEXT(100) NOT NULL, " & _
"Direccion TEXT(255), " & _
"Ciudad TEXT(100), " & _
"CodigoPostal TEXT(10), " & _
"Telefono TEXT(15), " & _
"Email TEXT(100))"

En este ejemplo, estamos utilizando la variable db para ejecutar un comando SQL que crea una tabla llamada Clientes con varios campos. Vamos a tratar de comprender la parte de db.Exceute

Crear tabla Clientes

' Crear tabla Clientes
db.Execute "CREATE TABLE Clientes (" & _
           "ClienteID AUTOINCREMENT PRIMARY KEY, " & _
           "Nombre TEXT(100) NOT NULL, " & _
           "Direccion TEXT(255), " & _
           "Ciudad TEXT(100), " & _
           "CodigoPostal TEXT(10), " & _
           "Telefono TEXT(15), " & _
           "Email TEXT(100))"

Explicación detallada

  1. Comentario:' Crear tabla Clientes Esta línea es un comentario que indica que el siguiente bloque de código se utiliza para crear la tabla Clientes.
  2. Ejecución del comando SQL:db.Execute "CREATE TABLE Clientes (" Aquí, estamos utilizando el método Execute del objeto db para ejecutar un comando SQL. El comando SQL comienza con CREATE TABLE Clientes, lo que indica que estamos creando una nueva tabla llamada Clientes.
  3. Definición de campos:"ClienteID AUTOINCREMENT PRIMARY KEY, " & _ "Nombre TEXT(100) NOT NULL, " & _ "Direccion TEXT(255), " & _ "Ciudad TEXT(100), " & _ "CodigoPostal TEXT(10), " & _ "Telefono TEXT(15), " & _ "Email TEXT(100))"
    • ClienteID AUTOINCREMENT PRIMARY KEY: Este campo es el identificador único para cada cliente. AUTOINCREMENT significa que el valor de este campo se incrementará automáticamente con cada nuevo registro. PRIMARY KEY indica que este campo es la clave primaria de la tabla, lo que significa que cada valor en este campo debe ser único y no nulo.
    • Nombre TEXT(100) NOT NULL: Este campo almacena el nombre del cliente. TEXT(100) indica que el campo puede contener hasta 100 caracteres. NOT NULL significa que este campo no puede estar vacío.
    • Direccion TEXT(255): Este campo almacena la dirección del cliente. TEXT(255) indica que el campo puede contener hasta 255 caracteres.
    • Ciudad TEXT(100): Este campo almacena la ciudad del cliente. TEXT(100) indica que el campo puede contener hasta 100 caracteres.
    • CodigoPostal TEXT(10): Este campo almacena el código postal del cliente. TEXT(10) indica que el campo puede contener hasta 10 caracteres.
    • Telefono TEXT(15): Este campo almacena el número de teléfono del cliente. TEXT(15) indica que el campo puede contener hasta 15 caracteres.
    • Email TEXT(100): Este campo almacena el correo electrónico del cliente. TEXT(100) indica que el campo puede contener hasta 100 caracteres.

Resumen

En resumen, este bloque de código crea una tabla llamada Clientes con los campos ClienteIDNombreDireccionCiudadCodigoPostalTelefono y Email. Cada campo tiene un tipo de datos específico y algunas restricciones, como NOT NULL para el campo Nombre.

Como podrás observar, estamos replicando el uso de db.Execute para cada tabla que necesitemos.

Insertar registros en la tabla Clientes

' Insertar registros en la tabla Clientes
Dim i As Integer
For i = 1 To 50
    db.Execute "INSERT INTO Clientes (Nombre, Direccion, Ciudad, CodigoPostal, Telefono, Email) VALUES " & _
               "('Cliente " & i & "', 'Direccion " & i & "', 'Ciudad " & i & "', '100" & Format(i, "00") & "', '12345678" & Format(i, "90") & "', 'cliente" & i & "@example.com')"
Next i

Explicación detallada

  1. Comentario: ' Insertar registros en la tabla Clientes Esta línea es un comentario que indica que el siguiente bloque de código se utiliza para insertar registros en la tabla Clientes.
  2. Declaración de la variable i: Dim i As Integer Aquí, estamos declarando una variable llamada i de tipo Integer. Esta variable se utilizará como contador en el bucle For.
  3. Bucle For: For i = 1 To 50 Este bucle For se ejecutará 50 veces, desde i = 1 hasta i = 50. En cada iteración del bucle, se insertará un nuevo registro en la tabla Clientes.
  4. Ejecución del comando SQL para insertar registros: db.Execute "INSERT INTO Clientes (Nombre, Direccion, Ciudad, CodigoPostal, Telefono, Email) VALUES " & _ "('Cliente " & i & "', 'Direccion " & i & "', 'Ciudad " & i & "', '100" & Format(i, "00") & "', '12345678" & Format(i, "90") & "', 'cliente" & i & "@example.com')" En cada iteración del bucle, se ejecuta un comando SQL INSERT INTO para insertar un nuevo registro en la tabla Clientes. Los valores de los campos NombreDireccionCiudadCodigoPostalTelefono y Email se generan dinámicamente utilizando la variable i.
    • Nombre'Cliente " & i & "' genera nombres como Cliente 1Cliente 2, etc.
    • Direccion'Direccion " & i & "' genera direcciones como Direccion 1Direccion 2, etc.
    • Ciudad'Ciudad " & i & "' genera ciudades como Ciudad 1Ciudad 2, etc.
    • CodigoPostal'100" & Format(i, "00") & "' genera códigos postales como 1000110002, etc.
    • Telefono'12345678" & Format(i, "90") & "' genera números de teléfono como 12345678901234567891, etc.
    • Email'cliente" & i & "@example.com' genera correos electrónicos como cliente1@example.comcliente2@example.com, etc.
  5. Fin del bucle For:Next i Esta línea indica el final del bucle For. Después de insertar 50 registros, el bucle termina.

En próximas entradas hablaremos de Insert Into con más profundidad

Resumen

En resumen, este bloque de código inserta 50 registros en la tabla Clientes. Cada registro tiene valores generados dinámicamente para los campos NombreDireccionCiudadCodigoPostalTelefono y Email.

Para terminar

Tras repetir esta ultima parte para cada tabla, ya tendríamos listo nuestro ejemplo de Backend que utilizaremos en próximas entradas.

Pulsa sobre el botón Play o F5 para ejecutar el código, y listo.

Ya tenemos un Backend para usar a nuestro gusto.

También te puede interesar

Deja un comentario

El Blog de Juanjo Luna
Todo sobre Access, Excel, Sharepoint, IA y tecnología en general

Este sitio web utiliza cookies para mejorar su experiencia. Suponemos que está de acuerdo, pero puede darse de baja si lo desea. Aceptar Leer más