<?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=TprxADOQuery</id>
	<title>TprxADOQuery - 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=TprxADOQuery"/>
	<link rel="alternate" type="text/html" href="https://documentacion.conarpesa.com.ar/index.php?title=TprxADOQuery&amp;action=history"/>
	<updated>2026-05-06T00:23:45Z</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=TprxADOQuery&amp;diff=27990&amp;oldid=prev</id>
		<title>Luciano Carou: /* function Apply_Transaction(aStrings: TStrings): Boolean */</title>
		<link rel="alternate" type="text/html" href="https://documentacion.conarpesa.com.ar/index.php?title=TprxADOQuery&amp;diff=27990&amp;oldid=prev"/>
		<updated>2025-08-06T19:00:39Z</updated>

		<summary type="html">&lt;p&gt;&lt;span dir=&quot;auto&quot;&gt;&lt;span class=&quot;autocomment&quot;&gt;function Apply_Transaction(aStrings: TStrings): Boolean&lt;/span&gt;&lt;/span&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 21:00 6 ago 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-l135&quot;&gt;Línea 135:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Línea 135:&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 Apply_Transaction(aStrings: TStrings): Boolean===&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 Apply_Transaction(aStrings: TStrings): Boolean===&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;Aplica los comandos informados en el argumento (lista de strings) dentro de una transacción usando [[TprxADOConnection]].&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;Aplica los comandos informados en el argumento (lista de strings) dentro de una transacción usando [[TprxADOConnection]].&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;La sentencia debe terminar en un GO para aplicarla, y permite definir múltiples sentencias todas terminadas en un GO.&lt;/ins&gt;&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;br&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;br&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;===function Apply_Transaction(aSQLCommand: String; aAddGo: Boolean = False): Boolean===&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 Apply_Transaction(aSQLCommand: String; aAddGo: Boolean = False): Boolean===&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=TprxADOQuery&amp;diff=6884&amp;oldid=prev</id>
		<title>Luciano Carou: Página creada con «=Introducción= El objeto &#039;&#039;&#039;TprxADOQuery&#039;&#039;&#039; (Query avanzado.) define funcionalidad más avanzada, particularmente para actualizar datos en la base de datos.  =Identidad= Category:MANUAL/PROGRAMADOR Category:DATASETS/QUERIES *Ancestro: TprxADOQuerySelect *Carpeta: C:\DevelopPrx\library *Archivo: prxADOQuery.pas  =Declaración= &lt;pre&gt; type   TprxADOQuery = class(TprxADOQuerySelect)   private     FRecordsAffected: Integer;     FScr…»</title>
		<link rel="alternate" type="text/html" href="https://documentacion.conarpesa.com.ar/index.php?title=TprxADOQuery&amp;diff=6884&amp;oldid=prev"/>
		<updated>2025-05-15T19:58:05Z</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=TprxADOQuery&quot; title=&quot;TprxADOQuery&quot;&gt;TprxADOQuery&lt;/a&gt;&amp;#039;&amp;#039;&amp;#039; (Query avanzado.) define funcionalidad más avanzada, particularmente para actualizar datos en la base de datos.  =&lt;a href=&quot;/index.php?title=QUEESESTO/IDENTIDAD&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;QUEESESTO/IDENTIDAD (la página no existe)&quot;&gt;Identidad&lt;/a&gt;= &lt;a href=&quot;/index.php?title=Categor%C3%ADa:MANUAL/PROGRAMADOR&quot; title=&quot;Categoría:MANUAL/PROGRAMADOR&quot;&gt;Category:MANUAL/PROGRAMADOR&lt;/a&gt; &lt;a href=&quot;/index.php?title=Categor%C3%ADa:DATASETS/QUERIES&quot; title=&quot;Categoría:DATASETS/QUERIES&quot;&gt;Category:DATASETS/QUERIES&lt;/a&gt; *Ancestro: &lt;a href=&quot;/index.php?title=TprxADOQuerySelect&quot; title=&quot;TprxADOQuerySelect&quot;&gt;TprxADOQuerySelect&lt;/a&gt; *Carpeta: C:\DevelopPrx\library *Archivo: prxADOQuery.pas  =Declaración= &amp;lt;pre&amp;gt; type   TprxADOQuery = class(TprxADOQuerySelect)   private     FRecordsAffected: Integer;     FScr…»&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;[[TprxADOQuery]]&amp;#039;&amp;#039;&amp;#039; (Query avanzado.) define funcionalidad más avanzada, particularmente para actualizar datos en la base de datos.&lt;br /&gt;
