<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://documentacion.conarpesa.com.ar/index.php?action=history&amp;feed=atom&amp;title=TprxADODataSetEdit</id>
	<title>TprxADODataSetEdit - Historial de revisiones</title>
	<link rel="self" type="application/atom+xml" href="https://documentacion.conarpesa.com.ar/index.php?action=history&amp;feed=atom&amp;title=TprxADODataSetEdit"/>
	<link rel="alternate" type="text/html" href="https://documentacion.conarpesa.com.ar/index.php?title=TprxADODataSetEdit&amp;action=history"/>
	<updated>2026-05-05T22:31:36Z</updated>
	<subtitle>Historial de revisiones de esta página en la wiki</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://documentacion.conarpesa.com.ar/index.php?title=TprxADODataSetEdit&amp;diff=7296&amp;oldid=prev</id>
		<title>Luciano Carou en 17:25 16 may 2025</title>
		<link rel="alternate" type="text/html" href="https://documentacion.conarpesa.com.ar/index.php?title=TprxADODataSetEdit&amp;diff=7296&amp;oldid=prev"/>
		<updated>2025-05-16T17:25:06Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;es&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Revisión anterior&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revisión del 19:25 16 may 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l472&quot;&gt;Línea 472:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Línea 472:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===function LocalAfterPostWhere(DataSet: TDataSet): String===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===function LocalAfterPostWhere(DataSet: TDataSet): String===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Arma el código con la condición WHERE del registro, si corresponde.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Arma el código con la condición WHERE del registro, si corresponde.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;===procedure GetPopupOptions(Sender: TprxPopupMenu)===&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Retorna las opciones de menú disponibles, el procedimiento también verifica si existe un dataset implementado (Ver [[DATASETS/IMPLEMENTADOS]]) y muestra esas opciones también.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;===function ORIGENES_Initialize(aMenu: TprxPopupMenu): Integer===&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Inicializa los orígenes de datos de una clase, si los tiene los agrega al menú de opciones de la pantalla que está mostrando al dataset.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;===function CommandText_Select_Make(aTop1: Boolean = False): String===&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Arma el comando SELECT de la clase en función de los campos que tiene, si el argumento aTop1 está definido en True no trae registros, solo las columnas vacías, sino trae todos los registros.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;===function SelectXtd(aLoadRecords: Boolean): Boolean===&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Hace el SELECT del DataSet, notar que toma el comando del SELECT en sí y le agrega la posible condición del WHERE (que construye dinámicamente en la llamada a esta función).&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;===function FieldControlEnable(aFieldName: String; aCondition: Boolean): Boolean===&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Si la condición aCondition es True habilita el control del campo, si es False lo deshabilita. El Result es la aCondition que puede haber sido modificada por la función retornando False cuando no pudo activar el campo y True si lo hizo.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;===function FieldControlDisable(aFieldName: String; aCondition: Boolean): Boolean===&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Si la condición aCondition es True deshabilita el control del campo, si es False lo habilita. El Result es la aCondition que puede haber sido modificada por la función.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;=Uso=&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Este dataset se usa mucho en la aplicación, pero siempre como ancestro de algún otro.&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Luciano Carou</name></author>
	</entry>
	<entry>
		<id>https://documentacion.conarpesa.com.ar/index.php?title=TprxADODataSetEdit&amp;diff=7266&amp;oldid=prev</id>
		<title>Luciano Carou en 16:06 16 may 2025</title>
		<link rel="alternate" type="text/html" href="https://documentacion.conarpesa.com.ar/index.php?title=TprxADODataSetEdit&amp;diff=7266&amp;oldid=prev"/>
		<updated>2025-05-16T16:06:10Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;a href=&quot;https://documentacion.conarpesa.com.ar/index.php?title=TprxADODataSetEdit&amp;amp;diff=7266&amp;amp;oldid=7251&quot;&gt;Mostrar los cambios&lt;/a&gt;</summary>
		<author><name>Luciano Carou</name></author>
	</entry>
	<entry>
		<id>https://documentacion.conarpesa.com.ar/index.php?title=TprxADODataSetEdit&amp;diff=7251&amp;oldid=prev</id>
		<title>Luciano Carou: Página creada con «=Introducción= El objeto &#039;&#039;&#039;TprxADODataSetEdit&#039;&#039;&#039; (Dataset con habilidades de armado de pantallas y edición de datos.) es un dataset bastante complejo que implementa habilidades para: *Cargar la estructura de una tabla. *Armar los campos. *Ejecutar validaciones y eventos. *Guardar los datos en la base usando transacciones.  Es el ancestro de otros datasets con funcionalidad aún más específica (aunque no tan general como éste).  =QUEESESTO/IDENTIDAD|Identid…»</title>
		<link rel="alternate" type="text/html" href="https://documentacion.conarpesa.com.ar/index.php?title=TprxADODataSetEdit&amp;diff=7251&amp;oldid=prev"/>
		<updated>2025-05-16T14:55:18Z</updated>

		<summary type="html">&lt;p&gt;Página creada con «=Introducción= El objeto &amp;#039;&amp;#039;&amp;#039;&lt;a href=&quot;/index.php?title=TprxADODataSetEdit&quot; title=&quot;TprxADODataSetEdit&quot;&gt;TprxADODataSetEdit&lt;/a&gt;&amp;#039;&amp;#039;&amp;#039; (Dataset con habilidades de armado de pantallas y edición de datos.) es un dataset bastante complejo que implementa habilidades para: *Cargar la estructura de una tabla. *Armar los campos. *Ejecutar validaciones y eventos. *Guardar los datos en la base usando transacciones.  Es el ancestro de otros datasets con funcionalidad aún más específica (aunque no tan general como éste).  =QUEESESTO/IDENTIDAD|Identid…»&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Página nueva&lt;/b&gt;&lt;/p&gt;&lt;div&gt;=Introducción=&lt;br /&gt;
