GrialTextStorage

De GrialWIKI

(Diferencias entre revisiones)
(Mostrar los Datos en Pantalla - Function GetText())
(Traer Datos (preparar la Transacción))
 
(3 ediciones intermedias no se muestran.)
Línea 20: Línea 20:
En la llamada se indica la tabla TRONCAL y el ID del registro al cual se han de asociar los textos.  
En la llamada se indica la tabla TRONCAL y el ID del registro al cual se han de asociar los textos.  
-
Con esta información el GrialTextStorage prepara un query de consulta sobre la tabla interna (SYS_FUNC_30) donde se encuentra la información de todos los textos asociados a la tabla/ID indicados.
+
Con esta información el GrialTextStorage prepara un query de consulta sobre la tabla interna (SYS_FUNC_32) donde se encuentra la información de todos los textos asociados a la tabla/ID indicados.
Por ejemplo, si los textos hubieran de asociarse a un registro de la SYS_FUNC_20, la llamada sería:
Por ejemplo, si los textos hubieran de asociarse a un registro de la SYS_FUNC_20, la llamada sería:
Línea 50: Línea 50:
=== 1: Tomar los datos desde la pantalla ===
=== 1: Tomar los datos desde la pantalla ===
-
En el momento que el usuario acepta la transacción se deben tomar los datos desde los controles en pantalla que muestran los textos y actualizar los recordsets internos del GrialTextStorage.  Para esto se utiliza la función '''SetText''.
+
En el momento que el usuario acepta la transacción se deben tomar los datos desde los controles en pantalla que muestran los textos y actualizar los recordsets internos del GrialTextStorage.  Para esto se utiliza la función '''SetText'''.
-
Siguiendo el ejemplo anterior, en el momento de tomar los datos de pantalla, tomaremos lo ingresado o modificado por el usuario para el 'comentario principal' y para las 'notas al pie' y actualizamos los recordsets del GrialTextStorage:   
+
Siguiendo el ejemplo anterior, en el momento de tomar los datos de pantalla, tomaremos lo ingresado o modificado por el usuario para el ''comentario principal'' y para las ''notas al pie'' y actualizamos los recordsets internos del GrialTextStorage:   
 +
 
 +
<code>
 +
Private Sub TomarDatosDePantalla()
 +
 
 +
UpdateField...
 +
UpdateField...
  GrialTextStorage.SetText("PPAL", PrincipalTxt.Text)
  GrialTextStorage.SetText("PPAL", PrincipalTxt.Text)
  GrialTextStorage.SetText("NOTAS", NotasTxt.Text)
  GrialTextStorage.SetText("NOTAS", NotasTxt.Text)
-
Esta llamada actualizará (si se modificaron los textos) los recordsets internos del GrialTextStorage, para poder luego enviar las modificaciones dentro de la transacción.
+
End Sub
-
+
</code>
 +
 
 +
Estas llamadas actualizarán (si se modificaron los textos) los recordsets internos del GrialTextStorage, para poder luego enviar las modificaciones dentro de la transacción principal.
 +
 
=== 2: Incorporar en la Transacción ===
=== 2: Incorporar en la Transacción ===
-
Luego de hacer '''SetText''', y en el momento de armar la transacción, se debe llamar a: ''GrialTextStorage.AppendToTransaction'', para incorporar a la transacción, como un detalle de la cabecera, todos los textos asociados.
+
Luego de hacer '''SetText''', y en el momento de armar la transacción, se debe llamar a: '''GrialTextStorage.AppendToTransaction''', para incorporar a la transacción, como un detalle de la cabecera, todos los textos asociados.
 +
 
 +
Ejemplo:
-
<code>
 
  Txn.Add SysFunc20grq.Rst, “Name=SF20:ID_SYSFUNC20”
  Txn.Add SysFunc20grq.Rst, “Name=SF20:ID_SYSFUNC20”
  Txn.Add SysFunc21grq.Rst, “ID_SYSFUNC21;RELA_SYSFUNC20”
  Txn.Add SysFunc21grq.Rst, “ID_SYSFUNC21;RELA_SYSFUNC20”
  '''GrialTextStorage.AppendToTransaction Txn, "SF20"'''
  '''GrialTextStorage.AppendToTransaction Txn, "SF20"'''
-
</code>
+
...
 +
GrialCont.Apply Txn
Mediante esta llamada el GrialTextStorage incorpora a la transacción registros para las tablas internas (SYS_FUNC_32 y 33) con los cambios que haya realizado el usuario en el texto.  
Mediante esta llamada el GrialTextStorage incorpora a la transacción registros para las tablas internas (SYS_FUNC_32 y 33) con los cambios que haya realizado el usuario en el texto.  
-
'''El parámetro “SF20” es el NOMBRE DEL ITEM CABECERA en la transacción principal, que contiene el registro al cual se asocian los textos''.  
+
'''El parámetro “SF20” es el NOMBRE DEL ITEM CABECERA en la transacción principal, que contiene el registro al cual se asocian los textos'''.  
-
El item cabecera debe ser el mismo asociado en la llamada a "SetFilters"
+
El item cabecera referido debe ser el que contiene el registro troncal indicado en la llamada a "SetFilters"
Internamente,'''AppendToTransaction''' agrega a la transacción la grabación de las tablas internas SYS_FUNC_32 y 33 que contienen los textos asociados.  
Internamente,'''AppendToTransaction''' agrega a la transacción la grabación de las tablas internas SYS_FUNC_32 y 33 que contienen los textos asociados.  
Línea 78: Línea 89:
<code>
<code>
   GrialTextStorage.AppendToTransaction Txn, "SF20" ...
   GrialTextStorage.AppendToTransaction Txn, "SF20" ...
-
   'Agrega internamente...
+
   ' Agrega internamente...
-
   '=> Txn.AddItem SYSFUNC32Grq.Rst, “Header=SF20:ID_SYSFUNC32,RELA_TRONCAL”
+
   ' => Txn.Add SYSFUNC32Grq.Rst, “Header=SF20:ID_SYSFUNC32,RELA_TRONCAL”
-
   '=> Txn.AddItem SYSFUNC33Grq.Rst, “;RELA_SYSFUNC32”
+
   ' => Txn.Add SYSFUNC33Grq.Rst, “;RELA_SYSFUNC32”
</code>
</code>

última version al 15:41 26 oct 2012

Introducción al Framework Grial

Índice


El GrialTextStorage permite almacenar textos largos asociados con cualquier registro de cualquier tabla troncal del sistema.

Contenido

Para agregarlo en su proyecto

  • Incluya el GrialTextStorage dentro de los componentes del Proyecto.
  • Agregue un GrialTextStorage en el formulario, el control es invisible durante la ejecucion.
  • Renombre el control de GrialTextStorage1 a GrialTextStorage

Forma de Uso

Traer Datos (preparar la Transacción)

En el momento de preparar la transacción llamar a SetFilters para preparar la carga de los textos asociados:

GrialTextStorage.SetFilters "[tabla troncal]", [ID tabla troncal]

En la llamada se indica la tabla TRONCAL y el ID del registro al cual se han de asociar los textos. Con esta información el GrialTextStorage prepara un query de consulta sobre la tabla interna (SYS_FUNC_32) donde se encuentra la información de todos los textos asociados a la tabla/ID indicados.

Por ejemplo, si los textos hubieran de asociarse a un registro de la SYS_FUNC_20, la llamada sería:

SysFunc20grq.Init "Select * From sys_func_20 where id_sysfunc20=" & IDSysFunc20
SysFunc21grq.Init ...
SysFunc21_scb.ExtraFilter...
GrialTextStorage.SetFilters "SYS_FUNC_20", IDSysFunc20

