
PUNTO DE VENTA EN EXCEL – REGISTROS SIN DUPLICADOS
En este nueva entrega del Sistema de Punto de Venta en Excel, se incorpora una macro que permite determinar si un cliente está duplicado, en dicho caso no deja ingresar registros repetidos o duplicados. Al querer ingresar un cliente nuevo la macro determinará si el Cliente ya está registrado en la base de datos, en dicho caso la macro no permite ingresar datos o registros duplicados.
Maneja Excel como los mejores deberías hacer click acá, si quieres aprender sobre Excel en inglés, entonces debes hacer click here. Si lo que necesitas es aprender o profundizar sobre la programación de macros con VBA este es unos de los MEJORES CURSOS ON LINE que he visto en internet, te lo recomiendo no te arrepentirás.
MACRO PARA VERIFICAR SI UN REGISTRO ESTÁ DUPLICADO
En el ejemplo que se puede descargar desde el final del post, se muestra como al tratar de ingresar un cliente nuevo en el Sistema de Punto de Venta en Excel, el sistema lo rechaza y sale un mensaje avisando que el cliente está duplicado o el registra ya existe en la base de datos, esto evita que el usuario siga cargando registros de un cliente que ya está en la base de datos y de esta manera no duplicar datos.
En este caso la macro se ejecuta cuando se actualiza el campo o textbox donde se debe ingresar el Numero de Seguro Social , Rut, Cuit o como se denomine el registro que es único e identifica a cada persona en los diferentes países.
Explicación de la Macro Excel – VBA para INGRESAR DATOS SIN DUPLICAR
La macro al estar conectada con Access que es donde se guarda la Base de Datos, la macro de Excel se debe conectar con dicha base de dato, haciendo referencia al misma, de la siguiente forma:
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
cn.Open «Provider=Microsoft.ACE.OLEDB.12.0; » & «data source=» & ThisWorkbook.Path & «\1000 DBTSPuntoVenta.accdb;»
Recuerden que en este ejemplo el Libro de Excle y la Base de Datos de Access están en el mismo directorio, por eso con el comando ThisWorkbook.Path se obtiene la dirección del directorio donde está la macro y la base de datos y se le agrega al final en nombe de la base de datos de Access.
Luego se debe realizar o confeccionar la SQL que es la consulta que permite buscar los datos en la base de datos siendo la siguiente:
sql = «SELECT Identificacion_Cliente,Nombre_Cliente FROM DB_Clientes WHERE Ucase(Identificacion_Cliente) =» & Trim(UCase(UserForm1.TextBox31)) & » «
Se ejecuta la SQL con el siguiente código el cual nos buscará los datos que la SQL establece, dichos registros se guarda en el objeto recordset, es decir buscado los datos los guarda en memoria la PC en dicho objeto, se usa el código:
Set rs = cn.Execute(sql)
Posteriormente se establece si el objeto «rs» (recordset) contiene datos, en caso que sea positivo, encontró el dato o Cliente en la Base de Datos por ende el Cliente que se intenta cargar está repetido, emitiendo un mensaje, así:
If rs.EOF = False Then
nom = rs.Fields(1).Value
MsgBox («El Cliente ya se encuetra registrado en la base de datos con el nombre » & nom), vbInformation, «https://macrosenexcel.com»
Si el Cliente ya está en la base de datos, limpia los textbox del formulario para que quede en condiciones de ingresar un nuevo cliente, se usan los siguientes códigos:
UserForm1.TextBox31 = «»
UserForm1.TextBox31.SetFocus
Por último liberar las variables usadas, esto es para que no queden los datos en memoria, cerrando la conexión de Excel con la base de datos de Access, así:
Set rs = Nothing
cn.Close
Set cn = Nothing
Sale de la macro terminando la misma, al encontrar que el cliente que se intenta ingresar está ingresado en la base de de datos, así:
Exit Sub
Código PARA EVITAR INGRESO DE CLIENTES DUPLICADOS
Código que va en un formulario
Private Sub TextBox31_AfterUpdate()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
If TextBox31 <> Empty And AltaCte = 1 Then
Dim cn As ADODB.Connection, rs As ADODB.Recordset
On Error Resume Next
Set cn = New ADODB.Connection
Set rs = New ADODB.Recordset
cn.Open «Provider=Microsoft.ACE.OLEDB.12.0; » & «data source=» & ThisWorkbook.Path & «\1000 DBTSPuntoVenta.accdb;»
sql = «SELECT Identificacion_Cliente,Nombre_Cliente FROM DB_Clientes WHERE Ucase(Identificacion_Cliente) =» & Trim(UCase(UserForm1.TextBox31)) & » »
Set rs = cn.Execute(sql)
If rs.EOF = False Then
nom = rs.Fields(1).Value
MsgBox («El Cliente ya se encuetra registrado en la base de datos con el nombre » & nom), vbInformation, «https://macrosenexcel.com»
UserForm1.TextBox31 = «»
UserForm1.TextBox31.SetFocus
Set rs = Nothing
cn.Close
Set cn = Nothing
Exit Sub
End If
End If
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
Puedes DESCARGAR el Ejemplo de Punto de Venta con la Modificación para Evitar el Ingreso de Clientes Repetidos
Descarga el fichero usado como ejemplo en este post y en el vídeo explicativo, el mismo es totalmente gratuito y su uso es libre, solicito aportar para sostener esta web, si está dentro de tus posibilidades, desde ya muchas gracias.
Si te fue de utilidad puedes INVITARME UN CAFÉ y de esta manera ayudar a seguir manteniendo la página, CLICK para descargar en ejemplo en forma gratuita.
If this post was helpful INVITE ME A COFFEE and so help keep up the page, CLICK to download free example.
Donate:
👉⏩ Cuenta Paypal: https://paypal.me/programarexcel
👉⏩ Cuenta Bitcoin: 1KBGGb8fyDzyR3X1Rie6m7VguzaAfngNbd
👉⏩ Cuenta Ether: 0x41Bbd24556914C83a31217eBb3BC49789b66e407
👉⏩ Cuenta Skrill: marcrodos@yahoo.es
👉⏩ Cuenta Neteller: marcrodos@yahoo.es
👉⏩ Apoya mi trabajo https://www.patreon.com/programarexcel
👉⏩ Sígueme en DTube: https://d.tube/#!/c/programarexcel01
👉⏩ Sígueme en Odysee: https://odysee.com/@programarexcel:3