El objeto &amp;#039;&amp;#039;&amp;#039;[[TprxADODataSetEdit]]&amp;#039;&amp;#039;&amp;#039; (Dataset con habilidades de armado de pantallas y edición de datos.) es un dataset bastante complejo que implementa habilidades para:&lt;br /&gt;
*Cargar la estructura de una tabla.&lt;br /&gt;
*Armar los campos.&lt;br /&gt;
*Ejecutar validaciones y eventos.&lt;br /&gt;
*Guardar los datos en la base usando transacciones.&lt;br /&gt;
&lt;br /&gt;
Es el ancestro de otros datasets con funcionalidad aún más específica (aunque no tan general como éste).&lt;br /&gt;
&lt;br /&gt;
=[[QUEESESTO/IDENTIDAD|Identidad]]=&lt;br /&gt;
[[Category:MANUAL/PROGRAMADOR]]&lt;br /&gt;
[[Category:DATASETS]]&lt;br /&gt;
*Ancestro: [[TprxADODataSet]]&lt;br /&gt;
*Carpeta: C:\DevelopPrx\library&lt;br /&gt;
*Archivo: prxADODataSetEdit.pas&lt;br /&gt;
&lt;br /&gt;
=Declaración=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
type&lt;br /&gt;
  TprxADODataSetEdit = class(TprxADODataSet)&lt;br /&gt;
  private&lt;br /&gt;
    FQuerySQL: TStringList;&lt;br /&gt;
&lt;br /&gt;
    FIsMasterDataSet: Boolean;&lt;br /&gt;
    FRecordExistenceChecked: Boolean;&lt;br /&gt;
    FLastDatabaseOp: TprxADODataSetLastDatabaseOp;&lt;br /&gt;
&lt;br /&gt;
    FOnEditReady: TDataSetNotifyEvent;&lt;br /&gt;
&lt;br /&gt;
    FOnExistingKey: TDataSetNotifyEvent;&lt;br /&gt;
&lt;br /&gt;
    FOnMostrarIndicaciones: TprxADOShowFieldHint;&lt;br /&gt;
&lt;br /&gt;
    FCommandFields: TStringList;&lt;br /&gt;
    FCommandFrom: TStringList;&lt;br /&gt;
    FCommandLeftOuter: TStringList;&lt;br /&gt;
    FCommandOrderBy: TStrings;&lt;br /&gt;
&lt;br /&gt;
    FLocalInsertXtdFlag: Boolean;&lt;br /&gt;
    FAddNavButtons: Boolean;&lt;br /&gt;
&lt;br /&gt;
    FOnOpcionesPopupXtd: TprxOnOpcionesPopup;&lt;br /&gt;
&lt;br /&gt;
    FOnEnterExternal: TprxADODataFieldOnEnter;&lt;br /&gt;
    FOnExitExternal: TprxADODataFieldOnExit;&lt;br /&gt;
&lt;br /&gt;
    FFilteredOnInsert: Boolean;&lt;br /&gt;
&lt;br /&gt;
    FDetalleCodigo: String;&lt;br /&gt;
    FDetalleVisual: String;&lt;br /&gt;
&lt;br /&gt;
    FQueryAUX: TprxADOQuery;&lt;br /&gt;
&lt;br /&gt;
    FListaFK: TStringList;&lt;br /&gt;
&lt;br /&gt;
    FCascadeUpdate: Boolean;&lt;br /&gt;
    FCascadeDelete: Boolean;&lt;br /&gt;
&lt;br /&gt;
    Fop_insert: Boolean;&lt;br /&gt;
    Fop_update: Boolean;&lt;br /&gt;
    Fop_delete: Boolean;&lt;br /&gt;
&lt;br /&gt;
    FBookmark: TBookmark;&lt;br /&gt;
&lt;br /&gt;
    FCommandText_Select: String;&lt;br /&gt;
    FCommandText_Where: String;&lt;br /&gt;
&lt;br /&gt;
    FOnVerifyKeyData: TprxADOVerifyKeyData;&lt;br /&gt;
    FCallingDataSet: TprxADODataSetEdit;&lt;br /&gt;
    FCMP_RELACION_ACCION: String;&lt;br /&gt;
    FCMP_RELACION_ESTADO: String;&lt;br /&gt;
    FCMP_RELACION_RECIDS: TStringList;&lt;br /&gt;
&lt;br /&gt;
    FTableDescription: String;&lt;br /&gt;
&lt;br /&gt;
    FCatalogo: String;&lt;br /&gt;
    FTipoDato: String;&lt;br /&gt;
&lt;br /&gt;
    FTAG_READONLY: Boolean;&lt;br /&gt;
    FTAG_AUTOPRINT: Boolean;&lt;br /&gt;
&lt;br /&gt;
    FStatusBar: TStatusBar;&lt;br /&gt;
&lt;br /&gt;
    Ffvs: Boolean;&lt;br /&gt;
&lt;br /&gt;
    Fdevlog_monitor: Tfva_devlog_monitor;&lt;br /&gt;
&lt;br /&gt;
    FUsaPanelPIE_Comentarios: Boolean;&lt;br /&gt;
    FUsaPanelPIE_Totales: Boolean;&lt;br /&gt;
&lt;br /&gt;
    FPropertyFieldList: TStringList;&lt;br /&gt;
&lt;br /&gt;
    Frefresco_modo: String;&lt;br /&gt;
&lt;br /&gt;
    FPopupOptions: TprxADODataSet_Options;&lt;br /&gt;
&lt;br /&gt;
    FTransactionTimeStamp: String;&lt;br /&gt;
&lt;br /&gt;
    FCanDeleteCheckConstraints_NotInList: TStringList;&lt;br /&gt;
&lt;br /&gt;
    // Para asignar prxADOQueryRESULTADO: TprxADOQuery del form de ejecución de&lt;br /&gt;
    // consultas...&lt;br /&gt;
&lt;br /&gt;
    FClassConsultasResultado_Query: TprxADOQuery;&lt;br /&gt;
&lt;br /&gt;
    FWHERE: TprxADODataSet_WHERE;&lt;br /&gt;
&lt;br /&gt;
    Fdevlog_TestCommands: TStringList;&lt;br /&gt;
&lt;br /&gt;
    FClase_Muestra_tab_first: Boolean;&lt;br /&gt;
    FClase_Muestra_tab_last: Boolean;&lt;br /&gt;
    FClase_Muestra_tab_comments: Boolean;&lt;br /&gt;
    FClase_Muestra_panel_comments: Integer;&lt;br /&gt;
