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

Access: actualizar sólo el registro activo.

Estas en el tema de Access: actualizar sólo el registro activo. en el foro de Bases de Datos General en Foros del Web. Saludillos... Bueno, este es mi primer mensaje. Un saludo a todos. He llegado aquí gracias al señor Google, después de mucho buscar. Verán, estoy creando ...
  #1 (permalink)  
Antiguo 14/10/2003, 10:38
 
Fecha de Ingreso: octubre-2003
Ubicación: Profundidades del Vallès
Mensajes: 5
Antigüedad: 20 años, 6 meses
Puntos: 0
Pregunta Access: actualizar sólo el registro activo.

Saludillos...

Bueno, este es mi primer mensaje. Un saludo a todos.

He llegado aquí gracias al señor Google, después de mucho buscar. Verán, estoy creando una base de datos en Access, un programa en el que no había profundizado nada hasta hace un par de semanas, y lo he hecho por cuestiones laborales.

Les explico.
He creado dos tablas: Clientes y Plazas.
La tabla Clientes tiene los siguientes campos: ID, Nombre y Plaza. Y la tabla Plazas tiene los campos: CC (Código Cliente) y Plaza.

Además he creado un formulario para rellenar la tabla Clientes. En este formulario escojo mediante una combo box las plazas que quedan libres, gracias a una consulta que preparé previamente. Y lo que pretendo es que, cuando cambie la plaza de un cliente o cree un cliente nuevo y seleccione la plaza que éste ocupa -en el mismo formulario-, el campo CC de la tabla Plazas coja solito la ID del cliente.

Y esto, más o menos, lo he conseguido.
A la hora de diseñar el formulario, seleccioné la combo box y le dejé dicho que después de cualquier actualización ejecutase una Macro con la siguiente sentencia en SQL: UPDATE PLAZAS SET CC=CLIENTES.Id. Y lo hace, pero claro, rellena todos los registros con la misma Id.

¿Cómo hago para que únicamente actualice el registro actual?
¿He de añadir alguna instrucción (o lo que sea) en la sentencia SQL para lograrlo?

Advierto que no tengo ni idea de Visual Basic y sólo nociones generales de SQL.

Espero que puedan entenderme...
  #2 (permalink)  
Antiguo 14/10/2003, 12:36
Avatar de Allende  
Fecha de Ingreso: octubre-2003
Ubicación: La Habana
Mensajes: 54
Antigüedad: 20 años, 6 meses
Puntos: 0
Hola golab, segun entiendo lo qu enecesitas es crear una relacion entre el campo Id de tu tabla Clientes con el campo CC de tu tabla Plazas. Esto lo puedes hacer en Access dando click en el icono de Relaciones, haciendo esto no necesitas la Macro no hacer ningun Update.
Por otra parte, y solo para aclararte un poco, en el caso del UPDATE que usas, mientras no restrinjas la seleccion con una clausula WHERE te tomara todos los datos de la tabla. Aunque te repito, si creas la relacion no tendras que hacer el UPDATE.

saludos, Allende.
  #3 (permalink)  
Antiguo 14/10/2003, 13:32
 
Fecha de Ingreso: octubre-2003
Ubicación: Profundidades del Vallès
Mensajes: 5
Antigüedad: 20 años, 6 meses
Puntos: 0
Saludos...

¿Entonces, creando la relación, si cambio la plaza de un cliente (campo Plaza de la tabla Clientes), el campo CC de dicha plaza (en otra tabla) se actualiza automáticamente? Recuerdo haberlo probado y no obtener el resultado que pretendo.

Cita:
Por otra parte, y solo para aclararte un poco, en el caso del UPDATE que usas, mientras no restrinjas la seleccion con una clausula WHERE te tomara todos los datos de la tabla.
Cierto, cierto.
He probado distintos ''filtros'' con el WHERE, pero el problema es que no dispongo de variables con las que decirle que sólo debe actualizar el registro activo. O no sé cómo decírselo.

En cualquier caso, muchas gracias por su ayuda.
  #4 (permalink)  
Antiguo 14/10/2003, 14:38
Avatar de Allende  
Fecha de Ingreso: octubre-2003
Ubicación: La Habana
Mensajes: 54
Antigüedad: 20 años, 6 meses
Puntos: 0
Hola nuevamente,
Tengo la impresion de que el la tabla cliente te sobra el campo Plaza, lo estas duplicando por gusto. Si creas una relacion entre el id de Cliente/Id y Plazas/CC podras mostrar en cualquier momento a que plaza pertenece cada cliente y cuando hagas un cambio se actualizara en las tablas correspondientes.
Espero haber entendido bien tu problema y que tu hayas entendido la respuesta

salu2, Allende.
  #5 (permalink)  
Antiguo 16/10/2003, 05:08
 
Fecha de Ingreso: octubre-2003
Ubicación: Profundidades del Vallès
Mensajes: 5
Antigüedad: 20 años, 6 meses
Puntos: 0
Saludos de nuevo...

Creo comprender lo que me explicas, pero llevándolo a la práctica, no obtengo el resultado que pretendo. Te explico, si no te importa, el objetivo último de la base de datos que trato de crear.

Por un lado, tenemos una serie de plazas de parking. Siempre son las mismas. O sea, una vez echa y rellena la tabla, uno puede 'casi' olvidarse de ella.

Por otro lado, los clientes. Que van y vienen.
En un formulario -no sé si lo he explicado ya, si es así, mis disculpas...-, pongo los campos de los clientes (nombre, teléfono, etcétera) y uno de ellos es una combo box que me muestra únicamente las plazas de parking libres (sin CC).
Por lo tanto, si desde el formulario, cambio de plaza de parking a un cliente determinado, el CC (Código Cliente) de dicha plaza debe obtener por sí sola la ID de dicho Cliente. Automáticamente. O si elimino al cliente, le doy de baja, el CC (Código Cliente) de dicha plaza debe quedar vacío, en blanco.

Con el planteamiento que me propones, creo que (todo esto) no resulta. De entrada, si elimino el campo Plazas de Clientes, no veo cómo, desde el formulario, puedo escoger qué plaza está ocupando cada cliente... es decir, pongamos que Juan ocupa la plaza C1. Esto he de poder escogerlo desde el formulario: pongo el nombre de Juan en su correspondiente campo y en la combo box escojo la plaza (mediante una consulta sólo muestra aquellas plazas libres, sin CC); entonces, la plaza añade la ID de Juan a CC. Es este segundo trámite el que debe realizarse automáticamente.

No doy para mucho, como puedes ver :p.

De nuevo, muchísimas gracias por tu ayuda. No sabes bien cómo o cuánto se agradece.

Última edición por Golab; 16/10/2003 a las 05:17
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 16:30.