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

¿Por qué no funciona esta sencilla instrucción SQL?

Estas en el tema de ¿Por qué no funciona esta sencilla instrucción SQL? en el foro de Bases de Datos General en Foros del Web. Dim strSQL As String Dim N_1 As integer N_1 = 3 strSQL = "UPDATE ALUMNOS SET ALUMNOS.N1=N_1" CurrentDb.Execute strSQL...
  #1 (permalink)  
Antiguo 14/07/2005, 04:44
 
Fecha de Ingreso: julio-2005
Mensajes: 59
Antigüedad: 18 años, 9 meses
Puntos: 0
¿Por qué no funciona esta sencilla instrucción SQL?

Dim strSQL As String
Dim N_1 As integer
N_1 = 3
strSQL = "UPDATE ALUMNOS SET ALUMNOS.N1=N_1"
CurrentDb.Execute strSQL
  #2 (permalink)  
Antiguo 14/07/2005, 04:54
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Qué tal Juan Fco.

Has probado así?

strSQL = "UPDATE ALUMNOS SET ALUMNOS.N1=" & N_1
  #3 (permalink)  
Antiguo 14/07/2005, 05:48
 
Fecha de Ingreso: julio-2005
Mensajes: 59
Antigüedad: 18 años, 9 meses
Puntos: 0
Me encanta. Muchas gracias. Llevaba dias probando todas las combinaciones y era la primera vez que entraba en el foro, estoy contentisimo. No será la última vez que abuse de vuestros conocimientos, he hecho un curso de programacion en Access en el aula Mentor y aunque he aprendido cosas, tengo aún muchas lagunas. Muchas gracais y seguiremos en contacto. Juan Fco.
  #4 (permalink)  
Antiguo 14/07/2005, 05:55
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Me alegra que lo hayas solucionado

Un saludo Juan Fco. y bienvenido a los foros
  #5 (permalink)  
Antiguo 14/07/2005, 09:04
 
Fecha de Ingreso: julio-2005
Mensajes: 59
Antigüedad: 18 años, 9 meses
Puntos: 0
A pesar de funcionar bien la instruccion, ahora tengo el siguiente problema: N_1 es el resultado de una operación con otras variables (N_1=(E1+2*E2)/3), si aplico la instruccion SQL anterior con N_1, me sustituye todos los registros con el mismo valor de la expresion N_1 para el registro que estoy usando (cuando en realidad cada registro tiene su valor de E1 y E2), en cambio si aplico la instruccion SQL con (E1+2*E2)/3, cada registro se recalcula para sus valores de E1 y E2, ¿Por qué se asigna N_1 igual para todos los registros aunque tengan diferente E1 y E2?. Gracias
  #6 (permalink)  
Antiguo 14/07/2005, 09:13
 
Fecha de Ingreso: julio-2005
Mensajes: 59
Antigüedad: 18 años, 9 meses
Puntos: 0
Estoy pensando que este problema lo podría solucionar si fuera capaz de aplicar la instruccion SQl solamente al registro activo, pero no sé que sentencia poner en lugar de CurrentDb.Execute strSQL. ¿Se os ocurre algo?
  #7 (permalink)  
Antiguo 14/07/2005, 09:53
Avatar de jrp01  
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.702
Antigüedad: 20 años
Puntos: 0
Tienes que poner un where
strSQL = "UPDATE ALUMNOS SET ALUMNOS.N1=" & N_1 & " where N1=5"

Este es solo un ejemplo ya que si no pones where toda la tabla sera afectada
  #8 (permalink)  
Antiguo 14/07/2005, 10:01
 
Fecha de Ingreso: julio-2005
Mensajes: 59
Antigüedad: 18 años, 9 meses
Puntos: 0
Muchas gracias, oye una cosa mas, ¿cómo puedo hacer para que una sentencia SQL actue solo sobre el registro activo?, ¿que condición vendría a continuación del WHERE?
  #9 (permalink)  
Antiguo 14/07/2005, 10:11
Avatar de jrp01  
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.702
Antigüedad: 20 años
Puntos: 0
Con qhere especificas a que registro quieres afectar tambien puedes usar junto con where en and y or

Select campo where campo1 like 'hola' and campo2=2
  #10 (permalink)  
Antiguo 14/07/2005, 10:21
 
Fecha de Ingreso: julio-2005
Mensajes: 59
Antigüedad: 18 años, 9 meses
Puntos: 0
¿No hay ninguna sentencia parecida a CurrentDb.Execute strSQL para afectar solo al registro activo?
  #11 (permalink)  
Antiguo 14/07/2005, 10:28
Avatar de jrp01  
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.702
Antigüedad: 20 años
Puntos: 0
No tiene que ser mediante el where ahi especificas que criterios deben de cumplirse para que afecte a uno o varios registros.
  #12 (permalink)  
Antiguo 14/07/2005, 10:46
 
