<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><meta http-equiv=Content-Type content="text/html; charset=utf-8"><meta name=Generator content="Microsoft Word 15 (filtered medium)"><!--[if !mso]><style>v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style><![endif]--><title>RE: [DUG] Using Queries</title><style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0mm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
span.EmailStyle20
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple style='word-wrap:break-word'><div class=WordSection1><p class=MsoNormal><span lang=EN-NZ>Anybody remember ReportSmith in one of the early releases of Delph (3 maybe) – what a nightmare that was, the datasets returned could be so out of date because of the speed lag …. Sort of think what you are now talking about is a similar issue reinvented!<o:p></o:p></span></p><p class=MsoNormal><span lang=EN-NZ><o:p>&nbsp;</o:p></span></p><p class=MsoNormal><span lang=EN-NZ><o:p>&nbsp;</o:p></span></p><div><div style='border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0mm 0mm 0mm'><p class=MsoNormal><b>From:</b> delphi-bounces@listserver.123.net.nz &lt;delphi-bounces@listserver.123.net.nz&gt; <b>On Behalf Of </b>Stephen Barker<br><b>Sent:</b> Thursday, June 16, 2022 6:16 PM<br><b>To:</b> NZ Borland Developers Group - Delphi List &lt;delphi@listserver.123.net.nz&gt;<br><b>Subject:</b> Re: [DUG] Using Queries<o:p></o:p></p></div></div><p class=MsoNormal><o:p>&nbsp;</o:p></p><p><span style='font-size:10.0pt'>Hi,</span> <o:p></o:p></p><p><span style='font-size:10.0pt'>I haven't used the standard Delphi TQuery and TTable for many years, but I do heavily use a third party product called DBISAM.</span><o:p></o:p></p><p><span style='font-size:10.0pt'>DBISAM has the behaviour you describe, and not surprising as it is fully TDataset compatible. I'm not sure how its behaviour compares to the standard TQuery, but it goes like this:</span><o:p></o:p></p><p><span style='font-size:10.0pt'>TDBISAMQuery has a boolean property called RequestLive. For safety it is false by default. If set to true before the query is executed it instructs the engine to attempt a live query, i.e. the result is effectively a direct view into the underlying table data and can be edited as you observed. However if it is false, the query result is a copy of the data - it can still be edited but changes will be discarded after closing. This is very useful for creating complex datasets from multiple tables, calculations, lookups, aggregates etc that otherwise couldn't be done with straight SQL. Usually needed for further exporting, reporting, API etc and no risk of altering the source data.</span><o:p></o:p></p><p><span style='font-size:10.0pt'>Also, in the above there is another boolean property ResultIsLive, so you can determine the state of the result set.</span> <o:p></o:p></p><p><span style='font-size:10.0pt'>Actually I just checked and the standard TQuery does have a RequestLive property also, so it was not just a DBISAM thing.</span><o:p></o:p></p><p><span style='font-size:10.0pt'><a href="https://docwiki.embarcadero.com/Libraries/Sydney/en/Bde.DBTables.TQuery.RequestLive" target="_blank">https://docwiki.embarcadero.com/Libraries/Sydney/en/Bde.DBTables.TQuery.RequestLive</a></span> <o:p></o:p></p><p><span style='font-size:10.0pt'>cheers</span> <br><span style='font-size:10.0pt'>Steve Barker</span> <o:p></o:p></p><p><span style='font-size:10.0pt'>&gt; -----Original Message-----</span> <br><span style='font-size:10.0pt'>&gt; From: Adrian Williams [<a href="mailto:adrian@aerosupport.co.nz">mailto:adrian@aerosupport.co.nz</a>] </span><br><span style='font-size:10.0pt'>&gt; Sent: Monday, 13 June 2022 10:05 a.m.</span> <br><span style='font-size:10.0pt'>&gt; To: NZ Borland Developers Group - Delphi List</span> <br><span style='font-size:10.0pt'>&gt; Subject: [DUG] Using Queries</span> <br><span style='font-size:10.0pt'>&gt; </span><br><span style='font-size:10.0pt'>&gt; Hi all</span> <br><span style='font-size:10.0pt'>&gt; </span><br><span style='font-size:10.0pt'>&gt; I wonder if someone could clarify something regarding Queries.</span> <br><span style='font-size:10.0pt'>&gt; </span><br><span style='font-size:10.0pt'>&gt; I understand that if you run a query on a table it returns a&nbsp; </span><br><span style='font-size:10.0pt'>&gt; subset or </span><br><span style='font-size:10.0pt'>&gt; snapshot of data from the table based on the SQL statement </span><br><span style='font-size:10.0pt'>&gt; supplied. (In </span><br><span style='font-size:10.0pt'>&gt; my Paradox days, a query created an 'ANSWER' table that could be </span><br><span style='font-size:10.0pt'>&gt; navigated as a table, but was separate from the original data).</span> <br><span style='font-size:10.0pt'>&gt; </span><br><span style='font-size:10.0pt'>&gt; What I have discovered (more by accident), is that if you </span><br><span style='font-size:10.0pt'>&gt; edit records </span><br><span style='font-size:10.0pt'>&gt; in the query data and call&nbsp; the query's POST method it will post the </span><br><span style='font-size:10.0pt'>&gt; changes back to original table. Also by using the APPEND and INSERT </span><br><span style='font-size:10.0pt'>&gt; methods on the query, you can create new records in the base </span><br><span style='font-size:10.0pt'>&gt; table. What </span><br><span style='font-size:10.0pt'>&gt; I have been able to ascertain is that the database engine seamlessly </span><br><span style='font-size:10.0pt'>&gt; creates the SQL code to run UPDATE and INSERT statements to amend the </span><br><span style='font-size:10.0pt'>&gt; original table in the background.</span> <br><span style='font-size:10.0pt'>&gt; </span><br><span style='font-size:10.0pt'>&gt; My question is: Is this a 'proper' and acceptable way of updating a </span><br><span style='font-size:10.0pt'>&gt; table by modifying the Query data? Or is this fraught with danger and </span><br><span style='font-size:10.0pt'>&gt; bad practice?</span> <br><span style='font-size:10.0pt'>&gt; </span><br><span style='font-size:10.0pt'>&gt; Appreciate any comments on this.</span> <br><span style='font-size:10.0pt'>&gt; </span><br><span style='font-size:10.0pt'>&gt; Regards</span> <br><span style='font-size:10.0pt'>&gt; Adrian Williams</span> <br><span style='font-size:10.0pt'>&gt; _______________________________________________</span> <br><span style='font-size:10.0pt'>&gt; NZ Borland Developers Group - Delphi mailing list</span> <br><span style='font-size:10.0pt'>&gt; Post: <a href="mailto:delphi@listserver.123.net.nz">delphi@listserver.123.net.nz</a></span> <br><span style='font-size:10.0pt'>&gt; Admin: <a href="http://delphi.org.nz/mailman/listinfo/delphi" target="_blank">http://delphi.org.nz/mailman/listinfo/delphi</a></span> <br><span style='font-size:10.0pt'>&gt; Unsubscribe: send an email to </span><br><span style='font-size:10.0pt'>&gt; <a href="mailto:delphi-request@listserver.123.net.nz">delphi-request@listserver.123.net.nz</a> with Subject: unsubscribe</span> <br><span style='font-size:10.0pt'>&gt; </span><o:p></o:p></p><p class=MsoNormal><img border=0 width=1 height=1 style='width:.0104in;height:.0104in' id="_x0000_i1025" src="http://zjwgp.tsmtpclick.com/tracking/qaR9ZGL0BQH5AmN3AQH4Zwp4ZGx1Zvj.gif"><o:p></o:p></p></div></body></html>