&lt;br /&gt;
    FBandFilter: TComponent;&lt;br /&gt;
&lt;br /&gt;
    FRelacionesComponent: TComponent;&lt;br /&gt;
&lt;br /&gt;
    FOnExitFieldXtd_Result: Boolean;&lt;br /&gt;
&lt;br /&gt;
    FSCANDOCS_Field: String;&lt;br /&gt;
&lt;br /&gt;
    // Los usamos para OnEnterFieldXtd y OnExitFieldXtd...&lt;br /&gt;
&lt;br /&gt;
    FFieldEvent_FieldName: String;&lt;br /&gt;
    FFieldEvent_FieldValue: Variant;&lt;br /&gt;
  protected&lt;br /&gt;
    FTableName: String;&lt;br /&gt;
    FLoadRecords: Boolean;&lt;br /&gt;
&lt;br /&gt;
    InLocateRecordFlag: Boolean;&lt;br /&gt;
&lt;br /&gt;
    procedure   SetTableName(aValue: String); virtual;&lt;br /&gt;
&lt;br /&gt;
    procedure   SetCommandOrderBy(aValue: TStrings);&lt;br /&gt;
    procedure   SetCallingDataSet(aValue: TprxADODataSetEdit);&lt;br /&gt;
&lt;br /&gt;
    procedure   Set_fvs(aValue: Boolean);&lt;br /&gt;
&lt;br /&gt;
    function    GetCatalogo: String;&lt;br /&gt;
    function    GetTipoDato: String;&lt;br /&gt;
    function    Get_TAG_READONLY: Boolean; virtual;&lt;br /&gt;
    function    Get_TAG_AUTOPRINT: Boolean; virtual;&lt;br /&gt;
&lt;br /&gt;
    function    StructureLoad: Integer; virtual;&lt;br /&gt;
    procedure   DefaultValuesAssign; virtual;&lt;br /&gt;
    function    KeyFieldsLoaded(aFieldName: String): Boolean;&lt;br /&gt;
&lt;br /&gt;
    function    LocateRecord: Boolean; virtual;&lt;br /&gt;
&lt;br /&gt;
    procedure   LocalAfterPost(DataSet: TDataSet);&lt;br /&gt;
    function    LocalAfterPostInsert(DataSet: TDataSet): String;&lt;br /&gt;
    procedure   LocalAfterPostIndicaDefecto;&lt;br /&gt;
    function    LocalAfterPostEdit(DataSet: TDataSet; aWhere: String): String;&lt;br /&gt;
    function    LocalAfterPostDelete(DataSet: TDataSet; aWhere: String): String;&lt;br /&gt;
