Agregar un campo de tipo combo a una ventana

Inicio Foros Foro principal Desarrolladores Agregar un campo de tipo combo a una ventana

  • Este debate está vacío.
Viendo 13 entradas - de la 1 a la 13 (de un total de 13)
  • Autor
    Entradas
  • #32060
    JMM
    Participante

    Hola,
    Estoy intentando agregar a la Orden de compra del proveedor un nuevo campo combobox, que indicaría el tipo de esa orden de compra (en nuestra organizacion hay distintos tipos de orden de compra). El contenido del combo estaría en otra tabla, que llamaremos “c_tipo_oc” que indica el tipo de orden de compra.

    1. Creo la tabla “c_tipo_oc” en postgre (con los campos: c_tipo_oc_id (integer),descripcion).
    2. Agrego desde postgre en la tabla “c_order” el campo c_tipo_oc_id (integer) y la referencia a la tabla “c_tipo_oc”.
    3. Creo la tabla de tipos en libertya: creo una nueva tabla e importo los campos desde la base de datos (desde la tabla c_tipo_oc)
    4. En libertya, abro la tabla c_order y presiono “importar campos”, con lo cual identifica la columna creada en el paso 2, le asigno la propiedad “TableDir”. Presiono el boton “Sincronizar base de datos”, a lo que me arroja un error que adjunto en la imagen. Igualmente continuo…
    5. En la ventana de Purchase Order, pestaña Order Header, presiono “importar campos”, con lo que identifica el campo creado en el punto anterior, lo asigno para que sea visible en la pestaña.

    Cuando abro la ventana de pedido de proveedor, el campo se ve pero no como un combo, sino como un textbox deshabilitado (imagen 2). Estuve leyendo en el foro los temas relacionados pero no se especifica bien como solucionarlo. Me queda la duda también de como sabrá libertya qué columna de c_tipo_oc deberá mostrar en el listado del combo (ya que si bien c_tipo_oc_id es el value, el campo a mostrar en descripción no lo especifiqué e ningún lado)

    Puede ser que esté omitiendo algún paso o esté haciendo algo de más?

    Desde ya muchísimas gracias!!!

    Saludos!

    [attachment=259]Dibujo2.JPG[/attachment]

    [attachment=260]Dibujo.JPG[/attachment]

    #36589
    Matías Nerón Cap
    Superadministrador

    Hola Juan,

    La opción Sincronizar Base de Datos no deberías utilizarla, en este caso no es necesario. De todas maneras, el error que te tira es un error de tipo de datos, una de las columnas la tenés como integer y la otra como numeric, verificá eso.
    El problema que tenés seguramente es lo que indicás, el combo no sabe qué columna de la tabla c_tipo_oc tiene que mostrar. Esto lo debes realizar en la tabla nueva, tenés que ir a los metadatos de la tabla y agregar los campos de visualización como “Identificador” y el nro de secuencia (1,2,…) que es el orden del campo dentro de la descripción del registro (lo que se muestra en el combo). Cuando pasa esto, fijate en la consola los errores que te tira, posiblemente tengas uno con una descripción “No identifiers found” o algo así.

    Saludos
    Matías Cap

    #36591
    JMM
    Participante

    Hola Cacho buen día,
    Muchas gracias por tu respuesta.
    En la tabla coloqué como identificador la columna descripción, secuencia 1… pero sigue todo igual.
    Que puede ser? Sino me podrás explicar cómo es la secuencia de pasos para crear el combo? Tal vez me estoy salteando algo..
    Saludos y muchas gracias!

    Juan

    #36602
    Matías Nerón Cap
    Superadministrador

    Hola Juan,

    La secuencia de pasos es:
    1) Crear columna en base de datos.
    2) Entrar a Libertya como System Administrator e Importar la Tabla correndiente.
    3) Ir a la columna y definirle el tipo de dato correspondiente para combo los cuales son TableDir o Tabla.
    – TableDir: La referencia a la tabla donde apunta está dada por el nombre de la columna ya que busca la tabla sacandole el sufijo _ID. Si una columna se llama C_Invoice_ID, la tabla que buscará para mostrarte la información será C_Invoice. En la tabla C_Invoice debe existir al menos una columna marcada como Identificador.
    – Tabla: La tabla la busca en la referencia creada en la cual se define la tabla, el campo clave del combo (lo que va en la columna de referencia) y el campo a mostrar.
    4) Ir a la ventana correspondiente de esa tabla, seleccionar la pestaña correspondiente e importar campos.
    5) Agregar el campo a la secuencia de campos a desplegar en la ventana.

    Esos serían los pasos básicos.
    Saludos
    Cacho

    #36603
    JMM
    Participante

    Hola muchas gracias!
    Ahora puedo ver un combo, pero me lo muestra vacío (a pesar de que en la tabla tengo 3 registros). Es raro porque verifiqué sus propiedades y parece estar todo bien.
    ¿que podría estar pasando??

    muchas gracias!

    Saludos!

    Juan

    #36606

    Hola Juan, como estás?

    Probablemente al abrir la ventana de Orden de Compra esté tirando un error internamente que nos puede ayudar a determinar por qué no se muestran los datos del combo. Luego de entrar en esa ventana, andá al menú Herramientas -> Preferencias -> Errores y adjuntá’el archivo de log.

    Por otra parte, sería bueno ver una captura de pantalla de:
    – Definición de la tabla C_Tipo_OC, tanto del encabezado como de las columnas, y
    – Definición de la columna C_Tipo_OC_ID en la tabla C_Order

    para ver si todo está correctamente definido. Con esa info, probablemente vamos a poder encontrar el problema.

    Saludos

    #36619
    JMM
    Participante

    Hola!
    Efectivamente, me arroja un error: “column c_tipo_oc.isactive does not exist”
    Entre al log y estuve viendo que trata de recuperar campos que yo nunca definí, como “isactive”.
    Adjunto el archivo de log completo.
    ¿Tendría que agregar esos campos a la tabla?
    Adjunto también capturas de pantalla de
    – Definición de la tabla C_Tipo_OC, encabezado y columnas
    – Definición de la columna C_Tipo_OC_ID en la tabla C_Order

    Saludos!!

    Juan

    Archivo de log:


    ===========> MLookup.run: C_Tipo_Oc.C_Tipo_Oc_ID: Loader – SELECT C_Tipo_Oc.C_Tipo_Oc_ID,NULL,C_Tipo_Oc.Descripcion,C_Tipo_Oc.IsActive FROM C_Tipo_Oc WHERE C_Tipo_Oc.AD_Client_ID IN(0,1010016) AND C_Tipo_Oc.AD_Org_ID IN(0,1010053,1010071,1010072) ORDER BY 3 [289]
    org.postgresql.util.PSQLException: ERROR: column c_tipo_oc.isactive does not exist
    Position: 58; State=42703; ErrorCode=0
    at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:2102)
    at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1835)
    at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:257)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:500)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:388)
    at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:273)
    at sun.reflect.GeneratedMethodAccessor6.invoke(Unknown Source)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:597)
    at org.postgresql.ds.jdbc23.AbstractJdbc23PooledConnection$StatementHandler.invoke(AbstractJdbc23PooledConnection.java:455)
    at $Proxy1.executeQuery(Unknown Source)
    at org.openXpertya.util.CPreparedStatement.executeQuery(CPreparedStatement.java:205)
    at org.openXpertya.model.MLookup$MLoader.run(MLookup.java:945)

    [attachment=265]c_order.jpg[/attachment]

    [attachment=266]encabezadoTipoOC.JPG.jpg[/attachment]

    [attachment=267]col1.jpg[/attachment]

    [attachment=268]col2.jpg[/attachment]

    #36627
    JMM
    Participante

    RESUELTO
    El tema está en que hay que tener en la tabla destino los campos ad_client_id (compañía), ad_org_id (organización), y el campo isactive con el valor ‘Y’. Los dos primeros se pueden setear en 0 para que aparezca siempre, independientemente de la compañía u organización.

    Espero les sea útil.

    Saludos!!

    Juan

    #36645
    Federico Cristina
    Superadministrador

    Buenas Juan,

    Disculpá la demora en la respuesta. Afortunadamente ya pudiste resolverlo. Te completo la información al respecto. En LY toda tabla “bien formada” debe contener los siguientes campos obligatorios (indicados como tales en el query de creación de la tabla del ejemplo:

    Code:
    CREATE TABLE m_juguetes
    (
    — Campos Obligatorios
    m_juguetes_id integer NOT NULL,
    ad_client_id integer NOT NULL,
    ad_org_id integer NOT NULL,
    isactive character(1) NOT NULL DEFAULT ‘Y’::bpchar,
    created timestamp without time zone NOT NULL DEFAULT (‘now’::text)::timestamp(6) WITH time zone,
    createdby integer NOT NULL,
    updated timestamp without time zone NOT NULL DEFAULT (‘now’::text)::timestamp(6) WITH time zone,
    updatedby integer NOT NULL,
    — Campos Opcionales
    name character varying(255),
    description character varying(255),
    — Clave Primaria
    CONSTRAINT m_juguetes_key PRIMARY KEY (m_juguetes_id),
    — Referencias
    CONSTRAINT adorg_mjuguetes FOREIGN KEY (ad_org_id)
    REFERENCES ad_org (ad_org_id) MATCH SIMPLE
    ON UPDATE NO ACTION ON DELETE NO ACTION,
    CONSTRAINT adclient_mjuguetes FOREIGN KEY (ad_client_id)
    REFERENCES ad_client (ad_client_id) MATCH SIMPLE
    ON UPDATE NO ACTION ON DELETE NO ACTION
    )

    La clave primaria debe respetar el formato nombreDeTabla_ID, y obviamente tener definida la constraint correspondienet. Las FK pueden o no estar definidas (no es obligatorio).

    Saludos,
    Federico

    #36646
    JMM
    Participante

    Muchas gracias por la información Federico!
    Saludos!!

    JUAN

    #36647
    JMM
    Participante

    Una consulta más. Cómo hago para que en la ventana, en la etiqueta del combo me aparezca algo como “Tipo de orden” en lugar de “C_Tipo_Oc_ID”?? Ya cambié el nombre del campo en la definición de la ventana pero parece no tomarlo.
    Saludos y muchas gracias!

    Juan

    #36652
    Federico Cristina
    Superadministrador

    Modificá la traduccion del campo en Ventana, Pestaña, Campo. Es una subpestaña (si no la ves, tenes que activar la opción Mostrar Pestañas de Traduccion en Herramientas -> Preferencias y reabrir la ventana).

    Saludos,
    Federico

    #36653
    JMM
    Participante

    Excelente Federico, funciona a la perfección.
    Muchísimas gracias por todo!
    Saludos!

Viendo 13 entradas - de la 1 a la 13 (de un total de 13)
  • Debes estar registrado para responder a este debate.