Problema con SQL y VB 6 comando SQL UPDATE no actualiza tabla

Seguir
Buen día  amigos programadores de yoreparo.com, los saludo con mucho gusto desde CDMX estoy trabajando en un programa en VB 6 y una base de datos ACCESS ADODB con formato ACCESS 2000. La base es del tipo .MDB

Escribo esta consulta porque necesito si alguien me puede explicar ¿por que razón no me funciona desde Visual Basic 6 un UPDATE para la base de datos ADODB con el campo principal de la base de datos? es decir el que tiene la clave principal.

Me explico mejor tengo un programa VB que inserta, elimina y debería modificar los registros de una BD creada en ACCESS 2010 (con formato ACCESS 2000 es del tipo .mdb como ya mencione) para guardar datos generales de clientes de una tienda: Nombre, Direccion, Telefono, etc...

Al momento de crear la base de datos se creo con un campo llamado "NO" que refiere "Numero" con características de tipo "numero single" simplemente para numerar a cada uno de los clientes y las entradas en la base de datos. Y a esta se le borro el campo por defecto "Id" y se agrego la "Clave principal" al campo NO. Para basar los datos en los clientes numerados.


Insertar y eliminar entradas funciona sin problema, el problema es a la hora de modificar o actualizar los datos: 

En el programa hecho en VB6 en mi command button tengo el código:

Private Sub Command3_Click()

Set registros = New ADODB.Recordset

'Sentencia SQL para modificar (update) la tabla cliente

conexion.Execute "UPDATE clientes SET NOMBRE = '" & txtNombre.Text & "', DIRECCION='" & txtDireccion.Text & "', COLONIA='" & txtColonia.Text & "', MUNICIPIO='" & txtMunicipio.Text & "', CP='" & Val(txtCp.Text) & "', TELEFONO='" & txtTelefono.Text & "', EMAIL= '" & txtEmail.Text & "' WHERE NO= '" & Val(txtNo.Text) & "' "

MsgBox "Cliente actualizado.", vbInformation, "Modificar"

'Cerramos la conexion

conexion.Close


End Sub

El programa corre y aunque ejecuta el UPDATE y sale el mensaje "Cliente actualizado" la base de datos no cambia. 



He hecho puebas ya directamente en ACCESS en la opción "diseño de consulta" y pulsando el boton SQL con el mismo comando del menu "Diseño" y ahí tampoco funciona, el access solo me dice cuando ejecuto "Va a actualizar 0 filas".



Cuando intento actualizar utilizando otro campo (que no tiene la llave principal) como criterio si lo hace:

  
¿¿Sabes que puedo hacer o que falta configurar para que mi programa funcione?? ¿Te ha sucedido alguna vez?

¿¿Cual es la sintaxis para el comando UPDATE en VB6 cuando tomas como criterio el campo que es llave principal de una ADODB??

Agradezco la ayuda y gracias por tu atención.

Alejandro - jealcori Yo Reparo

Información agregada:

1 Solución propuesta

SOLUCIÓN ACEPTADA
El EXECUTE está mal, ya que estás tratando a NO como Texto y no como Número.
Sacale las comillas simples al final,  y también a CP:

SQL = "UPDATE clientes SET NOMBRE = '" & txtNombre.Text & "', DIRECCION='" & txtDireccion.Text & "', COLONIA='" & txtColonia.Text & "', MUNICIPIO='" & txtMunicipio.Text & "', CP=" & txtCp.Text & ", TELEFONO='" & txtTelefono.Text & "', EMAIL= '" & txtEmail.Text & "' WHERE NO= " & txtNo.Text

MsgBox SQL

conexion.Execute SQL

Saludos!

PD : La variable SQL sirve para ver qué se va a ejecutar y determinar un posible error. Si se produce un error, posteá la pantalla del MsgBox (modificando tu pregunta, agregando la imagen al final de la misma).

Agregado:
Parece ser que estás usando la abreviatura de una palabra reservada en el nombre del campo, lo que debe evitarse para evitar inconvenientes.
A fin de salir del paso, usá la sintaxis completa de denominación de campo: los campos entre corchetes. Reemplazá el final del comando por:
WHERE [NO]= " & txtNo.Text
Saludos!
  • hace 22 días

    Avatar de jealcori

    Gracias por responder Tangos modifique el código quitando comillas y con la variable SQL y el msgBox y ya veo el MsgBox del SQL UPDATE con las modificaciones que quiero que se envían a ACCESS, y me muestra el msgbox de "cliente actualizado" pero aun sucede que no se actualiza, el programa corre bien lo termino con End .... Voy a la base de datos y esta muestra los mismos valores. :( Creo que es problema al usar el campo de la clave principal en el comando SQL. ¿Alguna otra sugerencia?

  • hace 22 días

    Avatar de Tangos

    Por favor, necesito que incluyas en tu pregunta la pantalla que aparece en el nuevo MsgBox que agregaste.
    Necesito ver la instrucción para indicarte el próximo paso.
    Gracias!

  • hace 22 días

    Avatar de jealcori

    Tangos, resulta que no puedo postear o modificar la pregunta la web de yoreparo me dice que solo puedo postear una pregunta al día, lo posteare mañana con el message box que tiene el contenido de SQL. Saludos hasta entonces.

  • hace 22 días

    Avatar de Tangos

    Si aún estás por ahí, subí la imagen a imgur y realizá un comentario con el enlace a la imagen.
    Yo me encargo de modificar tu Pregunta, como Moderador puedo hacerlo.
    Saludos!

  • hace 21 días

    Avatar de jealcori

    Buenos dias Tangos aca esta la imagen del msgBox http://i.imgur.com/B584y0G.jpg. Saludos.

  • hace 21 días

    Avatar de Tangos

    Gracias por la imagen, ya la agregué. Fijate mi Solución, agregué datos al final. Saludos!

  • hace 21 días

    Avatar de jealcori

    Esta funcionando amigo!!! :D ... Eres un master ... Que te la pases bien Tangos!!

 
 

Bienvenid@

YoReparo.com es la mayor comunidad sobre Reparaciones de habla hispana. Nos ayudamos mutuamente a reparar lo que sea, y una reparación a la vez luchamos juntos contra el problema de la chatarra electrónica.

Únete a nosotros: Regístrate Gratis