Apúntate a la Zona De Descargas Reservadas (ZDDR). Solo son 20 Euros
Con solo 20€ ayudarás
a mantener el foro.


Seguir a udias en Twitter
Directorio de Empresas de Foros de informática


Todo lo que sueñas, se puede diseñar.
We build your dreams.

 - Principal - Responder - Estadísticas - Registrarse - Buscar - Lista de usuarios -  - Zona de Descargas
 -Privacidad y política de cookies -
Ayuda al foro con tu donación

Búsqueda en los foros

Foros en Udias.com / FileMaker / Valor de campo en función de la coincidencia de otros campos
Autor Mensaje

Miembro

Habitual

  Karma         85

#1 Publicado: 11 Oct 2010 10:50



Hola a todos. En primer lugar agradecer en esta primera intervención, aunque sigo este foro desde hace tiempo, la labor de todos y la ayuda que siempre se encuentra. No tengo muchos conocimientos en FM (11), me estoy iniciando, pero he buscado en el foro y no he encontrado la solución, si es que la tiene tal y como me lo planteo.
Bueno, ahora la consulta.
Tengo una base de datos con una única presentación compuesta de varios campos. Lo que quiero es que cuando en un registro de la base introduzca los datos en CAMPO 20, CAMPO 21 y CAMPO 22, sí estos datos coinciden respectivamente con los datos existentes en el CAMPO 2, CAMPO 3 y CAMPO 4 de otro registro de la base de datos, me ponga automáticamente en el CAMPO 23, del registro que estoy completando, el contenido del CAMPO 1, del registro en el que los datos del campo 2, 3 y 4 coinciden, (el campo 1 es un campo númerico único que introduzco cada vez que creo un nuevo registro).

No se si me estoy liando. Es decir, que al completar los CAMPOS 20, 21 y 22 en un registro determinado que acabo de crear y estoy rellenando, tiene que buscar ese mismo contenido en los CAMPOS 2, 3 y 4 de cada registro de la base y si coinciden poner en el CAMPO 23 del registro que estoy rellenando, el contenido del CAMPO 1 del registro cuyos campos 2, 3 y 4 coinciden con los campos 20, 21 y 22 del registro que estoy rellenando. Definitivamente me estoy liando . No se si se puede hacer lo que planteo.
Bueno, gracias anticipadas y disculpar mi torpeza de novato.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
win vista Fm 11 proavanced

Administrador


  Karma               26354

#2 Publicado: 11 Oct 2010 11:08



No se si te puede servir el establecer una relación con la condición que campo 20 = campo 2, por ejemplo. Si existen registros que cumplan esa relación, rellenas automáticamente el campo 23.

Es una idea que tendrás que desarrollar.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Todo lo que sueñas, se puede diseñar. FM 11 * VV 6 * PHP 5 * MySQL * Win 8.

Miembro

Habitual

  Karma         85

#3 Publicado: 11 Oct 2010 16:30



Gracias jcu por tu rápida respuesta.
No se si he entendido bien tu sugerencia. Lo que he hecho ha sido hacer el campo 23 como campo de cálculo y he establecido la siguiente formula:

If ( campo 20 = campo 2 and campo 21 = campo 3 and campo 22 = campo 4 ; campo 1 )

El problema es que funciona pero sólo para el registro actual, es decir, si los campos referidos coinciden en el registro que he creado y estoy rellenando, entonces en el campo 23 aparece el contenido del campo 1, pero la cuestión es que no funciona si los datos coincidentes se encuentran en campos de registros diferentes.

Seguro que me he perdido algo de tu explicación. ¿Puede referirse a que hay que establecer una "relación" con la condición que tu indicas?. La cuestión es que, perdona mi ignorancia, no se como establecer esa relación. La base que tengo creada tiene una única presentación con lo que solo hay una tabla. ¿Tendría que crear otra tabla con los campos 1, 2, 3 y 4, para establecer la relación entre tablas?.
Después de lo dicho seguro que parecerá que estoy un poco perdido. La verdad es que estoy muy perdido.

Gracias de nuevo.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
win vista Fm 11 proavanced

Administrador


  Karma               26354

#4 Publicado: 11 Oct 2010 17:19



Establece una relación de la tabla con ella misma utilizando los campos que quieres igualar
campo 20 = campo 2
AND
campo 21 = campo 3
And
campo 22 = campo 4

