Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General »

Access: sentencia update con Visual Basic

Estas en el tema de Access: sentencia update con Visual Basic en el foro de Bases de Datos General en Foros del Web. Hola a todos: no soy un programador muy experto y tengo el siguiente problema. Tengo un formulario de Access con el que quiero modificar dos ...
  #1 (permalink)  
Antiguo 27/04/2011, 21:06
 
Fecha de Ingreso: enero-2002
Ubicación: Buenos Aires
Mensajes: 62
Antigüedad: 22 años, 3 meses
Puntos: 1
Access: sentencia update con Visual Basic

Hola a todos:
no soy un programador muy experto y tengo el siguiente problema.

Tengo un formulario de Access con el que quiero modificar dos tablas. Para modificar la 2da. tabla no principal del formulario agregué una evento en el botón de comando de "Agregar registros". En ese evento pongo que al hacer click en el boton me actualice también la 2da. tabla. Intenté hacer esto con el siguiente codigo de Visual Basic.

Dim midb As Database
Set mibd = CurrentDb()

midb.Execute "UPDATE Stock SET Stock.UnidadesStock=10 WHERE Stock.Stock_IdProducto=4"

Set midb = Nothing

La sentencia UPDATE está bien porque la probé con una macro de Access y funciona, pero cuando la quiero hacer funcionar en VB no anda.

Desde ya muchas gracias.
  #2 (permalink)  
Antiguo 28/04/2011, 02:26
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: Access: sentencia update con Visual Basic

Intentalo asi:

Currentdb.execute "UPDATE Stock SET Stock.UnidadesStock=10 WHERE Stock.Stock_IdProducto=4"

Otra opcion, con la que te saldrá algun mensaje si se produce un error:

docmd.runsql "UPDATE Stock SET Stock.UnidadesStock=10 WHERE Stock.Stock_IdProducto=4"

Un saludo
  #3 (permalink)  
Antiguo 01/05/2011, 12:33
 
Fecha de Ingreso: enero-2002
Ubicación: Buenos Aires
Mensajes: 62
Antigüedad: 22 años, 3 meses
Puntos: 1
Respuesta: Access: sentencia update con Visual Basic

Gracias Taribo007 por tu respuesta. Me funciona correctamente.

Ahora bien, tengo otra consulta. Quiero ejecutar esta sentencia SQL relacionada con los campos de un formulario de Access y no logro dar con la sintaxis correcta. Pongo los nombres de los campos probando con distintas sintaxis pero no logro hacerla funcionar.

Probé con:

CurrentDb.Execute "UPDATE Stock SET Stock.UnidadesStock=" & CantidadVendida & " WHERE Stock.Stock_IdProducto=" & Lista32 & ""

dónde "CantidadVendida" y "Lista32" son los nombres de los campos del formulario Access.

Agradecería si alguno me puede decir dónde está mi error en la sintaxis o si me puede recomendar alguna pagina web con alguna explicación bastante sencilla de la sintaxis de sentencias SQL en VB (las que encontré hasta ahora son bastante complicadas).

gracias.
  #4 (permalink)  
Antiguo 03/05/2011, 01:43
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: Access: sentencia update con Visual Basic

Lo primero es distinguir entre campos y controles. Creo que te rfieres a controles cuando hbalas de campos.

Otra cosa a tener en cuenta es el tipo de datos de los campos que usas en la sql, ya que si los campos son de tipo texto debes usar comillas simples. Tambien habria que saber si los controles estan o no en el form desde el que usas esa sentencia.

La sentencia que usas, deberia ser asi, si ambos comapos son de texto, y deberias quitar los rojo del campo que sea de tipo numerico.


CurrentDb.Execute "UPDATE Stock SET UnidadesStock='" & CantidadVendida & "' WHERE Stock_IdProducto='" & Lista32 & "'"

No obstante, por que no funciona??? Te da algun error???

Un saludo
  #5 (permalink)  
Antiguo 03/05/2011, 21:43
 
Fecha de Ingreso: enero-2002
Ubicación: Buenos Aires
Mensajes: 62
Antigüedad: 22 años, 3 meses
Puntos: 1
Respuesta: Access: sentencia update con Visual Basic

Ahora me funciona Taribo007, gracias !!!

Tengo dos consultas:

1. Con respecto a uno de los campos del formulario (o control). Quisiera hacer una operación antes con ese campo y luego usar una variable var1 (definina con Dim var1 as String) en la sentencia SQL. Es decir, uso esta sintaxis pero no me funciona.

CurrentDb.Execute "UPDATE Stock SET Stock.UnidadesStock="var1" WHERE Stock.IdStock=" & Lista32

2. Otro problema que tengo es con un SELECT similar a la sentencia de UPDATE anterior:
CurrentDb.Execute "SELECT Stock.Stock_IdProducto FROM Stock WHERE ((Stock.IdStock)=" & Lista32
Acá el error que me da es : "Falta un ),] o un elemento en la expresion de consulta '((Stock.IdStock)=1'

No quisiera que me respondas a cada consulta en particular pero con algun tutorial o pagina web que explique de manera sensilla la sintaxis de sentencias SQL en Visual Basic me bastaria.

gracias.
  #6 (permalink)  
Antiguo 04/05/2011, 01:15
Avatar de Taribo007  
Fecha de Ingreso: agosto-2007
Mensajes: 1.338
Antigüedad: 16 años, 8 meses
Puntos: 18
Respuesta: Access: sentencia update con Visual Basic

Para la pregunta 1 la respuesta es similar a la anterior, has de concatenar el contenido de la variable como se hacia con el control:

CurrentDb.Execute "UPDATE Stock SET UnidadesStock='" & Var1& "' WHERE Stock_IdProducto='" & Lista32

El error que observas es sencillo, te lo dice el propio mensaje, te falta un parentesis (o te sobran todos):

CurrentDb.Execute "SELECT Stock.Stock_IdProducto FROM Stock WHERE IdStock=" & Lista32

Pero es necesario saber que pretendes usando esta sentencia, ya que
CurrentDb.Execute se usa para ejecutar sentencias de accion, no de seleccion, por tanto con esa sentencia no obtendras nada (no recuerdo si salta algun error). Por eso es necesario saber que pretendes, para actuar de una forma u otra en funcion de tus necesidades.

Y hablando de manuales, no conozco un manual especifico de sql en VBA. Es simplemente ir concatenando para conseguir las sentencias adecuadas. Pero si conozco el mejor manual SQL del motor jet, que es el que usa access:

http://www.mvp-access.es/softjaen/ma.../sql/index.htm

Y el mejor manual de VBA, lo tienes en el mejor foro de access:

http://www.mvp-access.com/foro/forum_topics.asp?FID=19

Un saludo
  #7 (permalink)  
Antiguo 09/11/2011, 06:48
 
Fecha de Ingreso: octubre-2009
Mensajes: 11
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Access: sentencia update con Visual Basic

Buenas, porque no me funciona esto:

Me![Carro] es un Integer

MBd.Execute "UPDATE Carros SET Estado =' & CBool(1) & ' WHERE Id_Material =' & Me![Carro] &'"


Saludos

Etiquetas: access, basic, sentencia, update, visual, bases-de-datos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 06:26.