Autor |
Mensaje |
Miembro
Ocasional
|
#1 Publicado: 11 Ago 2015 23:13
Buenas noches, ante todo gracias a quien tenga paciencia de leer esto! Tengo dos tablas (voy a resumirlas) Una "ALBARANES" con todos los campos necesarios y el que importa "Facturado" que debería poner SI o NO dependiendo de que en la tabla relacionada "ALBARANES_ARTICULOS el campo de varios registros "FACTURA_CLIENTE" este vacío. No hay forma. He leido de todo y no soy capaz... Resumen: Albarán Albaran_articulo factura_cliente 0123 DISCO FA100
0124 RATON FA101 0124 TECLADO "" (vacio)
0125 PANTALLA FA102 0125 PORTATIL FA102
En el abaran 0123 el campo "FACTURADO" debería poner SI ya que todos los artículos (que solo es uno) tienen escrito en el campo "Factura_Cliente" algo.
En el Albaran 0124 el campo "FACTURADO" debería ser NO ya que uno de los artículos de ese albaran su campo Factura_Cliente esta vacío.
El el tercer ejemplo el albaran 0125 en el campo "FACTURADO" también debería poner SI ya que los dos artículos que están relacionados tienen el campo "Factura_Cliente" relleno.
Para repasar, por si no me he explicado correctamente, quiero que el albaran me lo ponga como facturado solo en el caso de que todos los artículos que contiene tengan relleno el campo del numero de la factura del cliente, si todos o alguno de ellos tienen el campo factura_cliente vacío quiero que me diga que NO en facturado, y así avisarme de que no esta cerrado ese albarán y darme cuenta que me queda alguna articulo por facturar.
Muchas gracias, llevo desde hace 2 días leyendo y nada de nada, he probado con IF y mil conbinaciones. Yo entiendo (o entendía ) que en la tabla "ALBARAN" el campo "FACTURADO" debería ser Calculo con alguna tipo de formula que mirase si los relacionados cumplen el criterio de que si están vacíos todos o algunos ponga NO y si están llenos todos ponga SI. Pero mis conocimientos se acaban en rellenar esta parrafada!! Muchas gracias.
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Gracias por vuestra ayuda,
Ivan
YOSEMITE FILEMAKER 13
|
Moderador
Adicto
   
|
#2 Publicado: 12 Ago 2015 10:28
Prueba con un cálculo no almacenado, con resultado texto, con la siguiente fórmula:
Let( Lista=List(ALBARANES_ARTICULOS::factura_cliente);
If(ValueCount(Lista)=Count(ALBARANES_ARTICULOS::Al baran_articulo);"SI";"NO"))
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Windows 8 y Filemaker 11
|
Miembro
Asiduo
 
|
#3 Publicado: 12 Ago 2015 19:32
También puedes probar que el campo FACTURADO (Cálculo) contenga la siguiente sentencia
if(count(ALBARANES_ARTICULOS)≭count(FACTURA_CLIENT E);"NO";SI")
Un saludo!!!
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
|
Miembro
Ocasional
|
#4 Publicado: 12 Ago 2015 20:13
Sois uns bestias!!!! Dias llevaba con esto hasta decidir a pedir ayuda!!!! He de reconocer que he tardado varios minutos en entender los campos, y al final con el que he conseguido entender la formula ha sido con el de JotaEme. Y funciona, pero de maravilla. Gracias a los dos por contestarme tan rápido!! JuanCarlosCC mil gracias no he sido capaz de hacerlo así, pero igualmente sois unos genios para poder imaginaros lo que quería y darme soluciones. Ahora esto mismo tengo que llevarlo a los presupuestos, tal cual poder, pero ahí tengo que incluir mas variables (si el articulo esta aceptado) así que me pondré con la primera solución a ver si soy capaz de entenderla (desconozco para que sirve Let) y así decirle que si "Factura_cliente" esta lleno y también "producto_aceptado" entonces que diga si. Ver como lo hago para no volver a molestaros!!!!
Mil millones de gracias!!!
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
Gracias por vuestra ayuda,
Ivan
YOSEMITE FILEMAKER 13
|
Miembro
Asiduo
 
|
#5 Publicado: 12 Ago 2015 21:32
Genial!
Pero ahora me doy cuenta que en la fórmula me había dejado la tabla_relación, jajajaj. Imposible que te hubiera funcionado
Animo y que siga el proyecto avanzando.
Si este mensaje te ha servido de ayuda dale tu voto
, si quieres penalizarlo
|