Luego en el if del campo 23 utilizas la relación
(If campo 20 = relación:::campo 2... ; campo 1;"")

Con esto está "buscando en toda la tabla.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Todo lo que sueñas, se puede diseñar. FM 11 * VV 6 * PHP 5 * MySQL * Win 8.

Miembro

Habitual

  Karma         85

#5 Publicado: 12 Oct 2010 17:40 - Editado por: Rogerflight



Después de mucho probar distintas combinaciones creo que la formula que empleo no es correcta.
He establecido una autorelación de mi única tabla de la forma que me indicas, creándose una Tabla 2 después de establecer la relación entre los distintos campos y el if del campo 23 lo pongo así :

If ( campo 20 = Tabla 2::campo 2 and campo 21 = Tabla 2::campo 3 and campo 22 = Tabla 2::campo 4 ; campo 1 )

Creo que el final no es correcto por lo que no funciona. En el campo 23 se incluye el valor del campo 1 pero del registro en el que estoy introducciendo los datos, y no el del registro en el que se encuentran los campos 2, 3 y 4 coincidentes con los campos 20, 21 y 22 de registro actual.
Siento volver a insistir. Gracias


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
win vista Fm 11 proavanced

Administrador


  Karma               26354

#6 Publicado: 12 Oct 2010 21:01



Para empezar, si te fijas, en lo que te escribí puse ;"") al final. Al if tienes que darle una opción altenativa si no se cumple la condición.

Por otra parte, si pones campo 1, por narices, si se cumple la condición pondrá el valor de campo 1, si quieres que ponga otro valor, tendrás que cambiar eso.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Todo lo que sueñas, se puede diseñar. FM 11 * VV 6 * PHP 5 * MySQL * Win 8.

Miembro

Habitual

  Karma         85

#7 Publicado: 15 Oct 2010 14:38 - Editado por: Rogerflight



Pues sigo haciendo algo mal.
Al especificar el cálculo del campo 23 lo hago a partir de "Tabla", seleccionando los campos 20, 21 y 22 desde "Tabla" y los campos 2,3 y 4 desde "Tabla 2" (que es la que me crea al realizar la autorelación). La fórmula así hecha sería la siguiente:

If ( campo 20 = Tabla 2::campo 2 and campo 21 = Tabla 2::campo 3 and campo 22 = Tabla 2::campo 4 ; campo 1 ; "0000" )

Si en los campos 20, 21 y 23 introduzco datos coincidentes con los campos 2, 3 y 4 de otro registro de la BD distinto de aquél en el que introduzco los datos, resulta que en campo 23 aparece 0000. Pero si no introduzco dato alguno en los campos 20, 21 y 22 o sólo lo hago en alguno de ellos y no en los tres, resulta que en campo 23 aparece el contenido del campo 1 (que es lo que quiero, es decir, la referencia del registro con los campos coincidentes), pero del registro actual, no de aquél en el que se encuentran los datos coincidentes con los introducidos en los campos 20, 21 y 22 del registro actual.

He probado con distintas combinaciones al hacer la autorelación: a partir de "Tabla 2" y seleccionando los campos desde Tabla 2 a Tabla y viceversa, pero sigue sin funcionar. Los campos 20, 21, 22, 23 los tengo en un grupo de pestañas y por si estuviera ahí el problema los he sacado de dicho grupo, pero no soluciona el problema.

Espero no estar incordiando demasiado. Gracias nuevamente.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
win vista Fm 11 proavanced

Administrador


  Karma               26354

#8 Publicado: 15 Oct 2010 15:59



El resultado que te sale es lógico, ya que estás poniedo como valor el del campo 1, si quieres que salga otro valor, a lo mejor tienes que poner Tabla 2::campo 1, no se me ocurre otra cosa.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Todo lo que sueñas, se puede diseñar. FM 11 * VV 6 * PHP 5 * MySQL * Win 8.

Miembro

Habitual

  Karma         85

#9 Publicado: 15 Oct 2010 17:27



He probado lo que dices pero tampoco funciona. Seguiré investigando y si encuentro la solución te cuento.

Gracias por tu interés y paciencia.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
win vista Fm 11 proavanced

Miembro

Constante

  Karma             1009

#10 Publicado: 16 Oct 2010 13:02



Hola

Una vez establecida la relacion tabla2 que sugiere jcu

campo 20 = campo 2
AND
campo 21 = campo 3
And
campo 22 = campo 4

no hace falta ningun if en el calculo de campo23

campo23=tabla2::campo1

Si se cumple la relacion carga el valor, y si no no carga nada, porque tabla2::campo1 no existe. Lo he probado, y aparentemente funciona.

saludos


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Desde Galicia FM6, WindowsXP, Ubuntu

Miembro

Habitual

  Karma         85

#11 Publicado: 16 Oct 2010 17:58 - Editado por: Rogerflight



Pues sigue sin resultar.

Aquí dejo un ejemplo siguiendo tu indicación. Puedes comprobar que el registro 001 tiene en los campos 20, 21 y 22 los datos de los campos 2, 3 y 4 coincidentes del registro 004, pero en el campo 23 no aparece nada: éste campo debería contener "004".

PRUEBA_ERROR.fp7Archivo adjunto: PRUEBA ERROR
 

Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
win vista Fm 11 proavanced

Miembro

Constante

  Karma             1009

#12 Publicado: 16 Oct 2010 19:05



Hola

has definido la relacion tabla2 como:


campo 20 = campo 2
AND
campo 21 = campo 3
And
campo 22 = campo 4
And
campo 23 = campo 1

debes quitar la ultima condicion, y dejarla como te decia jcu:


campo 20 = campo 2
AND
campo 21 = campo 3
And
campo 22 = campo 4

El campo 23 lo has definido como numerico sin mas, si no le introducimos la formula que deseamos que aplique no conseguiremos el resultado. Debes definir el campo 23 como calculado numerico :

tabla2::campo1

veras como te funciona.

saludos


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Desde Galicia FM6, WindowsXP, Ubuntu

Miembro

Habitual

  Karma         85

#13 Publicado: 17 Oct 2010 10:51



¡Funciona!

Se ha resistido pero finalmente lo he conseguido (bueno, lo habeis conseguido) a pesar de mi torpeza. Mil gracias jcu y poutija, sois unos auténticos MAESTROS.

Solo hay una cosa que me gustaría pulir, aunque después de lo conseguido bien podría quedar como está. Cuando me carga los datos en el campo 23 desde el campo 1 ( que recoge el número de registro que yo asigno) no me pone los ceros a la izquierda (por ejemplo si en campo 1 hay "0001", en campo 23 aparece "1").


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
win vista Fm 11 proavanced

Administrador


  Karma               26354

#14 Publicado: 17 Oct 2010 11:12



Pon que el campo sea de texto o aplica al campo el relleno por la izquierda con ceros.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
Todo lo que sueñas, se puede diseñar. FM 11 * VV 6 * PHP 5 * MySQL * Win 8.

Miembro

Habitual

  Karma         85

#15 Publicado: 17 Oct 2010 12:21



Solucionado
Gracias nuevamente jcu.


Si este mensaje te ha servido de ayuda dale tu voto Voto positivo, si quieres penalizarlo Voto positivo
win vista Fm 11 proavanced
Su respuesta

Estilo Negrillas  Estilo Italico  Estilo Subrayado  URL De La Imagen  URL De La Web  Preformatted Text  YouTube URL  Sin código BB
Emoticones
:) ;) :up: :down: :biglol: :confused :cool: :mad: :sad: :shame: :smirk: :tongue: ... Más  Emoticones desactivados
Color de texto
Texto en negro Texto en blanco Texto en gris Texto en rojo Texto en azul Texto en verde Texto en rojo oscuro Texto en cian Texto en azul oscuro Texto en púrpura Texto en amarillo Texto en rosa Texto en naranja Texto en verde oliva Texto en marrón



 » Usuario  » Contraseña 
Solo Usuarios Registrados Pueden Postiar Aqui.
 

Tópicos relacionados con Valor de campo en función de la coincidencia de otros campos

Cambiar el valor de casilla de verificacion en funcion de otros campos
Valor de campo dependiendo de otros dos campos.
Valor correlativo de un campo según otros campos
Función o guión para evitar poner valores en un campo que no están en otros campos definidos
Calcular un promedio de registros teniendo en cuenta el valor de otros campos


Conectados: Invitados - 8
Miembros - 0
En verde usuarios ZDDR

Realizado con miniBB © 2001-2021
Para Udias.com © 1996-2021
Hosting con Interdominios