6 Replies Latest reply on Apr 17, 2015 10:35 AM by siplus

    Exportar registros de una tabla a otra en una misma aplicación

    juanvicanamas

      Buenos días,

       

      ¿ Compañero(a)s sabrían ustedes decirme de que forma podría exportar registros de una tabla a otra situada en la misma aplicación, sin tener que utilizar ni ventanas, ni presentaciones, ni a través de un fichero Excel ?

       

      Mi versión de FM es FM 13 y quiero hacer este proceso por mediación de un guión.

       

      Gracias, un saludo muy fuerte.

        • 1. Re: Exportar registros de una tabla a otra en una misma aplicación
          siplus

          If I understood well (the only Ventanas I know are from David) you could

           

          Freeze window

          Go to a layout where your data is, but only the fields you need

          { do a search if not arrived via a GTRR }

          Copy All records

          come back to original layout

          paste into a global

          work on the global, seen as a list: for every element of the list - a loop from 1 to ValueCount(list) - , you can create a record in a table or reformat it and add it with a ¶ to another (endresult) global, etc.

           

          does that make sense ?

          • 2. Re: Exportar registros de una tabla a otra en una misma aplicación
            juanvicanamas

            How do you copy and paste the records ?

             

            I am using scripting tools to manage the process.

             

            I would like to use another way that I am using in this moment (Windows, layouts, Excel files).

             

            I want to export 2 fields from a table (Concepts::_kp_CodigoID and Concepts::Concept) to another table (Visible Concepts). Both tables are in the same application.

            • 3. Re: Exportar registros de una tabla a otra en una misma aplicación
              siplus

              Create a new layout based on table Concepts, call it concepts_export, put only these 2 fields on it:

              Concepts::_kp_CodigoID and Concepts::Concept


              create a new global var in Visible Concepts, call it gImportFromConcepts, of type text

              put it on the Visible concepts layout, outside of the visible area


              Script (metacode):

               

              Go to layout(concepts_export)

              Select all records

              Copy all records

              go to layout (visible concepts)

              paste(select, gImportConcepts)

              set variable ($limit ;ValueCount(gImportConcepts) )

              set variable ($i ; 0 )

              loop

                exit loop if let($i = $i + 1; $i > $limit)

                new record/request

                set Variable ($element; Substitute(getValue(gImportConcepts;$i);CHAR(9);CHAR(13)))

                set Field (visible concepts::kp_CodigoID; getValue($element;1))

                set Field (visible concepts::Concept; getValue($element;2))

              end loop



              pay attention that this might create duplicates at the kp level.

              • 4. Re: Exportar registros de una tabla a otra en una misma aplicación
                juanvicanamas

                I made my script like this :

                 

                Establecer variable [ $$Titular; Valor:Asientos::_kf_Titular ]

                Establecer variable [ $$SubgrupoGasto; Valor:Asientos::_kf_SubgrupoGasto ]

                Establecer captura de errores [ Activo ]

                Seleccionar ventana [ Nombre: "Conceptos"; Archivo actual ]

                Ir a la presentación [ “Conceptos” (CONCEPTOS) ]

                Mostrar todos los registros

                Restringir conjunto encontrado [ Peticiones de búsqueda especificadas: Buscar registros ; Criterios: CONCEPTOS::

                _kf_GrupoGasto : “2” Y CONCEPTOS::_kf_Titular : “$$Titular” Y CONCEPTOS::_kf_SubgrupoGasto : “$$SubgrupoGasto” ]

                [ Restaurar ]

                Exportar registros [ Nombre del archivo: “file:Conceptos visibles.xlsx” ; Usar nombres de campo como nombres de columna ;

                Juego de caracteres: “Unicode (UTF-16)” ; Orden de los campos: CONCEPTOS::__kp_CodigoConcepto

                CONCEPTOS::Concepto ]

                [ Sin diálogo; Formatear mediante presentación actual ]

                Ir a la presentación [ “Conceptos visibles” (ConceptosVisibles) ]

                Mostrar todos los registros

                Eliminar todos los registros

                [ Sin diálogo ]

                Importar registros [ "Conceptos visibles.xlsx"; Hoja de cálculo: "Sheet1" ; Destino: “ConceptosVisibles” ; Método: Añadir; Juego

                de caracteres: “Mac Roman” ; Asignación de campos: Importación del campo de origen 1 en ConceptosVisibles::

                __kp_CodigoConcepto

                Importación del campo de origen 2 en ConceptosVisibles::Concepto ]

                [ Sin diálogo; Los datos contienen nombres de columna ]

                Establecer captura de errores [ Inactivo ]

                Seleccionar ventana [ Nombre: "Introducción de asientos"; Archivo actual ]

                 

                Actually I am not happy of my script despite the fact that my script must be faster than your last proposition.

                • 5. Re: Exportar registros de una tabla a otra en una misma aplicación
                  erolst

                  While “you cannot import a table into itself” (UI quote), there's no problem importing directly from one table of a file into another table of the same file, without needing an intermediate format/file.

                   

                  So:

                   

                  Go to Layout [ tableA ( exportTO ) ]

                  # find whatever records you want to import field values from

                  Go to Layout [ ImportLayoutOfTableB ( anyLayoutBasedOnATableBTO ) ]

                  Import [ source: exportTO ; destination: <TO of ImportLayoutOfTableB> ; match the two desired tableA fields to the two designated tableB fields ]

                   

                  which will import the current found set of exportTO (in this window) of tableA into tableB.

                  • 6. Re: Exportar registros de una tabla a otra en una misma aplicación
                    siplus

                    juanvicanamas wrote:

                     

                    Actually I am not happy of my script despite the fact that my script must be faster than your last proposition.

                     

                     

                    Oh well if you get me started on speed, then I'm all for it !

                     

                    Try this:

                     

                    (I did not want to load too much data to the discussion list, so unfortunately the 10'000 record generator has to be run first, and it takes a bit, but then..)