A continuación ha de incluirse el GrialTextStorage en la carga de datos de la transacción, junto con los datos troncales de la transacción, por ejemplo:

'Traigo los datos del documento 
GrialCont.LoadData SysFunc20grq, SysFunc21grq, SysFunc21_scb, GrialTextStorage

Mostrar los Datos en Pantalla - Function GetText()

La función GetText permite recuperar un texto asociado al registro troncal, para poder colocarlo por ejemplo en un textbox y que el usuario pueda editarlo.

Un registro troncal puede tener asociados uno o más textos, para diferenciar los diferentes textos asociados se usa un código arbitrario. Por ejemplo, si se necesita asociar a un registro varios textos, como ser un 'comentario principal' y 'notas al pie' se puede hacer:

 'Pongo los textos en pantalla
 PrincipalTxt.Text = GrialTextStorage.GetText("PPAL", GrialCont)
 NotasTxt.Text = GrialTextStorage.GetText("NOTAS", GrialCont)

El segundo parámetro, GrialCont debe ser el GrialCont utilizado para la carga de los datos de cabecera. El contenido de los textos asociados, recién se carga desde la BD en la primer llamada a GetText. Se utiliza el GrialCont para realizar esa carga (mediante GrialCont.LoadData).

Al Aceptar la transacción - BottomButton_Click ACEPTAR

1: Tomar los datos desde la pantalla

En el momento que el usuario acepta la transacción se deben tomar los datos desde los controles en pantalla que muestran los textos y actualizar los recordsets internos del GrialTextStorage. Para esto se utiliza la función SetText.

Siguiendo el ejemplo anterior, en el momento de tomar los datos de pantalla, tomaremos lo ingresado o modificado por el usuario para el comentario principal y para las notas al pie y actualizamos los recordsets internos del GrialTextStorage:

Private Sub TomarDatosDePantalla()
 
 UpdateField...
 UpdateField...
 
 GrialTextStorage.SetText("PPAL", PrincipalTxt.Text)
 GrialTextStorage.SetText("NOTAS", NotasTxt.Text)
 
End Sub

Estas llamadas actualizarán (si se modificaron los textos) los recordsets internos del GrialTextStorage, para poder luego enviar las modificaciones dentro de la transacción principal.

2: Incorporar en la Transacción

Luego de hacer SetText, y en el momento de armar la transacción, se debe llamar a: GrialTextStorage.AppendToTransaction, para incorporar a la transacción, como un detalle de la cabecera, todos los textos asociados.

Ejemplo:

Txn.Add SysFunc20grq.Rst, “Name=SF20:ID_SYSFUNC20”
Txn.Add SysFunc21grq.Rst, “ID_SYSFUNC21;RELA_SYSFUNC20”
GrialTextStorage.AppendToTransaction Txn, "SF20"
...
GrialCont.Apply Txn 

Mediante esta llamada el GrialTextStorage incorpora a la transacción registros para las tablas internas (SYS_FUNC_32 y 33) con los cambios que haya realizado el usuario en el texto. El parámetro “SF20” es el NOMBRE DEL ITEM CABECERA en la transacción principal, que contiene el registro al cual se asocian los textos.

El item cabecera referido debe ser el que contiene el registro troncal indicado en la llamada a "SetFilters"

Internamente,AppendToTransaction agrega a la transacción la grabación de las tablas internas SYS_FUNC_32 y 33 que contienen los textos asociados. En el ejemplo dado, el GrialTextStorage agregará internamente:

   GrialTextStorage.AppendToTransaction Txn, "SF20" ...
   ' Agrega internamente...
   ' => Txn.Add SYSFUNC32Grq.Rst, “Header=SF20:ID_SYSFUNC32,RELA_TRONCAL”
   ' => Txn.Add SYSFUNC33Grq.Rst, “;RELA_SYSFUNC32”

Al grabar la transacción se grabarán todos los textos asociados junto con los datos de la transacción.



GrialFileStorage <<< >>> GrialResize

Herramientas personales