Como eliminar registros desde excel a Access utilizando un Formulario

Necesito de su ayuda tengo un formulario con un textbox y un botón en excel para enviar información hacia access y me da un error estoy utilizando otro código

'Formulario
Option Explicit
Private Function SQL_DELETE()
Dim Borrar As String
Borrar = TextBox1
SQL_DELETE = "DELETE * FROM TB_CLIENTES WHERE ID=Borrar "
End Function
Private Sub CMDDELETE_CLICK()
ELIMINAR
If Sx = True Then MsgBox "DATO ELIMINADO SATIFACTORIAMENTE", vbInformation
If Sx = False Then MsgBox Msg_Err, vbCritical
End Sub
Sub ELIMINAR()
On Error GoTo salir
Cnn.Execute SQL_DELETE(), adCmdText
Sx = True
Exit Sub
salir:
Sx = False
Msg_Err = Err.Description
Err.Clear
End Sub
'Modulo
Sub Conectar()
Set Cnn = New ADODB.Connection
On Error GoTo Saltar
With Cnn
.Provider = "Microsoft.ACE.OLEDB.12.0"
.ConnectionString = "Data Source=" & ThisWorkbook.Path & "\DDBB.accdb"
.Open
End With
Exit Sub
Saltar:
Msg_Err = Err.Description
Err.Clear
End Sub
Sub Desconectar()
If Cnn.State = 1 Then
Cnn.Close
Set Cnn = Nothing
End If
End Sub

Respuesta
1

[Hola

No he revisado todo, pero de primera vista, pues no olvides que las variables no pueden ir ente comillas o serán tomadas como texto. Corrige esto:

SQL_DELETE = "DELETE * FROM TB_CLIENTES WHERE ID= " & Borrar

Ojo, estoy suponiendo que tu campo ID es numérico.

listo pero me da este error

"variable de objeto o bloque with no establecido"

¿En qué línea? ¿En qué momento? ¿Existe el campo ID en la tabla Tb_CLientes? ¿Activaste las referencias necesarias en el editor de VBA? Etc.

si yo cambio la variable por el valor de cualquier ID por ejemplo: SQL_DELETE = "DELETE * FROM TB_CLIENTES WHERE ID=3 "todo funciona bien, pero necesito que el valor lo agarre del textbox1 del formulario


                    

¿Qué tipo es el campo ID? En mi mensaje anterior supuse, como comenté, que era numérico ¿o es de texto?

s ies numerico y ya corregi tu sugerencia y me da el error que te comente

si quiere me pasas tu correo para mandarte los archivo, te lo agradeceria

Si es numérico y ya corregí tu sugerencia y me da un error

Si quiere me pasas tu correo para pasarte los archivo ver si me puede ayudar de ante mano gracias

Coloca todo en algún Drive y comparte por aquí el enlace.

https://drive.google.com/open?id=1OxlhmnBdZrC8hgDFiF0t734m1QrODLgL 

Pues dejando la línea que comenté, tal cual dije, elimina sin dilema.

SQL_DELETE = "DELETE * FROM TB_CLIENTES WHERE ID=" & Borrar

Y ojo, acabo de probarlo con tus propios archivos.

hermano lo hice y me da un error a menos que sea el office que me esta matando

¿Qué versión de Office tienes? Manda captura de pantalla del error y la línea exacta en donde se marca amarillo.

este es el error "variable de objeto o bloque with no establecido"

El archivo Excel que compartiste conmigo ¿es exactamente igual al tuyo o borraste/eliminaste alguna cosa antes de compartirlo?

La vedad es que mi archivo es muy pesado es una base dato de una escuela y su gran debilidad es que no se puede manejar con varios usuarios y mi intenet es fatal pero este es el enlace

https://drive.google.com/open?id=1z4P-r133BX9rCjS6v0fQ6mDLUR95QmqS 

[Hola

Por eso la importancia de los detalles: Si bien tus archivos de ejemplo trabajaban sobre un campo ID de tipo numérico, en tu BD real, el campo sobre el que aparentemente trabajas es de texto y a eso súmale que tiene un nombre de dos palabras; para esos casos hay que cambiar algunas cosas en las cadenas SQL:

SQL_DELETE = "DELETE * FROM MATRIZ WHERE [CEDULA IDENTIDAD]='" & Borrar & "'"

Tienes toda la razón disculpa como he cambiado código varias veces no me percate de esos detalles de ante mano te agradezco tu paciencia antes este novato que lo que busco es apender

pero acabo de probarlo en los dos formularios no me funciona

A ver, estimado, entiendo que seas novato, pero si quieres usar VBA y SQL, no solo debes copiar y pegar, sino que sobre todo debes entender qué es lo que se manda, qué es lo que hace cada línea, cada instrucción.

Tomando como base los últimos archivos que enviaste, y en estricto sin que les hagas ningún cambio, si en el módulo del "frm_Delete", en la UDF "SQL_DELETE", cambias esta línea:

SQL_DELETE = "DELETE * FROM MATRIZ WHERE ID=" & Borrar & " "

Por exactamente esta:

SQL_DELETE = "DELETE * FROM MATRIZ WHERE [CEDULA IDENTIDAD]='" & Borrar & "'"

(Asumo que antes usaste el "formruta" para confirmar la ruta del archivo Access) 

Luego activas el "frm_delete" y en su textbox colocas este número:

31961832

¡Exactamente ese¡ Y le das clic a botón que dice "Eliminar" (previamente quita el "Option Explicit" del módulo de ese USerform), pues si bien el "Msgbox" de indicación estará vacío, si entras al Access, el registro correspondiente a ese número ya no existirá. Ojo, tienes un exceso de On Error Goto, tienes variables innecesarias y además tus If no están bien programados.

Trata de leer algo sobre SQL para que entiendas nociones básicas como:

- Los valores para Campos de texto van entre comillas simples

- Los valores para Campos numéricos no necesitan comillas simples

Para terminar, OJO con las indicaciones que estoy dando, todo es usando exactamente los archivos que has enviado. No les hagas cambios, no intentes en otro archivo, primero entiende cómo funciona lo enviado.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas