Retroceder   Foros del Web > Programación para sitios web > Bases de Datos

Respuesta
 
Herramientas Desplegado
Antiguo 14-jul-2005, 04:44   #1 (permalink)
Juan Fco. ha deshabilitado el karma
 
Fecha de Ingreso: julio-2005
Mensajes: 59
¿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
Juan Fco. está desconectado   Responder Citando
Antiguo 14-jul-2005, 04:54   #2 (permalink)
Moderadora
tunait es realmente agradabletunait es realmente agradabletunait es realmente agradabletunait es realmente agradabletunait es realmente agradabletunait es realmente agradable
 
Avatar de tunait
 
Fecha de Ingreso: noviembre-2002
Ubicación: Terok Nor
Mensajes: 14.963
Qué tal Juan Fco.

Has probado así?

strSQL = "UPDATE ALUMNOS SET ALUMNOS.N1=" & N_1
tunait está desconectado   Responder Citando
Antiguo 14-jul-2005, 05:48   #3 (permalink)
Juan Fco. ha deshabilitado el karma
 
Fecha de Ingreso: julio-2005
Mensajes: 59
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.
Juan Fco. está desconectado   Responder Citando
Antiguo 14-jul-2005, 05:55   #4 (permalink)
Moderadora
tunait es realmente agradabletunait es realmente agradabletunait es realmente agradabletunait es realmente agradabletunait es realmente agradabletunait es realmente agradable
 
Avatar de tunait
 
Fecha de Ingreso: noviembre-2002
Ubicación: Terok Nor
Mensajes: 14.963
Me alegra que lo hayas solucionado

Un saludo Juan Fco. y bienvenido a los foros
tunait está desconectado   Responder Citando
Antiguo 14-jul-2005, 09:04   #5 (permalink)
Juan Fco. ha deshabilitado el karma
 
Fecha de Ingreso: julio-2005
Mensajes: 59
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
Juan Fco. está desconectado   Responder Citando
Antiguo 14-jul-2005, 09:13   #6 (permalink)
Juan Fco. ha deshabilitado el karma
 
Fecha de Ingreso: julio-2005
Mensajes: 59
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?
Juan Fco. está desconectado   Responder Citando
Antiguo 14-jul-2005, 09:53   #7 (permalink)
jrp01 está en el buen camino
 
Avatar de jrp01
 
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.704
Enviar un mensaje por MSN a jrp01
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
jrp01 está desconectado   Responder Citando
Antiguo 14-jul-2005, 10:01   #8 (permalink)
Juan Fco. ha deshabilitado el karma
 
Fecha de Ingreso: julio-2005
Mensajes: 59
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?
Juan Fco. está desconectado   Responder Citando
Antiguo 14-jul-2005, 10:11   #9 (permalink)
jrp01 está en el buen camino
 
Avatar de jrp01
 
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.704
Enviar un mensaje por MSN a jrp01
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
jrp01 está desconectado   Responder Citando
Antiguo 14-jul-2005, 10:21   #10 (permalink)
Juan Fco. ha deshabilitado el karma
 
Fecha de Ingreso: julio-2005
Mensajes: 59
¿No hay ninguna sentencia parecida a CurrentDb.Execute strSQL para afectar solo al registro activo?
Juan Fco. está desconectado   Responder Citando
Antiguo 14-jul-2005, 10:28   #11 (permalink)
jrp01 está en el buen camino
 
Avatar de jrp01
 
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.704
Enviar un mensaje por MSN a jrp01
No tiene que ser mediante el where ahi especificas que criterios deben de cumplirse para que afecte a uno o varios registros.
jrp01 está desconectado   Responder Citando
Antiguo 14-jul-2005, 10:46   #12 (permalink)
Juan Fco. ha deshabilitado el karma
 
Fecha de Ingreso: julio-2005
Mensajes: 59
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.
Juan Fco. está desconectado   Responder Citando
Antiguo 14-jul-2005, 10:55   #13 (permalink)
jrp01 está en el buen camino
 
Avatar de jrp01
 
Fecha de Ingreso: mayo-2004
Ubicación: México
Mensajes: 2.704
Enviar un mensaje por MSN a jrp01
Estas trabajando con VB?
jrp01 está desconectado   Responder Citando
Antiguo 14-jul-2005, 11:03   #14 (permalink)
Juan Fco. ha deshabilitado el karma
 
Fecha de Ingreso: julio-2005
Mensajes: 59
Es un programa en Access, en el que incorporo código de Visual Basic para aplicaciones.
Juan Fco. está desconectado   Responder Citando
Antiguo 14-jul-2005, 11:11   #15 (permalink)
Juan Fco. ha deshabilitado el karma
 
Fecha de Ingreso: julio-2005
Mensajes: 59
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?
Juan Fco. está desconectado   Responder Citando
Antiguo 14-jul-2005, 15:05   #16 (permalink)
Sir Matrix está en el buen camino
 
Avatar de Sir Matrix
 
Fecha de Ingreso: noviembre-2002
Ubicación: Dentro de mi cabeza. ono?
Mensajes: 1.248
Enviar un mensaje por ICQ a Sir Matrix
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
Sir Matrix está desconectado   Responder Citando
Antiguo 14-jul-2005, 16:45   #17 (permalink)
Juan Fco. ha deshabilitado el karma
 
Fecha de Ingreso: julio-2005
Mensajes: 59
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é.
Juan Fco. está desconectado   Responder Citando
Antiguo 15-jul-2005, 07:57   #18 (permalink)
Sir Matrix está en el buen camino
 
Avatar de Sir Matrix
 
Fecha de Ingreso: noviembre-2002
Ubicación: Dentro de mi cabeza. ono?
Mensajes: 1.248
Enviar un mensaje por ICQ a Sir Matrix
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
Sir Matrix está desconectado   Responder Citando
Antiguo 15-jul-2005, 08:09   #19 (permalink)
Juan Fco. ha deshabilitado el karma
 
Fecha de Ingreso: julio-2005
Mensajes: 59
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?
Juan Fco. está desconectado   Responder Citando
Antiguo 19-jul-2005, 13:03   #20 (permalink)
Sir Matrix está en el buen camino
 
Avatar de Sir Matrix
 
Fecha de Ingreso: noviembre-2002
Ubicación: Dentro de mi cabeza. ono?
Mensajes: 1.248
Enviar un mensaje por ICQ a Sir Matrix
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
Sir Matrix está desconectado   Responder Citando
Respuesta

No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 22:48.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93