&lt;br /&gt;
=[[QUEESESTO/IDENTIDAD|Identidad]]=&lt;br /&gt;
[[Category:MANUAL/PROGRAMADOR]]&lt;br /&gt;
[[Category:DATASETS/QUERIES]]&lt;br /&gt;
*Ancestro: [[TprxADOQuerySelect]]&lt;br /&gt;
*Carpeta: C:\DevelopPrx\library&lt;br /&gt;
*Archivo: prxADOQuery.pas&lt;br /&gt;
&lt;br /&gt;
=Declaración=&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
type&lt;br /&gt;
  TprxADOQuery = class(TprxADOQuerySelect)&lt;br /&gt;
  private&lt;br /&gt;
    FRecordsAffected: Integer;&lt;br /&gt;
    FScreenCursor: TCursor;&lt;br /&gt;
&lt;br /&gt;
    FQuerySQL: TStringList;&lt;br /&gt;
&lt;br /&gt;
    Fsql_commands_where: TStringList;&lt;br /&gt;
    Fsql_commands_orderby: TStringList;&lt;br /&gt;
&lt;br /&gt;
    FReportId: String;&lt;br /&gt;
    FReportCaption: String;&lt;br /&gt;
&lt;br /&gt;
    FTransactionTimeStamp: String;&lt;br /&gt;
&lt;br /&gt;
    FDataSetId_External: String;&lt;br /&gt;
  protected&lt;br /&gt;
    FChildQueries: array[0..TprxChildQueriesMax] of TprxADOQuery;&lt;br /&gt;
    FChildQueriesCount: Integer;&lt;br /&gt;
&lt;br /&gt;
    function    GetChildQueries(Index: Integer): TprxADOQuery;&lt;br /&gt;
    procedure   SetChildQueries(Index: Integer; Value: TprxADOQuery);&lt;br /&gt;
&lt;br /&gt;
    function    GetReportId: String;&lt;br /&gt;
    function    GetReportCaption: String;&lt;br /&gt;
&lt;br /&gt;
    property    ScreenCursor: TCursor read FScreenCursor write FScreenCursor;&lt;br /&gt;
&lt;br /&gt;
    property    QuerySQL: TStringList read FQuerySQL write FQuerySQL;&lt;br /&gt;
  public&lt;br /&gt;
    constructor Create(AOwner: TComponent); override;&lt;br /&gt;
    destructor  Destroy; override;&lt;br /&gt;
    procedure   Loaded; override;&lt;br /&gt;
&lt;br /&gt;
    function    DataSetId: String;&lt;br /&gt;
&lt;br /&gt;
    procedure   LocalAfterScroll(DataSet: TDataSet);&lt;br /&gt;
&lt;br /&gt;
    function    Apply_Local(aCommands: TStringList): Boolean; overload;&lt;br /&gt;
    function    Apply_Local(aSQLCommand: String; aAddGo: Boolean = False): Boolean; overload;&lt;br /&gt;
&lt;br /&gt;
    function    Apply_Transaction(aStrings: TStrings): Boolean; overload;&lt;br /&gt;
    function    Apply_Transaction(aSQLCommand: String; aAddGo: Boolean = False): Boolean; overload;&lt;br /&gt;
&lt;br /&gt;
    function    Apply_Devlog(aCatalogo: String; aTipo: String; aCodigo: String; aSubcodigo: String; aOperacion: String; aComandos: TStringList): Boolean; overload;&lt;br /&gt;
    function    Apply_Devlog(aCatalogo: String; aTipo: String; aCodigo: String; aSubcodigo: String; aOperacion: String; aComando: String; aAddGO: Boolean = False): Boolean; overload;&lt;br /&gt;
&lt;br /&gt;
    function    SelectFromConsulta(aConsulta: String; aSQLCommand: String; aSilent: Boolean = False): Boolean; overload;&lt;br /&gt;
    function    SelectFromConsulta(aConsulta: String; aStrings: TStrings; aSilent: Boolean = False): Boolean; overload;&lt;br /&gt;
