- Este debate está vacío.
-
AutorEntradas
-
5 junio, 2012 a las 2:36 am #32060JMMParticipante
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]
5 junio, 2012 a las 2:59 am #36589Matías Nerón CapSuperadministradorHola 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 Cap8 junio, 2012 a las 11:55 pm #36591JMMParticipanteHola 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
9 junio, 2012 a las 12:05 am #36602Matías Nerón CapSuperadministradorHola 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
Cacho13 junio, 2012 a las 10:54 pm #36603JMMParticipanteHola 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
16 junio, 2012 a las 6:54 am #36606Franco BonafineMiembroHola 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_Orderpara ver si todo está correctamente definido. Con esa info, probablemente vamos a poder encontrar el problema.
Saludos
19 junio, 2012 a las 1:09 am #36619JMMParticipanteHola!
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_OrderSaludos!!
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]
28 junio, 2012 a las 1:18 am #36627JMMParticipanteRESUELTO
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
28 junio, 2012 a las 2:47 am #36645Federico CristinaSuperadministradorBuenas 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,
Federico29 junio, 2012 a las 10:44 pm #36646JMMParticipanteMuchas gracias por la información Federico!
Saludos!!JUAN
29 junio, 2012 a las 11:55 pm #36647JMMParticipanteUna 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
30 junio, 2012 a las 12:08 am #36652Federico CristinaSuperadministradorModificá 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,
Federico30 junio, 2012 a las 12:41 am #36653JMMParticipanteExcelente Federico, funciona a la perfección.
Muchísimas gracias por todo!
Saludos! -
AutorEntradas
- Debes estar registrado para responder a este debate.