&lt;br /&gt;
    function    CommandText_Select_Make(aTop1: Boolean = False): String;&lt;br /&gt;
{ 16/05/2025&lt;br /&gt;
    function    CommandText_Select_Make_DeUnBAK_PodemosBorrarlo(aTop1: Boolean = False): String;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
    property    LocalInsertXtdFlag: Boolean read FLocalInsertXtdFlag write FLocalInsertXtdFlag;&lt;br /&gt;
    property    FilteredOnInsert: Boolean read FFilteredOnInsert write FFilteredOnInsert;&lt;br /&gt;
    property    Bookmark: TBookmark read FBookmark write FBookmark;&lt;br /&gt;
    property    CommandText_Where: String read FCommandText_Where write FCommandText_Where;&lt;br /&gt;
&lt;br /&gt;
    property    refresco_modo: String read Frefresco_modo write Frefresco_modo;&lt;br /&gt;
    property    PopupOptions: TprxADODataSet_Options read FPopupOptions write FPopupOptions;&lt;br /&gt;
&lt;br /&gt;
    property    QuerySQL: TStringList read FQuerySQL write FQuerySQL;&lt;br /&gt;
&lt;br /&gt;
    // Los usamos para OnEnterFieldXtd y OnExitFieldXtd...&lt;br /&gt;
&lt;br /&gt;
    property    FieldEvent_FieldName: String read FFieldEvent_FieldName write FFieldEvent_FieldName;&lt;br /&gt;
    property    FieldEvent_FieldValue: Variant read FFieldEvent_FieldValue write FFieldEvent_FieldValue;&lt;br /&gt;
  public&lt;br /&gt;
    FieldsXtdList: Tfva_campos_items;&lt;br /&gt;
&lt;br /&gt;
    procedure   Loaded; override;&lt;br /&gt;
&lt;br /&gt;
    property    CommandText_Select: String read FCommandText_Select;&lt;br /&gt;
&lt;br /&gt;
    function    FieldIsComputed(aFieldNo: Integer): Boolean;&lt;br /&gt;
&lt;br /&gt;
    procedure   LocalAfterScroll(DataSet: TDataSet); override;&lt;br /&gt;
&lt;br /&gt;
    procedure   Activate(aLoadRecords: Boolean); override;&lt;br /&gt;
&lt;br /&gt;
    function    IsTransactionMaster: Boolean; virtual;&lt;br /&gt;
&lt;br /&gt;
    function    Select(aSQLCommand: String = &amp;#039;&amp;#039;): Boolean; override;&lt;br /&gt;
&lt;br /&gt;
    function    LocalAfterPostWhere(DataSet: TDataSet): String;&lt;br /&gt;
&lt;br /&gt;
    procedure   DefaultValueAdd(aFieldName: String; aDefaultValue: String);&lt;br /&gt;
&lt;br /&gt;
    procedure   AssignFieldValueByName(aFieldName: String; aFieldValue: Variant); override;&lt;br /&gt;
    procedure   AssignValueToField(aCampo: String; aValue: Variant);&lt;br /&gt;
&lt;br /&gt;
    constructor Create(AOwner: TComponent); override;&lt;br /&gt;
    destructor  Destroy; override;&lt;br /&gt;
&lt;br /&gt;
    function    DataSetId: String;&lt;br /&gt;
&lt;br /&gt;
    function    LocateRecordOnClient(aKeyValuesA: TprxFieldValues; aKeyValuesCount: Integer): Boolean;&lt;br /&gt;
    function    LocateRecordOnServer(aKeyValuesA: TprxFieldValues; aKeyValuesCount: Integer): Boolean;&lt;br /&gt;
&lt;br /&gt;
    function    CanInsertXtd: Boolean; virtual;&lt;br /&gt;
    procedure   InsertXtd(Sender: TObject); virtual;&lt;br /&gt;
    function    CanEditXtd: Boolean; virtual;&lt;br /&gt;
    procedure   EditXtd(Sender: TObject); virtual;&lt;br /&gt;
    function    PostXtd(Sender: TObject): Boolean; virtual;&lt;br /&gt;
    procedure   CancelXtd(Sender: TObject); virtual;&lt;br /&gt;
&lt;br /&gt;
    function    CanDeleteXtd(aAsk: Boolean): Boolean; virtual;&lt;br /&gt;
    function    CanDeleteCheckConstraints(aWarn: Boolean): Boolean;&lt;br /&gt;
    procedure   DeleteXtd(Sender: TObject); virtual;&lt;br /&gt;
    procedure   DeleteRecordsXtd(Sender: TObject); virtual;&lt;br /&gt;
&lt;br /&gt;
    function    UpdateBatchXtd(AffectRecords: TAffectRecords = arAll): Boolean; virtual;&lt;br /&gt;
&lt;br /&gt;
    procedure   OnEnterFieldXtd(Sender: TObject; aFieldName: String; aFieldValue: Variant); virtual;&lt;br /&gt;
    function    OnExitFieldXtd(Sender: TObject; aFieldName: String; aFieldValue: Variant; aErrMsg: String): Boolean; virtual;&lt;br /&gt;
    function    OnChangeFieldXtd(Sender: TObject; aFieldName: String; aFieldValue: Variant): Boolean; virtual;&lt;br /&gt;
&lt;br /&gt;
    function    ArmarClaveAuditoria: String;&lt;br /&gt;
    function    ArmarClaveAuditoriaLARGO: String;&lt;br /&gt;
&lt;br /&gt;
    procedure   GetPopupOptions(Sender: TprxPopupMenu); {overload; }virtual;&lt;br /&gt;
&lt;br /&gt;
    function    DetailsEnabled: Boolean;&lt;br /&gt;
    function    ORIGENES_Initialize(aMenu: TprxPopupMenu): Integer;&lt;br /&gt;
&lt;br /&gt;
    function    SelectXtd(aLoadRecords: Boolean): Boolean;&lt;br /&gt;
&lt;br /&gt;
    property    RecordExistenceChecked: Boolean read FRecordExistenceChecked write FRecordExistenceChecked;&lt;br /&gt;
&lt;br /&gt;
    function    ValidateQuery: TprxADOQuery;&lt;br /&gt;
&lt;br /&gt;
    property    CommandFields: TStringList read FCommandFields write FCommandFields;&lt;br /&gt;
    property    CommandFrom: TStringList read FCommandFrom write FCommandFrom;&lt;br /&gt;
    property    CommandLeftOuter: TStringList read FCommandLeftOuter write FCommandLeftOuter;&lt;br /&gt;
&lt;br /&gt;
    property    LastDatabaseOp: TprxADODataSetLastDatabaseOp read FLastDatabaseOp;&lt;br /&gt;
&lt;br /&gt;
    property    DetalleCodigo: String read FDetalleCodigo;&lt;br /&gt;
    property    DetalleVisual: String read FDetalleVisual;&lt;br /&gt;
&lt;br /&gt;
    property    QueryAUX: TprxADOQuery read FQueryAUX write FQueryAUX;&lt;br /&gt;
    property    ListaFK: TStringList read FListaFK write FListaFK;&lt;br /&gt;
&lt;br /&gt;
    property    CascadeUpdate: Boolean read FCascadeUpdate write FCascadeUpdate;&lt;br /&gt;
    property    CascadeDelete: Boolean read FCascadeDelete write FCascadeDelete;&lt;br /&gt;
&lt;br /&gt;
    property    op_insert: Boolean read Fop_insert write Fop_insert;&lt;br /&gt;
    property    op_update: Boolean read Fop_update write Fop_update;&lt;br /&gt;
    property    op_delete: Boolean read Fop_delete write Fop_delete;&lt;br /&gt;
&lt;br /&gt;
    property    TAG_READONLY: Boolean read Get_TAG_READONLY;&lt;br /&gt;
    property    TAG_AUTOPRINT: Boolean read Get_TAG_AUTOPRINT;&lt;br /&gt;
&lt;br /&gt;
    property    ppOnVerifyKeyData: TprxADOVerifyKeyData read FOnVerifyKeyData write FOnVerifyKeyData;&lt;br /&gt;
    property    xxCallingDataSet: TprxADODataSetEdit read FCallingDataSet write SetCallingDataSet;&lt;br /&gt;
    property    CMP_RELACION_ACCION: String read FCMP_RELACION_ACCION write FCMP_RELACION_ACCION;&lt;br /&gt;
    property    CMP_RELACION_ESTADO: String read FCMP_RELACION_ESTADO write FCMP_RELACION_ESTADO;&lt;br /&gt;
    property    CMP_RELACION_RECIDS: TStringList read FCMP_RELACION_RECIDS write FCMP_RELACION_RECIDS;&lt;br /&gt;
&lt;br /&gt;
    property    TableDescription: String read FTableDescription;&lt;br /&gt;
&lt;br /&gt;
    property    Catalogo: String read GetCatalogo;&lt;br /&gt;
    property    TipoDato: String read GetTipoDato;&lt;br /&gt;
&lt;br /&gt;
    property    StatusBar: TStatusBar read FStatusBar write FStatusBar;&lt;br /&gt;
&lt;br /&gt;
    property    fvs: Boolean read Ffvs write Set_fvs;&lt;br /&gt;
&lt;br /&gt;
    property    x_devlog_monitor: Tfva_devlog_monitor read Fdevlog_monitor write Fdevlog_monitor;&lt;br /&gt;
&lt;br /&gt;
    property    UsaPanelPIE_Comentarios: Boolean read FUsaPanelPIE_Comentarios write FUsaPanelPIE_Comentarios;&lt;br /&gt;
    property    UsaPanelPIE_Totales: Boolean read FUsaPanelPIE_Totales write FUsaPanelPIE_Totales;&lt;br /&gt;
&lt;br /&gt;
    property    PropertyFieldList: TStringList read FPropertyFieldList;&lt;br /&gt;
&lt;br /&gt;
    property    CanDeleteCheckConstraints_NotInList: TStringList read FCanDeleteCheckConstraints_NotInList write FCanDeleteCheckConstraints_NotInList;&lt;br /&gt;
&lt;br /&gt;
    property    WHERE: TprxADODataSet_WHERE read FWHERE write FWHERE;&lt;br /&gt;
&lt;br /&gt;
    property    devlog_TestCommands: TStringList read Fdevlog_TestCommands write Fdevlog_TestCommands;&lt;br /&gt;
&lt;br /&gt;
    property    Clase_Muestra_tab_first: Boolean read FClase_Muestra_tab_first write FClase_Muestra_tab_first;&lt;br /&gt;
    property    Clase_Muestra_tab_last: Boolean read FClase_Muestra_tab_last write FClase_Muestra_tab_last;&lt;br /&gt;
    property    Clase_Muestra_tab_comments: Boolean read FClase_Muestra_tab_comments write FClase_Muestra_tab_comments;&lt;br /&gt;
    property    Clase_Muestra_panel_comments  : Integer read FClase_Muestra_panel_comments write FClase_Muestra_panel_comments;&lt;br /&gt;
&lt;br /&gt;
    property    OnExitFieldXtd_Result: Boolean read FOnExitFieldXtd_Result;&lt;br /&gt;
&lt;br /&gt;
    property    SCANDOCS_Field: String read FSCANDOCS_Field;&lt;br /&gt;
  published&lt;br /&gt;
    property    ppTableName: String read FTableName write SetTableName;&lt;br /&gt;
    property    ppCommandOrderBy: TStrings read FCommandOrderBy write SetCommandOrderBy;&lt;br /&gt;
    property    ppIsMasterDataSet: Boolean read FIsMasterDataSet write FIsMasterDataSet;&lt;br /&gt;
    property    ppOnEditReady: TDataSetNotifyEvent read FOnEditReady write FOnEditReady;&lt;br /&gt;
    property    ppAddNavButtons: Boolean read FAddNavButtons write FAddNavButtons;&lt;br /&gt;
    property    ppOnOpcionesPopupXtd: TprxOnOpcionesPopup read FOnOpcionesPopupXtd write FOnOpcionesPopupXtd;&lt;br /&gt;
    property    ppOnShowFieldHint: TprxADOShowFieldHint read FOnMostrarIndicaciones write FOnMostrarIndicaciones;&lt;br /&gt;
&lt;br /&gt;
    property    ppOnEnterExternal: TprxADODataFieldOnEnter read FOnEnterExternal write FOnEnterExternal;&lt;br /&gt;
    property    ppOnExitExternal: TprxADODataFieldOnExit read FOnExitExternal write FOnExitExternal;&lt;br /&gt;
    property    ppOnExistingKey: TDataSetNotifyEvent read FOnExistingKey write FOnExistingKey;&lt;br /&gt;
&lt;br /&gt;
    property    TransactionTimeStamp: String read FTransactionTimeStamp write FTransactionTimeStamp;&lt;br /&gt;
&lt;br /&gt;
    property    ClassConsultasResultado_Query: TprxADOQuery read FClassConsultasResultado_Query write FClassConsultasResultado_Query;&lt;br /&gt;
&lt;br /&gt;
    property    LoadRecords: Boolean read FLoadRecords;&lt;br /&gt;
&lt;br /&gt;
    property    BandFilter: TComponent read FBandFilter write FBandFilter;&lt;br /&gt;
&lt;br /&gt;
    property    RelacionesComponent: TComponent read FRelacionesComponent write FRelacionesComponent;&lt;br /&gt;
&lt;br /&gt;
    function    FieldControlEnable(aFieldName: String; aCondition: Boolean): Boolean;&lt;br /&gt;
    function    FieldControlDisable(aFieldName: String; aCondition: Boolean): Boolean;&lt;br /&gt;
  end;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Implementación=&lt;/div&gt;</summary>
		<author><name>Luciano Carou</name></author>
	</entry>
</feed>