Hilo iniciado por Javier Ríos el 31 de agosto de 2016
-
AutorEntradas
-
agosto 31, 2016 a las 1:10 pm #9587
Hola,
¿Existe alguna forma de filtrar la query original de un formulario para que filtre por varios campos que no pueden estar vacíos?. Es decir, sobre el formulario InventOnhandItem estoy tratando de anular el método executequery del Datasource InventSum para que me muestre todos aquellos registros que tengan algun valor en alguno de los campos PhysicalInvent, ReservPhysical, Picked, AvailPhysical, OrderedSum. Y en caso de que algún registro tenga todos esos campos sin valor de forma simultánea, no mostrar dicho registro en el formulario.
Entiendo que debo filtrar para que si todos los campos mencionados anteriormente sean distintos de vacío, pero desconozco si se pueden anidar SysQuery y cómo hacerlo. O en caso de tener que utilizar Addrange, cómo anidarlos también.
Un saludo
agosto 31, 2016 a las 4:29 pm #9588Deberias utilizar una query Or revisa el siguiente enlace
http://www.axaptapedia.com/Expressions_in_query_ranges
Entiendo que en la consulta que te crees deberia ser algo como
PhysicalInvent != null or ReservPhysical, != null ……….asi te tomaria todos los registros que tienen algun valor rellenado
septiembre 1, 2016 a las 7:30 am #9589Sería algo así, pero No se trataría de un OR, sino de un AND. Aunque viendo tu respuesta, creo que puede funcionar.
Por otro lado, he creado un Display para mostrar el valor de un campo de la InventTable en el Grid pasándole como parámetro el valor de los campos ItemId e InventBatchId. He creado el método Display bajo el Datasource InventBatch, creado los campos en el Grid y estableciendo el valor Datamethod al nombre del método, y el valor Datasource a InventBatch. Cuando ejecuto el formulario, sólo me muestra el valor en el campo Display sobre el primer registro del formulario. Y cuando cambio de registro, vuelve a ejecutar el método Display para ese registro seleccionado, pero mostrándomelo también en el primer registro. ¿Porqué puede ser? ¿qué hago mal?.
septiembre 1, 2016 a las 8:56 am #9590Si tu metodo esta en el datasource le has tenido que pasar el datasource también por parametros, lo has hecho?
https://msdn.microsoft.com/en-us/library/aa595058.aspx
Mirate si quieres el formulario invnetTrans en su dataSource inventTrans, mira el discAmount
septiembre 1, 2016 a las 6:26 pm #9591Sí le he pasado el Datasource por parámetro, pero el Display me pinta siempre el valor obtenido para el primer registro, tambien sobre el resto de registros del formulario (es decir, todos los registros muestran el mismo valor en el campo Display, y no debería ser así). Además, al abrir el formulario no muestra ningún valor en el Display. Es al pasar el puntero del raton sobre cada registro cuando va pintándolos. Eso sí, con valores erróneos correspondientes al primer registro.
septiembre 1, 2016 a las 6:48 pm #9592Le has asignado el dataSource correcto a
septiembre 1, 2016 a las 8:23 pm #9593El método es el siguiente:
Display Days Maduracion(InventBatch _InventBatch)
{
variable = InventBatch::ObtenerMaduracion(_InventBatch.itemid);return variable;
}El datasource es el InventBatch, y el método está en el nodo Methods del datasource InventBatch.
La variable “variable” está declarada en el ClassDeclaration del formulario.
El control agregado al Grid, tiene configurado el DataMethod a Maduracion, y el datasource a InventBatch.
El método ObtenerMaduracion, es un metodo estático creado en la tabla InventBatch que consulta a la tabla InventTable y obtiene los días que tarda en madurar un producto parándole por parámetro el ItemId (los días de maduración están introducidos a mano en un campo creado en la InventTable).
Por lo visto, el problema está en lo que muestra realmente el formulario InventOnHandItem… Se trata de agrupaciones de campos, y por lo tanto el método Display no obtiene los datos correctamente cuando se utilizan dimensiones. He visto diversos artículos sobre el tema, pero creo que debido a las versiones que utilizan, no consigo adaptarlos a mi propósito. ¿Estoy haciendo algo mal?. ¿Alguna forma de hacerlo que funcione actualmente?. Tengo la versión 2012 R3 CU10.
septiembre 2, 2016 a las 10:37 am #9594Aquí está la solución al Display sobre el formulario InventOnHandItem. Tanto en el propio artículo, como a través de los métodos propuestos en los comentarios de Nickneem y Martin Walker. Los tres métodos funcionan:
http://daxmusings.codecrib.com/2011/10/forum-advanced-display-method-querying.html
Respecto a la query mediante la cual pueda anidar rangos mediante AND, aún estoy intentando obtener una solución…
septiembre 12, 2016 a las 6:56 pm #9595Prueba a decirle lo siguiente: solo pon el rango si campo INVETSUM.CLOSED = NO, entonces tiene valores en esos campos y solo te saldrán los registros que tu quieres.
-
AutorEntradas
- Debes estar registrado para responder a este debate.

