Access - Creación de campo clave (no Calculado) a partir de otros campos

   
Vista:

Creación de campo clave (no Calculado) a partir de otros campos

Publicado por julio (10 intervenciones) el 17/08/2012 01:22:38
El caso es que quiero sacar un campo clave, que es la combinación de otros 3, este campo no puede ser calculado ya que entonces no se pueden asociar la tablas, ahora lo que tengo pero no puedo utilizar es el l campo cod. Único lo saco utilizando [CURSO] & "/" & [SESION] & "-" & [EVENTO], he intentado aplicar la formula a un campo texto pero no funciona.
Estos son los campos

CURSO SESION EVENTO CODIGO UNICO
47968 17 1 47968/17-1
47968 172778 1 47968/172778-1
47968 172805 1 47968/172805-1
47968 174874 1 47968/174874-1
Muchas gracias
Julio
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Neckkito

Creación de campo clave (no Calculado) a partir de otros campos

Publicado por Neckkito (1104 intervenciones) el 20/08/2012 23:26:14
Hola!
Sin más detalles no puedo darte una respuesta detallada, pero te comento cómo se puede hacer en general:
En la base de datos defines el campo [CODIGO UNICO] como clave
En el formulario donde rellenas los datos, y suponiendo un proceso de entrada de datos secuencial de la forma [CURSO] -> [SESIÓN] -> [EVENTO], en el evento "Después de actualizar" del campo [EVENTO] puedes escribir el siguiente código:
...
Private Sub...
With Me
.[CODIGO UNICO].value = .[CURSO].value & "/" & .[SESION].value & "-" & .[EVENTO].value
End With
End Sub
...
Se podría controlar que te avisara si falta algún dato en algún campo, pero bueno... Eso serían un par de líneas más de código.
Y ya lo tienes.
A ver si con esto consigues solucionarlo.
Un saludo,
Neckkito
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Creación de campo clave (no Calculado) a partir de otros campos

Publicado por julio (10 intervenciones) el 21/08/2012 17:12:25
Muchas gracias, lo acabo de probar y funciona,
unicamente que si modifico alguno de los campos que no sea "Evento," no actualiza el valor de " Codigo Unico", hasta que no modifico Evento.
¿ hay alguna manera para que lo cambie cuando modifico alguno de los 3 campos?.

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Neckkito

Creación de campo clave (no Calculado) a partir de otros campos

Publicado por Neckkito (1104 intervenciones) el 21/08/2012 19:34:36
Hola!
Puedes hacerlo asignando el código que te pasé (con algunas variaciones que te explico más abajo) a cada evento "Después de actualizar" de cada uno de los campos implicados (exceptuando el campo [CODIGO UNICO], que es el que, en teoría, se crea solo y tú no lo escribes).
El código que te pasaré lo que hace es ir "construyendo" el campo clave a partir de los datos que vayas introduciendo; evidentemente, si modificas alguno de los campos esos cambios se actualizarán en el campo clave.
El código común para los tres controles (en el evento "Después de actualizar") es el siguiente:
...
Private Sub ...
Dim vCurs As String, vSes As String, vEvent As String
Dim vCodUn As String

vCurs = Nz(Me.[CURSO].Value, "")
vSes = Nz(Me.[SESION].Value, "")
vEvent = Nz(Me.[EVENTO].Value, "")
vCodUn = vCurs & "/" & vSes & "-" & vEvent
Me.[CODIGO UNICO].Value = vCodUn
End Sub
...

Ya me dirás si te ha ido bien.

Un saludo,
Neckkito
... http://neckkito.eu5.org ...
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Creación de campo clave (no Calculado) a partir de otros campos

Publicado por Julio (10 intervenciones) el 24/08/2012 13:27:53
Muchas Gracias Neckkito, funciona perfectamente,

otra pregunta más , estoy utilizando en una consulta de actualización el siguiente comando que pide el cod de la sesión a utilizar para un traspaso de datos

Como "*" & [Introduce el Cod Sesión para traspaso de datos] & "*"


Si que funciona, pero ocurre que si antes no he copiado al portapapeles el código y me equivoco o no pongo nada, me genera una consulta que no es la que quiero, que tendría que poner más?

0 es mejor utilizar una Macro, que nos realice la búsqueda y si no encuentra nada se pare, lo he intentado pero no lo he conseguido.
Muchas gracias por tú ayuda
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Neckkito

Creación de campo clave (no Calculado) a partir de otros campos

Publicado por Neckkito (1104 intervenciones) el 24/08/2012 20:59:34
Hola!
Las consultas parametrizadas requieren el valor exacto de búsqueda. Ahora bien, si le pones como filtro el LIKE (Como) tienes cierta libertad con el valor porque te busca por similitud; la parte negativa es que te devuelve todos los valores similares, no sólo el que buscas.

Como no sé cómo tienes estructurada tu BD no sé si es posible crear un combo, en un formulario, de manera que el combo te recoja todos los códigos de sesiones, y que tú selecciones el código sesión desde el combo.

Si te es posible hacerlo así, y suponiendo que a ese combo lo llamas cboCodSes (Propiedades -> Pestaña Otras -> Nombre) en la consulta podrías poner como filtro la siguiente expresión:

