Duda access

Hola, antes que todo te quería dar las gracias por tu buena disposición =).
Me gustaría saber si hay una forma de actualizar los datos de una tabla en access (todos los datos ). Te daré un ejemplo para explicarme mejor. Imagina que tengo una tabla llamada "Personas" que posee dos atributos: "Rut" y "Sueldo".
Pero resulta que los sueldos aumentaron y tengo que ir corrigiendo cada sueldo de cada persona. Se usar SQL y se que con el comando UPDATE puedo actualizar con condición, como por ejemplo. "Suma a todos los sueldos de la tabla Personas 50.000$"
hay algo parecido en ACCESS, ¿o puedo utilizar una senetencia en SQL?, ¿Si es así donde y como puedo escribir esa consulta?
Ojala me alla explicado bien =)
Saludos =P.
PD: uso access 2003

1 respuesta

Respuesta
1
En las consultas access utiliza el sql. Lo más sencillo es ir a la pestaña consultas ---> nuevo ---> Tabla personas y crear una consulta de actualización (La clase de consulta la eliges en el botón Tipo de Consulta). Si te bajas los campos, pones lo que quieres actualizar y si conviene los criterios... se ejecuta y listo. Pero todo esto que has creado, si vas al botón que hay en la parte superior izquierda (botón Vista) y lo despliegas te encuentras con vista sql, si picas verás que todo lo que has hecho en modo diseño, access lo traduce a sql. Todo esto para que veas que access trabaja con sql, en cuanto a utilizar este tipo de herramienta... es bastante básico.
Las sql se ejecutan con el método DoCmd.RunSql "Update Personas Set Sueldo=50000"
Por ejemplo. Este método se utiliza dentro de un código. Vas a la pestaña módulos abres uno nuevo y escribirías una función:
Function ActualizarTabla()
 DoCmd.RunSql "Update Personas Set Sueldo=50000"
Espero que te vayas haciendo con el access, saludos Angeles
End Function
Con el cursor dentro de la función, das ejecutar y ya está. Si guardas este módulo podrás llamar a la función desde una macro: Pestaña macros ---> nuevo ---> EjecutarCódigo, en nombre de función pondrías ActualizarTabla y al ejecutar la macro se ejecutaría la función.
También puedes poner el código en cualquier evento (Al hacer clic, Al perder el enfoque...) de cualquier objeto de un formulario (botón, cuadro combinado, cuadro de texto...) Para ello irías a las propiedades del objeto y en el evento elegido ---> Procedimiento de Evento ---> picas en el cuadrado de la derecha, el de los ... y escribirías DoCmd. RunSql "Update...
muchisimas gracias!! , muy buen respuesta, me ayudast mucho =)
Antes de finalizar me gustaría hacerte una ultima pregunta.
Solo si sabes usar VBA =). Me gustaría hacer un formulario para ingresar datos.
Pero no puedo hacer que mi consulta de SQL me tome los valores de los cuadros de texto del formulario.
Mi formulario es el siguiente:
rut: [  cuadro de texto llamado txtrut     ]
Dinero: [  cuadro de texto llamado txtdinero]
                                   [boton ingresar llamado cmdingresar] 
el codigo que hice en VBA es:
Private Sub cmdingresar_Click()
Dim SQL As String
Dim rut1 As String
Dim moneda1 As Currency
rut1 = rut1nor(Txtrut)
moneda1 = moneda(txtdinero)
SQL = " INSERT INTO Persona(rut,dinero) VALUES(rut1,moneda1)"
DoCmd.RunSQL SQL
End Sub 
Mi problema es que no me esta tomando los cuadros de textos del formulario por lo tanto al presionar el botón los ignor y me pregunta de nuevo.
¿Alguna idea de como debería ser?
Saludos ;D y muchas gracias por su tiempo
Access trabaja con objetos y colecciones a las que pertenecen esos objetos. Para referirte a un campo de texto, en concreto al txtRut deberás relacionarlo con el formulario o informe en el que se encuentra. Forms! NombreFormulario! TxtRut. Value o Reports! NombreInforme! TxtRut. Value 
Forms ---> Colección de formularios
Si lo haces en el formulario que en ese momento tienes activo, no tendrías necesidad (aunque también funcionaria) de referirlo a la colección ni al nombre del formulario, pondrías: Form! TxtRut. Value
Form ---> Objeto formulario
Para meter este valor en una sql harías:
Si el campo al que quieres igualar es de texto:
'" & form!txtRut.Value & "'
si es numérico:
" & form!txtRut.Value & "
si es de tipo fecha:
cDate('" & form!txtRut.Value & "')
Es decir, en nuestro caso suponiendo que el campo dinero sea numérico y rut texto:
SQL = " INSERT INTO Persona(rut,dinero) VALUES('" & form!txtRut.Value & "'," & form!txtdinero.Value & ")"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas