Page 1 of 1

LLenar grid dinamicamente

Posted: Mon Jan 09, 2017 5:11 pm
by fardon
Buen día, tengo 2 forms, en form1 tengo un grid en el cual ingreso el código de los productos que quiero consultar si hay en existencia puede ser uno o los que el usuario desee consultar,

Image

Luego en el form2 el supervisor revisa esa solicitud y le deberia de cargar los datos automáticamente cuando abra el form2 por ejemplo, la cantidad por sucursal,

Image

que puedo hacer en este caso??? gracias de antemano,

Re: LLenar grid dinamicamente

Posted: Mon Jan 09, 2017 8:06 pm
by amosbatto
Si tienes un grid associado con la variable "grid1" y otro grid en la segundo DynaForm asociado con la variable "grid2".
En grid1, las IDs de los campos son "codigo", "descripcion", "cantidad", y "observaciones". En grid2, las IDs de los campos son ""codigo", "descripcion", "cantidad", "com01", "teg01", "sps01", "dan01" y "tal01"

Crea el siguiente trigger que es ejecutado entre los dos Dynaforms.
Code: Select all
if (isset(@=grid1) and is_array(@=grid1)) {
   @=grid2 = array();
   for ($i = 1; $i <= count(@=grid2); $i++) {
       @grid2[$i] = array(
           'codigo'    => row['codigo'],
           'descripcion' => row['descripcion'],
           'cantidad'    => row['cantidad']
       );    
   }
}   

Re: LLenar grid dinamicamente

Posted: Tue Jan 10, 2017 4:12 pm
by fardon
Hola amosbatto,

Gracias por tu pronta respuesta, pero no es lo que necesito te explico, el grid que tengo en el form1 es el mismo que tengo en el form2, en el form1 ingreso el codigo y me carga la descripcion luego ingreso la cantidad y las observaciones, despues en el form2 muestro lo que se lleno en el form1 y quiero que me cargue los demas datos COM-01, TEG-01 etc., desde mi BD apartir del codigo que se ingreso en el form1, osea la cantidad en existencia por sucursal apartir del codigo que se ingreso, el usuario puede ingresar N codigos de productos,

saludos,

Re: LLenar grid dinamicamente

Posted: Tue Jan 10, 2017 8:15 pm
by amosbatto
Entonces debes usar la misma variable para ambos grids y no necesitas un trigger.
No puedes tener N numero de campos en cada fila. Tienes que crear el numero maximo de campos en el grid que necesitas y solo llenar los campos que necesitas. Puedes usar JavaScript para ocultar o mostrar columnas en la grilla. Ver: http://wiki.processmaker.com/3.1/JavaSc ... hideColumn

Re: LLenar grid dinamicamente

Posted: Tue Jan 10, 2017 11:09 pm
by fardon
En el primer form no ocuparia un trigger ya que ingreso manualmente el codigo, la cantidad y las observaciones pero en el segundo form si ocuparia un trigger ya que ocuparia llenar los campos TEG-01, SPS-01 etc de acuerdo al codigo o los codigos que se ingreso en el form1 por ejemplo:

Image

Pero los datos que se mostrarian en COM-01, TEG-01 etc., los tendria que traer desde mi BD, de acuerdo al codigo e irlos agregando linea por linea en el grid,

Re: LLenar grid dinamicamente

Posted: Tue Jan 10, 2017 11:21 pm
by amosbatto
Entonces tienes que usar un trigger como este:
Code: Select all
if (isset(@=grid1) and is_array(@=grid1)) {
   @=grid2 = array();
   for ($i = 1; $i <= count(@=grid2); $i++) {
       if (@=grid1[$i]['codigo'] == "cod01") {
           @grid2[$i] = array(
              'codigo'     => @=grid1[$i]['codigo'],
              'descripcion' => @=grid1[$i]['descripcion'],
              'cantidad'    => @=grid1[$i]['cantidad'],
              'com01'     => 'XXXXX',
              'teg01'      => 'XXXXX'
           );
       }
       elseif (@=grid1[$i]['codigo'] == "cod02") { 
           @grid2[$i] = array(
              'codigo'     => @=grid1[$i]['codigo'],
              'descripcion' => @=grid1[$i]['descripcion'],
              'cantidad'    => @=grid1[$i]['cantidad'],
              'com01'     => 'YYYY',
              'teg01'      => 'YYYY'
           );
       }
   }
}

Re: LLenar grid dinamicamente

Posted: Tue Jan 10, 2017 11:27 pm
by fardon
amosbatto wrote:Entonces tienes que usar un trigger como este:
Code: Select all
if (isset(@=grid1) and is_array(@=grid1)) {
   @=grid2 = array();
   for ($i = 1; $i <= count(@=grid2); $i++) {
       @grid2[$i] = array(
           'codigo'    => row['codigo'],
           'descripcion' => row['descripcion'],
           'cantidad'    => row['cantidad'],
           'com01'     => 'XXXXX',
           'teg01'      => 'XXXXX'
       );   
   }
}

En el primer form no ocuparia un trigger ya que ingreso manualmente el codigo, la cantidad y las observaciones pero en el segundo form si ocuparia un trigger ya que ocuparia llenar los campos TEG-01, SPS-01 etc de acuerdo al codigo o los codigos que se ingreso en el form1 por ejemplo:

Image

Pero los datos que se mostrarian en COM-01, TEG-01 etc., los tendria que traer desde mi BD, de acuerdo al codigo que se ingreso en el form1 e irlos agregando linea por linea en el grid del form2,

Re: LLenar grid dinamicamente

Posted: Tue Jan 10, 2017 11:40 pm
by amosbatto
Entonces, sera algo así:
Code: Select all
$db = 'XXXXXXXXXXXXXXXXXXXXX'; //ID de tu database connection
if (isset(@=grid1) and is_array(@=grid1)) {
   @=grid2 = array();
   for ($i = 1; $i <= count(@=grid2); $i++) {
       $codigo = @=grid1[$i]['codigo'];
       $sql = "SELECT X, Y, Z FROM MITABLA WHERE CODIGO = '$codigo'";
       $result = executeQuery($sql, $db);
       if (!is_array($result) or count($result) == 0) {
           die("No existe el codigo '$codigo' en la base de datos");
       }; 
       @=grid2[$i] = array(
              'codigo'      => @=grid1[$i]['codigo'],
              'descripcion' => @=grid1[$i]['descripcion'],
              'cantidad'    => @=grid1[$i]['cantidad'],
              'com01'     => $result[1]['X'],
              'teg01'      => $result[1]['Y'],
       );
   }
}

Re: LLenar grid dinamicamente

Posted: Wed Jan 18, 2017 5:21 pm
by fardon
Muchas gracias, saludos

Re: LLenar grid dinamicamente

Posted: Fri Aug 09, 2019 9:07 am
by Ariel1982
Buenos días, tengo un caso similar que no logro resolver. Tengo que pasar los datos de una grilla en un formulario1 a una grilla idéntica en un formulario2, pero solo aquellos datos que cumplan con una determinada condición.
Para simplificar, supongamos que la grilla tiene los campos 'articulo', 'cantidad' y 'tipoArticulo'. Lo que necesito hacer es que la grilla 2 se complete solamente con los artículos que correspondan a determinado 'tipoArtículo'.
Estuve intentando armar un trigger antes del segundo dynaform pero aún no lo pude hacer funcionar (aclaro que mis conocimientos de programación son básicos).
Cualquier ayuda será muy bien recibida!
Gracias

Re: LLenar grid dinamicamente

Posted: Fri Aug 09, 2019 4:49 pm
by amosbatto
Ariel1982 wrote: Fri Aug 09, 2019 9:07 am Tengo que pasar los datos de una grilla en un formulario1 a una grilla idéntica en un formulario2, pero solo aquellos datos que cumplan con una determinada condición.
Para simplificar, supongamos que la grilla tiene los campos 'articulo', 'cantidad' y 'tipoArticulo'. Lo que necesito hacer es que la grilla 2 se complete solamente con los artículos que correspondan a determinado 'tipoArtículo'.
El trigger para ejecutar antes del Dynaform con el segundo grilla sería algo como este:
Code: Select all
@=grilla2 = array(); //crear una grilla vacia

if (is_array(@=grilla1)) {
   $rowNo = 1;
   foreach (@=grilla1 as $aRow) {
      if ($aRow['tipoArticulo'] == 'ropa') {
         @=grilla2[ $rowNo ] = array(
            'articulo' => $aRow['articulo'],
            'cantidad' => $aRow['cantidad'],
            'tipoArticulo' => $aRow['tipoArticulo']
         ); 
         $rowNo++;
      }
   }
}

Re: LLenar grid dinamicamente

Posted: Mon Aug 12, 2019 1:45 pm
by jcarames
Hola! Probé con este código pero yo no tuve resultados correctos. Ambas grillas ya las tengo creadas, y es pasar datos de una a otra mediante una cierta condición. Me parece que en el código falta la parte que le pasa la información a la lista destino, teniendo la lista "intermedia (grilla2)" llena. Es así? Gracias!

Re: LLenar grid dinamicamente

Posted: Mon Aug 12, 2019 3:51 pm
by jcarames
<t>Gracias por la respuesta amosbatto. Estuve haciendo pruebas con esa solución y no pude hacer que en la grilla destino estén los datos cargados. Cabe aclarar que la grilla de destino esta en un subproceso. Si bien me toma los datos desde la grilla origen, no popula la grilla destino. Alguna idea?</t>

Re: LLenar grid dinamicamente

Posted: Tue Aug 13, 2019 12:41 pm
by Ariel1982
amosbatto wrote: Fri Aug 09, 2019 4:49 pm
Ariel1982 wrote: Fri Aug 09, 2019 9:07 am Tengo que pasar los datos de una grilla en un formulario1 a una grilla idéntica en un formulario2, pero solo aquellos datos que cumplan con una determinada condición.
Para simplificar, supongamos que la grilla tiene los campos 'articulo', 'cantidad' y 'tipoArticulo'. Lo que necesito hacer es que la grilla 2 se complete solamente con los artículos que correspondan a determinado 'tipoArtículo'.
El trigger para ejecutar antes del Dynaform con el segundo grilla sería algo como este:
Code: Select all
@=grilla2 = array(); //crear una grilla vacia

if (is_array(@=grilla1)) {
   $rowNo = 1;
   foreach (@=grilla1 as $aRow) {
      if ($aRow['tipoArticulo'] == 'ropa') {
         @=grilla2[ $rowNo ] = array(
            'articulo' => $aRow['articulo'],
            'cantidad' => $aRow['cantidad'],
            'tipoArticulo' => $aRow['tipoArticulo']
         ); 
         $rowNo++;
      }
   }
}
Muchas gracias Amos por la ayuda, funcionó perfecto.

Re: LLenar grid dinamicamente

Posted: Tue Aug 13, 2019 7:49 pm
by amosbatto
jcarames wrote: Mon Aug 12, 2019 3:51 pm Gracias por la respuesta amosbatto. Estuve haciendo pruebas con esa solución y no pude hacer que en la grilla destino estén los datos cargados. Cabe aclarar que la grilla de destino esta en un subproceso. Si bien me toma los datos desde la grilla origen, no popula la grilla destino. Alguna idea?
Tienes que pasar la variable de la grilla al subproceso. Si tienes el modo Debug Mode activado, ¿puedes ver la variable de la grilla en el subproceso?
¿La variable es deletreada exactamente la misma como la variable asociada con la grilla en el Dynaform?
¿Los IDs de los campos en la segunda grilla son los mismos como en la primera grilla?

Re: LLenar grid dinamicamente

Posted: Tue Oct 08, 2019 2:03 pm
by jcarames
Gracias!!! Seguí el debbug y pude hacerlo