Tironemota

Access

Programa de Facturación en Access

Modulo Clientes 15/09/2023

Tabla: tblClientes

  1. Campo: idCliente
    • Tipo de datos: Autonumérico
    • Clave principal
  2. Campo: campNombre
    • Tipo de datos: Texto
    • Tamaño del campo: 100
    • Título: Nombre
  3. Campo: campRif
    1. Tipo de datos: Texto
    2. Tamaño del campo: 15
    3. Título: RIF/CI
  4. Campo: campDireccion
    1. Tipo de datos: Texto
    2. Tamaño del campo: 255
    3. Título: Dirección
  5. Campo: campTelf
    1. Tipo de datos: Texto
    2. Tamaño del campo: 15
    3. Título: Teléfono

Formulario: forClientes

Propiedades: Formulario (todos)

  1. Emergente: Si
  2. Modal: Si
  3. Centrado Automático: Si
  4. Estilo de los bordes: Ninguno
  5. Selectores de registro: No
  6. Botones de desplazamiento: No
  7. Separadores de registro: No
  8. Barras de desplazamiento: Ninguna
  9. Movible: No
  10. Menú contextual: No

Diseño

  • Cuadro de texto
    1. Nombre: txtId
    2. Visible: No
  • Cuadro de texto - Nombre: txtNombre
  • Cuadro de texto - Nombre: txtRIF
  • Cuadro de texto - Nombre: txtTelefono
  • Cuadro de texto - Nombre: txtDireccion
  • Botón de comando: Salir (Cerrar formulario)
    1. Nombre: btnSalir
    2. Título: Salir
    3. Al hacer clic: [Procedimiento de evento]
Private Sub btnSalir_Click()
    DoCmd.Close acForm, "forClientes"
End Sub
  • Botón de comando: Guardar (Insertar nuevo registro)
    1. Nombre: btnGuardar
    2. Título: Guardar
    3. Al hacer clic: [Procedimiento de evento]
Private Sub btnGuardar_Click()
    'Los campos son requeridos
    If Not IsNull(Me.txtNombre) And Not IsNull(Me.txtRIF) And Not IsNull(Me.txtTelefono) And Not IsNull(Me.txtDireccion) Then
        'Si el campo clave esta vacío
        If IsNull(Me.txtId) Then
            'CAMPOS DE LA TABLA tabCliente: idCliente,campNombre, campRif, campDireccion, campTelf
            'CUADRO DE TEXTO forClientes: txtId, txtNombre, txtRIF, txtDireccion, txtTelefono
            CurrentDb.Execute "INSERT INTO tabCliente (campNombre,campRif,campDireccion,campTelf) VALUES ('" & Me.txtNombre & "', '" _
                             & Me.txtRIF & "', '" & Me.txtDireccion & "', '" & Me.txtTelefono & "')", dbFailOnError
            MsgBox "Registro agregado correctamente.", vbInformation, "Aviso"
            Call Limpiar 'FUNCION Limpiar los campos
        End If
    Else
        MsgBox "Nombre, RIF, Teléfono y Dirección son requeridos." & vbLf & vbLf & "Verifique.", vbExclamation, "Aviso"
    End If
End Sub

Private Sub Limpiar()
    'Una vez insertado los datos, limpiamos los campos
    Me.txtId = Null
    Me.txtNombre = Null
    Me.txtRIF = Null
    Me.txtDireccion = Null
    Me.txtTelefono = Null
End Sub

Formulario: forClientesLista

Propiedades: Formulario Ver Propiedades: Formulario (todos)

Diseño

  1. Cuadro de lista (Lista de clientes):
    • Nombre: ListaCliente
    • Origen de la fila:
SELECT tabCliente.idCliente, tabCliente.campNombre, tabCliente.campRif, tabCliente.campTelf, tabCliente.campDireccion FROM tabCliente ORDER BY tabCliente.[campNombre];
    • Tipo de origen de la fila: Tabla/Consulta
    • Columna dependiente: 1
    • Número de columnas: 5
    • Ancho de columnas: 0cm;9cm;3cm;3cm;5cm
    • Encabezado de columnas: Sí
  1. Botón de comando: Salir (Cerrar formulario)
    • Nombre: btnSalir
    • Titulo: Salir
    • Al hacer clic: [Procedimiento de evento]
Private Sub btnSalir_Click()
    DoCmd.Close acForm, "forClientes"
End Sub
  1. Botón de comando: Nuevo (Crear nuevo cliente)
    • Nombre: btnNuevo
    • Titulo: Nuevo
    • Al hacer clic: [Procedimiento de evento]
Private Sub btnNuevo_Click()
    DoCmd.OpenForm "forClientes"
    DoCmd.Close acForm, "forClientesLista"
End Sub
  1. Botón de comando: Modificar (Modificar/Editar registro)
    • Nombre: btnSalir
    • Titulo: Salir
    • Al hacer clic: [Procedimiento de evento]
Private Sub btnModificar_Click()
    If Not IsNull(Me.ListaCliente) Then
        'FUNCION recuperar datos
        Call recupera
    Else
        MsgBox "Selecciona un Cliente.", vbInformation, "Aviso"
    End If
End Sub
Private Sub recupera()
    Dim miRs As DAO.Recordset
    Dim consulta As String
    
    On Error GoTo ManipulaError
    DoCmd.OpenForm "forClientes"
    consulta = "SELECT * FROM tabCliente WHERE idCliente = " & Me.ListaCliente & ""
    Set miRs = CurrentDb.OpenRecordset(consulta, dbOpenForwardOnly)
        With miRs
            'CAMPOS TABLA tabCliente: idCliente,campNombre, campRif, campDireccion, campTelf
            'CUADRO DE TEXTO forClientes: txtId, txtNombre, txtRIF, txtDireccion, txtTelefono
            Forms![ForClientes]![txtId] = !idCliente
            Forms![ForClientes]![txtNombre] = !campNombre
            Forms![ForClientes]![txtRIF] = !campRif
            Forms![ForClientes]![txtDireccion] = !campDireccion
            Forms![ForClientes]![txtTelefono] = !campTelf
        End With
        miRs.Close: Set miRs = Nothing
        DoCmd.Close acForm, "FormClientesLista"
Salir:
    Exit Sub
ManipulaError:
    If Not miRs Is Nothing Then miRs.Close: Set miRs = Nothing
    Resume Salir
End Sub

Modificamos el código Visual Base del botón Guardar en el formulario forClientes

Private Sub btnGuardar_Click()
    'Los campos son requeridos
    If Not IsNull(Me.txtNombre) And Not IsNull(Me.txtRIF) And Not IsNull(Me.txtTelefono) And Not IsNull(Me.txtDireccion) Then
        'Si el campo clave está vacío
        If IsNull(Me.txtId) Then
            'CAMPOS DE LA TABLA tabCliente: idCliente,campNombre,campRif,campDireccion,campTelf
            'CUADRO DE TEXTO forClientes: txtId,txtNombre,txtRIF,txtDireccion,txtTelefono
            CurrentDb.Execute "INSERT INTO tabCliente (campNombre,campRif,campDireccion,campTelf) VALUES ('" & Me.txtNombre & "', '" _
                            & Me.txtRIF & "', '" & Me.txtDireccion & "', '" & Me.txtTelefono & "')", dbFailOnError
            MsgBox "Registro agregado correctamente.", vbInformation, "Aviso"
            Call Limpiar 'FUNCION Limpiar los campos
        Else
            CurrentDb.Execute "UPDATE tabCliente set campNombre = '" & Me.txtNombre & "',campRif = '" & Me.txtRIF & "',campDireccion = '" & Me.txtDireccion & "',campTelf = '" & Me.txtTelefono & "' WHERE idCliente = " & Me.txtId & "", dbFailOnError
            MsgBox "Registro editado correctamente.", vbInformation, "Aviso"
            Call Limpiar 'FUNCION Limpiar los campos
            DoCmd.Close acForm, "forClientes"
            'Cumple con la función de actualizar
            'Cierro y abro el formulario forClientesLista
            'DEBO MEJORAR CODIGO
            DoCmd.Close acForm, "forClientesLista"
            DoCmd.OpenForm "forClientesLista"
        End If
    Else
        MsgBox "Nombre, RIF, Teléfono y Dirección son requeridos." & vbLf & vbLf & "Verifique.", vbExclamation, "Aviso"
    End If
End Sub

Buscador de contenido en todos los campos

  1. Cuadro de texto
    • Nombre: txtBuscar
  2. Botón de comando
    • Nombre: btnBuscar
    • Título: Buscar
    • Al hacer clic: [Procedimiento de evento]
Private Sub btnBuscar_Click()
    Dim Consulta As String
    Consulta = "SELECT idCliente, campNombre, campRif, campTelf, campDireccion "
    Consulta = Consulta & "FROM tabCliente "
    Consulta = Consulta & "WHERE idCliente Like '*" & Me.txtBuscar & "*' OR campNombre Like '*" & Me.txtBuscar & "*' OR campRif Like '*" & Me.txtBuscar & "*' OR campTelf Like '*" & Me.txtBuscar & "*' OR campDireccion Like '*" & Me.txtBuscar & "*'"
    Me.ListaCliente.RowSource = Consulta
End Sub
  1. Botón de comando
    • Nombre: btnLimpiar
    • Título: Limpiar
    • Al hacer clic: [Procedimiento de evento]
Private Sub btnLimpiar_Click()
    'Lleno el cuadro de lista co todos los registro
    Me.ListaCliente.RowSource = "SELECT idCliente, campNombre, campRif, campTelf, campDireccion FROM tabCliente"
    'Limpio el buscador
    Me.txtBuscar = Null
End Sub