Fecha de Ingreso: julio-2005
Mensajes: 59
Antigüedad: 18 años, 9 meses
Puntos: 0
Ya, pero como identifico entonces el registro activo si solo tiene tres campos: E1, E2 y N_1, y N_1 es (E1+2*E2)/3. Lo que quiero es que cuando cambio E1 o E2 en un formulario de Access se cambie N_1 a (E1+2*E2)/3, pero cómo identifico el registro actual que es el único que quiero cambiar si E1 y E2 los cambio sobre la marcha.
  #13 (permalink)  
Antiguo 14/07/2005, 10:55
Avatar de jrp01  
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.702
Antigüedad: 20 años
Puntos: 0
Estas trabajando con VB?
  #14 (permalink)  
Antiguo 14/07/2005, 11:03
 
Fecha de Ingreso: julio-2005
Mensajes: 59
Antigüedad: 18 años, 9 meses
Puntos: 0
Es un programa en Access, en el que incorporo código de Visual Basic para aplicaciones.
  #15 (permalink)  
Antiguo 14/07/2005, 11:11
 
Fecha de Ingreso: julio-2005
Mensajes: 59
Antigüedad: 18 años, 9 meses
Puntos: 0
Se me ha ocurrido hacer un campo autoincrementable en la base de datos, llamado Expediente, y así utilizar en WHERE el campo Expediente (que es único para cad registro), pero no sé como asignar el valor del campo a una variable. He intentado esto:
Dim Exp as integer
Exp=ALUMNOS.EXPEDIENTE
pero no funciona, ¿Cómo puedo asignar el valor de un campo a una variable?
  #16 (permalink)  
Antiguo 14/07/2005, 15:05
Avatar de Sir Matrix  
Fecha de Ingreso: octubre-2000
Ubicación: Dentro de mi cabeza. ono?
Mensajes: 1.264
Antigüedad: 23 años, 6 meses
Puntos: 3
el valor del campo o del registro?

Si es del registro, debes crear un recordset en tu aplicación y recoger el valor con

VARIABLE= RS.FIELDS("NOMBRE_CAMPO")


Saludos
__________________
|||| ))>_<(( ||||
www.webmagic.cl <-- esta pagina está mala, no la busquen
  #17 (permalink)  
Antiguo 14/07/2005, 16:45
 
Fecha de Ingreso: julio-2005
Mensajes: 59
Antigüedad: 18 años, 9 meses
Puntos: 0
Bueno, y si no creo un campo nuevo, ¿cómo se os ocurre hacer la consulta para un registro concreto sin que le afecte a los demás?. Os recuerdo que si hago la consulta involucrando a los valores de los campos, funciona bien para todos, mientras que si lo hago con una variable que involucra los valortes de los campos, asigna el mismo valor para todos los registros. No entiendo por qué.
  #18 (permalink)  
Antiguo 15/07/2005, 07:57
Avatar de Sir Matrix  
Fecha de Ingreso: octubre-2000
Ubicación: Dentro de mi cabeza. ono?
Mensajes: 1.264
Antigüedad: 23 años, 6 meses
Puntos: 3
Revisa el uso del "Where"; por ejemplo si quieres que la consulta afecto sólo a los registros cuyo campo1 tiene valor "1" entonces colocas:

Select * from tabla where campo1=1

Si necesitas reestringir màs la consulta puedes poner:

Update TABLA set campo7='valor' where campo1=1 and campo2='fff'


Espero te ayude
__________________
|||| ))>_<(( ||||
www.webmagic.cl <-- esta pagina está mala, no la busquen
  #19 (permalink)  
Antiguo 15/07/2005, 08:09
 
Fecha de Ingreso: julio-2005
Mensajes: 59
Antigüedad: 18 años, 9 meses
Puntos: 0
Yo tengo una tabla con 3 campos: E1, E2 y N_1. Mediante un formulario introduzco valores para E1 y E2, y automáticamente (afterUpdate) quiero que se actualice N_1 según la siguiente formula N_1=(E1+2*E2)/3, con una instruccion SQL, pero no puedo poner WHERE por que no conozco los valores de ningún campo del registro, puesto que acabo de rellenarlos mediante un formulario. Pueden tener cualquier valor que yo les quiera poner. ¿Cómo puedo hacer para que se actualice solamente el registro activo?
  #20 (permalink)  
Antiguo 19/07/2005, 13:03
Avatar de Sir Matrix  
Fecha de Ingreso: octubre-2000
Ubicación: Dentro de mi cabeza. ono?
Mensajes: 1.264
Antigüedad: 23 años, 6 meses
Puntos: 3
y si al momento de hacer el primer update llenas también el campo N_1?

update tabla set E1=VALOR1, E2=VALOR2, N_1=(VALOR1+2*VALOR2)/3
WHERE CAMPOX= 'ALGO'

Saludos
__________________
|||| ))>_<(( ||||
www.webmagic.cl <-- esta pagina está mala, no la busquen
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




La zona horaria es GMT -6. Ahora son las 15:45.