&lt;br /&gt;
    function    FilterOnField(aFieldName: String; aFieldValue: String): Boolean; overload;&lt;br /&gt;
    function    FilterOnField(aFieldName: String; aFieldValues: TStringList): Boolean; overload;&lt;br /&gt;
    procedure   FilterOnField; overload;&lt;br /&gt;
&lt;br /&gt;
    procedure   ChildQueriesInit;&lt;br /&gt;
    procedure   ChildQueryAdd(aDS: TprxADOQuery);&lt;br /&gt;
    procedure   ChildQueriesFree;&lt;br /&gt;
&lt;br /&gt;
    property    RecordsAffected: Integer read FRecordsAffected;&lt;br /&gt;
&lt;br /&gt;
    property    ReportId: String read GetReportId write FReportId;&lt;br /&gt;
    property    ReportCaption: String read GetReportCaption write FReportCaption;&lt;br /&gt;
&lt;br /&gt;
    property    ChildQueries[Index: Integer]: TprxADOQuery read GetChildQueries write SetChildQueries;&lt;br /&gt;
    property    ChildQueriesCount: Integer read FChildQueriesCount;&lt;br /&gt;
&lt;br /&gt;
    property    sql_commands_where: TStringList read Fsql_commands_where write Fsql_commands_where; //SetCommandWhere;&lt;br /&gt;
    property    sql_commands_orderby: TStringList read Fsql_commands_orderby write Fsql_commands_orderby; //SetCommandOrderBy;&lt;br /&gt;
&lt;br /&gt;
    property    TransactionTimeStamp: String read FTransactionTimeStamp write FTransactionTimeStamp;&lt;br /&gt;
&lt;br /&gt;
    property    DataSetId_External: String read FDataSetId_External write FDataSetId_External;&lt;br /&gt;
  published&lt;br /&gt;