= Forms!NombreForm.cboCodSes.Value

Donde NombreForm sería el nombre del formulario donde se ubica el combo.

Luego, en el combo, en el evento "Después de actualizar", podrías escribir el siguiente código:
...
Private Sub...
If isnull(me.cboCodSes.Value) then exit sub
'Desactivamos los warnings
docmd.setwarnings false
'Ejecutamos la consulta
docmd.openquery "NombreConsulta"
'Reactivamos los warnings
docmd.setwarnings true
End sub
...

Y la consulta te filtraría por el valor seleccionado en el combo.

A ver si así te funciona.

Saludos,

Neckkito
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Creación de campo clave (no Calculado) a partir de otros campos

Publicado por julio (10 intervenciones) el 29/08/2012 16:29:30
Muchas gracias,
funciona sólo que me gustaría que la búsqueda la realizase en varios campos ( cod sesión , nombre del curso, Fecha inicio), así como poner un botón para ejecutar la búsqueda y poderla utilizar para diferentes cosas (actualizar datos, imprimir los impresos, etc).
La estructura de mi bdatos tiene varias tablas :

Catalogo<-->Sesiones <-->Enlace <-->Personas, donde:
Catalogo: Catalogo de Cursos
Sesiones: Sesiones de los curso (fechas)
Enlace: Unión entre personas y sesiones con campos como asistencia, respuesta, etc
Personas: bdatos de personas

Soy nuevo en Access, la verdad que ando un poco perdido y me está sirviendo de mucha ayuda todas tus indicaciones.
Muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Neckkito

Creación de campo clave (no Calculado) a partir de otros campos

Publicado por Neckkito (1104 intervenciones) el 29/08/2012 17:39:21
Apreciado Julio:
No es que no quiera ayudarte pero lo que estás pidiendo tiene dos dificultades principales:
- Una, lo que pids es demasiado genérico (no es una consulta puntual)
- Dos, lo que pides es demasiado complejo

Es demasiado complejo porque, precisamente al ser genérico y no poder ver la BD in situ, te podría poner una explicación que no funcionara por culpa de la estructura de la BD (no porque no fuera válida).

Por otra parte, también es demasiado complejo porque requeriría una explicación muy extensa y, al ser totalmente escrita, habría muchas posibilidades de que no me explicara bien o no lo entendieras correctamente. No puedo ponerte aquí una explicación que quizá, trasladada a Word, se comiera cinco o seis páginas.

A eso le debemos añadir que, si como comentas, eres "novato" en Access, te vas a limitar a copiar-pegar sin saber muy bien lo que haces, con los errores que de ello podrían derivarse (y que podrían convertir el hilo de la consulta en algo interminable).

Lo que te aconsejo es que dividas tu problema en "problemas" más pequeños y que lances tantas consultas nuevas como "problemas" tengas (y digo "consultas nuevas" porque se hace bastante confuso leerlo todo en el mismo hilo de consulta).

De verdad que lamento no poder ayudarte, pero lo anterior explica los motivos. Si haces lo que te he recomendado y veo tus nuevas consultas intentaré darte esas respuestas parciales que necesitas.

Por cierto, y como "parche", te recuerdo que puedes filtrar y subfiltrar si en los resultados de la consulta o del formulario (si lo ves por formulario) haciendo click con el botón derecho del ratón sobre el campo que quieras filtrar.

Un saludo,

Neckkito
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Creación de campo clave (no Calculado) a partir de otros campos

Publicado por julio (10 intervenciones) el 29/08/2012 20:40:43
Neckkito, tienes razón
intentare ir poco a poco con las preguntas.

Muchas gracias nueevamente por tú ayuda
julio
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Creación de campo clave (no Calculado) a partir de otros campos

Publicado por Eduardo Caliche (1 intervención) el 30/08/2012 19:08:47
Para Neckkito
Cordial saludo.
Noto que saves mucho sobre programacion en Acces, yo la verdad no tengo ni idea, pero quisiera saver si me puedes ayudar con lo siguiente. Compre un programa de contabilidad, el cual cada ves que formateo elequipo al volver a instalarlo me pide un ID y una clave, el vendedor me pide el ID que lo genera el equipo y luego me dice la clave, pero es muy fastidioso y en esta ocacion particularmente llevo casi una semana esperando para que me atienda. Sera que hay alguna forma de quitar esa clave o de poder generarla yo mismo.

De antemano, gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Neckkito

Creación de campo clave (no Calculado) a partir de otros campos

Publicado por Neckkito (1104 intervenciones) el 30/08/2012 20:25:42
Hola, Eduardo:
Lamento comentarte que no puedo ayudarte.
Los programas comerciales suelen llevar varios sistemas de protección, además de tener la programación (el código) muy protegido. Entiendo que si fuera fácil romper estas protecciones el programa tendría los días contados en el mercado.
A eso hay que añadir que sí sé un poquito de Access y VBA, pero eso no significa que sepa "mucho" de otros lenguajes de programación (porque no sé cómo estará hecho el programa de contabilidad).
Y, por último, no me dedico a "hackear" programas de los demás (mis conocimientos no llegan a tanto ).
Por todo ello lamento decirte que, en este caso, no puedo ayudarte.
Un saludo,
Neckkito
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar