Duda sobre VBA INSERT INTO |
Responder |
Autor | |
GFAP
Nuevo Unido: 12/Junio/2021 Localización: León Gto. Mex Estado: Sin conexión Puntos: 22 |
Tema: Duda sobre VBA INSERT INTO Enviado: 14/Junio/2021 a las 07:49 |
Hola. Soy nuevo en el foro. Primero darles gracias por aceptarme.
Ya hace un tiempo he programado en VBA Excel. Y en ese campo se puede decir que me defiendo. Decidí empezar a hacerlo en VBA Access y llevo un mes tomando cursos en línea y pues ahí la llevo. Pero clero me falta mucho tramo por recorrer para defenderme. Mi Pregunta es la siguiente: Cree un formulario en blanco desde donde el usuario da de alta a un Proveedor. Lo hago con .execute y una instrucción SQL (INSERT INTO). En mi tabla de Proveedores tengo un ID del Proveedor que es un campo clave. Todo lo hace Bien, pero cuando intento dar de alta otro proveedor con el mismo ID como es normal no lo registra, pero no entra al On error goto. Yo pensé que entraría al control de errores o marcaria algo que avisara que el registro ya existe, Y no hace nada. Intento ver si corriendo paso a paso existe un numero de error pero no se genera ninguno. razón lógica de porqué no entra al control de errores. Seguramente este tema ya ha sido expuesto en este foro pero no tengo ni idea como buscarlo. ¿Cómo le hago para saber que en la base de datos no se ha añadido ningún registro por duplicidad del campo clave? De antemano les agradezco su atención. Y espero ser yo el que ayude a otros en algún tiempo. |
|
GFAP
|
|
Mihura
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 14021 |
Enviado: 14/Junio/2021 a las 08:14 |
Hola, bienvenido.
¿Y cómo lo haces? ... depende del camino que tomes se puede hacer de varias formas ...
|
|
GFAP
Nuevo Unido: 12/Junio/2021 Localización: León Gto. Mex Estado: Sin conexión Puntos: 22 |
Enviado: 14/Junio/2021 a las 08:16 |
Private Sub BotonDarAlta_Click()
Dim dbs As Database Dim camino As String Dim Parte1 As String Dim Parte2 As String Dim Parte3 As String On Error GoTo ManipularError camino = Application.CurrentProject.Path & "\" Set dbs = OpenDatabase(camino & "DBRIO.accdb") Parte1 = " INSERT INTO Productos(CodigoBarras, Articulo, " Parte2 = "Precio, Proveedor) VALUES " Parte3 = "(" & CampoCodigoBarras.Value & ", '" & CampoNombreArticulo.Value & "', " & CampoPrecio.Value & ", " & ComboProveedor.Value & ");" dbs.Execute Parte1 & Parte2 & Parte3 'dbs.Execute " INSERT INTO Productos " _ ' & "(CodigoBarras, Articulo, Precio, Proveedor) VALUES " _ ' & "(" & CampoCodigoBarras.Value & ", " & CampoNombreArticulo.Value & ", " & CampoPrecio.Value & ", " & ComboProveedor.Value & ");" dbs.Close ManipularError: x = Err.Number If Err.Number <> 0 Then MsgBox "Hubo un error al realizar la operacion" & vbNewLine & _ Err.Description, vbCritical, "Error" End If End Sub |
|
GFAP
|
|
GFAP
Nuevo Unido: 12/Junio/2021 Localización: León Gto. Mex Estado: Sin conexión Puntos: 22 |
Enviado: 14/Junio/2021 a las 08:17 |
gracias por responder Jesús.
|
|
GFAP
|
|
Mihura
Ver perfil usuario
Enviar mensaje privado
Ver los mensajes del usuario
Visite la página de los usuarios
Añadir a la lista de amigos
Administrador Unido: 06/Mayo/2005 Localización: En la dehesa Estado: Sin conexión Puntos: 14021 |
Enviado: 14/Junio/2021 a las 08:50 |
La solución más académica es comprobar antes si el registro existe ... eso lo puedes hacer con un Dlookup, ...
Otra forma sería controlar el numero de registros afectados por la SQL, si es cero no la ha hecho (es decir, ya existe) y si es distinto de cero ha realizado la creación del nuevo registro. dbs.Execute "INSERT INTO ....." If dbs.recordsAffected = 0 'ya existe el registro else 'alta realizada end if Te repito, la primera forma es la 'académica', yo empleo siempre la segunda si uso SQL, -te ahorra un acceso a la BD-. |
|
GFAP
Nuevo Unido: 12/Junio/2021 Localización: León Gto. Mex Estado: Sin conexión Puntos: 22 |
Enviado: 14/Junio/2021 a las 09:32 |
Gracias Jesús ya probé las dos y Funcionaron a la perfección.
Se Puede cerrar el Hilo. |
|
GFAP
|
|
Responder | |
Tweet
|
Ir al foro | Permisos de foro Usted No puede publicar nuevos temas en este foro Usted No puede responder a temas en este foro Usted No puede borrar sus mensajes en este foro Usted No puede editar sus mensajes en este foro Usted No puede crear encuestas en este foro Usted No puede votar en encuestas en este foro |