end;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===FChild===&lt;br /&gt;
Las propiedades relacionadas con hijos están en revisión y no se documentan.&lt;br /&gt;
&lt;br /&gt;
===Fsql_commands_where===&lt;br /&gt;
Se usaba en el filtrado de los datos usando las clases obsoletas TprxADODataSet_Options_Busqueda, deberían ser eliminadas.&lt;br /&gt;
&lt;br /&gt;
===Fsql_commands_orderby===&lt;br /&gt;
Ídem anterior.&lt;br /&gt;
&lt;br /&gt;
===FReport===&lt;br /&gt;
Las propiedades &amp;#039;&amp;#039;&amp;#039;FReport&amp;#039;&amp;#039;&amp;#039; tienen que ver con los componentes relacionados con el generador de reportes de ReportBuilder, explicado más adelante.&lt;br /&gt;
&lt;br /&gt;
=Implementación=&lt;br /&gt;
===function DataSetId: String===&lt;br /&gt;
Retorna el DataSetId de un DataSet, si es un TprxADOQuery proveniente de una consulta tiene que tener un MasterDataSet asociado que provee los criterios de la consulta, éste existe aunque la consulta no tenga criterios. Agregado el 20190314 si se definió DataSetId_External lo retorna.&lt;br /&gt;
&lt;br /&gt;
===procedure LocalAfterScroll(DataSet: TDataSet)===&lt;br /&gt;
Llamado cada vez que se cambia de registro en el dataset, el objetivo mes refrescar cualquier Child que tenga.&lt;br /&gt;
&lt;br /&gt;
===function Apply_Local(aCommands: TStringList): Boolean===&lt;br /&gt;
Aplica una sentencia SQL informada en &amp;#039;&amp;#039;&amp;#039;aCommands&amp;#039;&amp;#039;&amp;#039; (definida como una lista de strings) localmente, es decir que no va a usar la [[:Category:DEV REPLICACION|Replicación]].&lt;br /&gt;
&lt;br /&gt;
El comando sería algo parecido a:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
UPDATE CUENTA SET &lt;br /&gt;
FDESCRIPCION = &amp;#039;(demo) Bancos en $&amp;#039; &lt;br /&gt;
WHERE &lt;br /&gt;
FCODIGO = &amp;#039;10001001&amp;#039;&lt;br /&gt;
GO&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
La sentencia debe terminar en un &amp;#039;&amp;#039;&amp;#039;GO&amp;#039;&amp;#039;&amp;#039; para aplicarla.&lt;br /&gt;
&lt;br /&gt;
Retorna True si tuvo éxito (y asigna la cantidad de registros afectados a &amp;#039;&amp;#039;&amp;#039;FRecordsAffected&amp;#039;&amp;#039;&amp;#039;), sino retorna False.&lt;br /&gt;
&lt;br /&gt;
===function Apply_Local(aSQLCommand: String; aAddGo: Boolean = False): Boolean===&lt;br /&gt;
Ídem anterior, pero recibe el SQL como una sola línea.&lt;br /&gt;
&lt;br /&gt;
El comando sería algo parecido a:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
UPDATE CUENTA SET FDESCRIPCION = &amp;#039;(demo) Bancos en $&amp;#039; WHERE FCODIGO = &amp;#039;10001001&amp;#039;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
El &amp;#039;&amp;#039;&amp;#039;GO&amp;#039;&amp;#039;&amp;#039; lo agrega la función.&lt;br /&gt;
&lt;br /&gt;
===function Apply_Transaction(aStrings: TStrings): Boolean===&lt;br /&gt;
Aplica los comandos informados en el argumento (lista de strings) dentro de una transacción usando [[TprxADOConnection]].&lt;br /&gt;
&lt;br /&gt;
===function Apply_Transaction(aSQLCommand: String; aAddGo: Boolean = False): Boolean===&lt;br /&gt;
Ídem anterior, pero recibe la sentencia en una sola línea, el &amp;#039;&amp;#039;&amp;#039;GO&amp;#039;&amp;#039;&amp;#039; se lo agrega el procedimiento si el argumento &amp;#039;&amp;#039;&amp;#039;aAddGo&amp;#039;&amp;#039;&amp;#039; es True.&lt;br /&gt;
&lt;br /&gt;
===function Apply_Devlog(aCatalogo: String; aTipo: String; aCodigo: String; aSubcodigo: String; aOperacion: String; aComandos: TStringList): Boolean===&lt;br /&gt;
Aplica una transacción de catálogo (Ver [[:Category:MANUAL/DESARROLLADOR|MANUAL/DESARROLLADOR]]).&lt;br /&gt;
&lt;br /&gt;
Los argumentos son:&lt;br /&gt;
*aCatalogo es el código de catálogo.&lt;br /&gt;
*aTipo es el tipo de objeto.&lt;br /&gt;
*aCodigo es el código de objeto.&lt;br /&gt;
*aSubcodigo es el subcódigo de objeto.&lt;br /&gt;
*aOperacion es la operación a aplicar.&lt;br /&gt;
*aComandos son los comandos representados en una lista de strings.&lt;br /&gt;
&lt;br /&gt;
===function Apply_Devlog(aCatalogo: String; aTipo: String; aCodigo: String; aSubcodigo: String; aOperacion: String; aComando: String; aAddGO: Boolean = False): Boolean===&lt;br /&gt;
Ídem anterior pero el comando se informa como un string.&lt;br /&gt;
&lt;br /&gt;
===function SelectFromConsulta(aConsulta: String; aSQLCommand: String; aSilent: Boolean = False): Boolean===&lt;br /&gt;
Función accesoria usada desde las consultas para generar el resultado.&lt;br /&gt;
&lt;br /&gt;
===function SelectFromConsulta(aConsulta: String; aStrings: TStrings; aSilent: Boolean = False): Boolean===&lt;br /&gt;
Ídem anterior, pero el comando es un string.&lt;br /&gt;
&lt;br /&gt;
===function FilterOnField(aFieldName: String; aFieldValue: String): Boolean===&lt;br /&gt;
Filtra el contenido en base a un campo y un valor, retorna True si al filtrar quedan registros en el resultado.&lt;br /&gt;
&lt;br /&gt;
===function FilterOnField(aFieldName: String; aFieldValues: TStringList): Boolean===&lt;br /&gt;
Ídem anterior, pero recibe una lista de valores.&lt;br /&gt;
&lt;br /&gt;
=Uso=&lt;br /&gt;
El componente es muy usado en toda la aplicación.&lt;/div&gt;</summary>
		<author><name>Luciano Carou</name></author>
	</entry>
</feed>