
-----------------------------
Hi to all Delphi-programmers!
-----------------------------

This component is query without BDE's errors in cached updates and with
possibility of saving several queries in one transaction.

If you are using a Borland's TQuery then when you'll try to apply updates to SQL server
and it (SQL server) generate an error (error of primary key, error of foreign key,
insufficient SQL rights, ...) you'll lose a data. CachedQuery correct this
problem and all rows will be applied or all rows will not be applied.

Run the demo program ('democach.exe') and you'll know what is BDE's errors in cached
updates. (you must have vcl40.bpl and vcldb40.bpl in your system)

Working with 'Cached Query'.
-------------------------------------------
TCachedQuery is inherited from TQuery, so you can use all methods,
events and properties of Borland's TQuery.

Components are realized for Delphi 4,5 and C++ Builder 4,5 and work under Windows 9.x and
Windows NT, 2000. Here CachedQuery for Delphi 4, CachedQuery for version 5 is located at
my web-site (http://members.xoom.com/seregaz/)

TCachedQuery have additional properties and events (relatively TQuery).

properties
~~~~~~~~~~
Modified:Boolean - True if dataset was modified, else False;

Language:TLanguage - Language of interface (English/Russian, can add more)
         TLanguage = (lnEnglish, lnRussia);

GroupIndex: Integer - if set 0 then only this dataset is saved in transaction. Else
            all datasets with equal GroupIndex will be saved in one transaction at once;
            Remark: for apply updates use CachedQuery's function SaveUpdates.

SaveOrder: Integer - this property indicate a saving order of queries with equal GroupIndex.
           Queries with SaveOrder=0 save in begin, after queries with SaveOrder=1, after ...

FetchAllRecords: Boolean - if set True, then all records will be transfer from SQL Server
                 to local machine.

LastSaveResult: TSaveResult - is result of last changes applying. LastSaveResult is value
                of function SaveUpdates (after last calling).
TSaveResult = (SaveError, SaveCancel, SaveNo, SaveYes, SaveNeedNo);
                If SaveError, then error occured while last saving.
                  (Changes was not applied)
                If SaveCancel, then user choose 'Cancel' button as answer on confirm window.
                  (Changes was not applied)
                If SaveNo, then user choose 'No' button as answer on confirm window.
                  (Changes was not applied)
                If SaveYes, then changes was succesfully applied to SQL Server.
                  (Changes was applied)
                If SaveNeedNo, then dataset was not modified.

Saving: Boolean - indicates saving process (Property is used internally);

method
~~~~~~
procedure ReOpen; - reopen a dataset. (Close; Open;)

function
~~~~~~~~
function SaveUpdates(Confirm: Boolean): TSaveResult;
  TSaveResult = (SaveError, SaveCancel, SaveNo, SaveYes, SaveNeedNo);
  This function apply all changes to SQL Server according to GroupIndex property.
  Changes will be applyed in all CachedQueries with equal GroupIndex in one transaction.
  If GroupIndex=0 then only this CachedQuery will be saved.
  If Confirm=True and dataset was modified then question will appear ('Changes was not
  saved! Do You want to save changes?') else changes will applied without warning.
  Result:
         If SaveError, then error occured while last saving.
           (Changes was not applied)
         If SaveCancel, then user choose 'Cancel' button as answer on confirm window.
           (Changes was not applied)
         If SaveNo, then user choose 'No' button as answer on confirm window.
           (Changes was not applied)
         If SaveYes, then changes was successfully applied to SQL Server.
           (Changes was applied)
         If SaveNeedNo, then dataset was not modified.

I URGENT ADVISE YOU REOPEN YOUR CachedQuery AND ANY Borland's query, AFTER YOU SAVED
YOUR DATASET.

event
~~~~~
OnModified: TNotifyEvent - event occur on modifying data in dataset.

BeforeSave: TDataSetNotifyEvent - event occur before saving changes to SQL Server.

AfterSave: TNotifyEvent - event occur after successful saving changes to SQL Server

For work with CachedQuery one additional field (0 AS uStatus) must present in
your SQL statement.
For examptle: SELECT colAccount,
                     0 AS uStatus
              FROM tblAccounts
It's all demands for successful work.

Installation.
-------------
TCachedQuery include next files:
CachedQueryPack.dpk
CachedQueryPack.res
CachedQuery.dcu
CachedQuery.dcr
AboutCachedQuery.dcu
AboutCachedQuery.dfm
If you have no all this files, then welcome to my e-mail box.

For installation choose: 'File', 'Open...' and select file CachedQueryPack.dpk.
In the opened window 'Package' press button 'Install'.

That is all installation!
Don't forget set path to the component's files.

Registration.
-------------
This component is Shareware program.
It is fully functional, but have a nag screen.
In order to get a normal version CachedQuery you must register your copy.
The component registration cost 30$ (45$ with sources).

For registration you can use on-line form at:
http://shareit1.element5.com/programs.html?productid=133952&language=English
or
you can transfer a fee to my bank's account directly (for more information email me).

Other my shareware & freeware programs and components
-----------------------------------------------------
MaxSpace
~~~~~~~~
MaxSpace is a special program for programmers, who use Delphi or
C++ Builder (version insensitive). It turns your Object Inspector and
IDE toolbar into "Auto-Hide" windows. This mean that now you can write
code on a full screen. The normal state of Object Inspector and IDE
tollbar will be out of the screen. But as you will be needed their you
move the pointer of mouse to the left side of screen for appearance
Object Inspector or move to the top for appearance IDE toolbar. And
after you used the Object Inspector or IDE tollbar they automatic move
out of the screen and you again can use a FULL SCREEN. It's perfect for
Delphi 4,5 and C++ Builder 4,5 where the Code Explorer is added  - very
useful addition, but it take the working space and minimum space is
leaved for Code Editor.

Asynchronous SQL Components
~~~~~~~~~~~~~~~~~~~~~~~~~~~
These components allow you asynchronously execute several queries
and stored procedures at the same time. The asynchronous executing
is possibility to execute several queries and stored procedures at
the same time (parallel). When queries and stored procedures are
executing asynchronously your application can respond to the user's
and system's requirements and can execute any action that you will
define. Thus the users can refuse executing queries (stored
procedures) at any time. Opening several big dataset take place
in 3-5 time quicker, than if open their synchronously. The bigger
dataset the quicker asynchronous queries is opened (relatively
synchronous). Tested under Microsoft SQL Server 6.5-7.


ElegantMDI
~~~~~~~~~~
This component is a new elegant realiztion of the old squalid MDI
interface. All windows (MDIChild) will be presented as buttons on
autohiding panel, with this component. User can toggle between windows
without choosing items in main menu. It looks very effectively.

Active Banner for Applications
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
You can use it for trial version of your applications or as advertising
your programs, servers, services and so on. For this you locate several
animated or nonanimated gifs to your ftp or web server and indicate to
component their exact URL. And when your application, with this
component, will be started, users can see this gifs. Through some time
you can change this gifs on your ftp (web) server and all your users
will see new gifs at once! And what is more that you can use
a 'URLForGifList' property for indication exact URL for text file with
list of the URL all gifs that you want that users can see through your
applications.

MinModal
~~~~~~~~
MinModal - minimizer for modal windows. Why we can't minimize an
application when a modal window is active? Drop this component to
the form, open form by method 'ShowModal' and try minimize this form
at run time. Your application will be minimized !

WavePanel
~~~~~~~~~
WavePanel - component with running colors, like panel at the bottom
of the screen when Windows 9x loading.

All this programs you can download from my web site at:
http://members.xoom.com/seregaz/

That's all!
I shall be glad if my components will be useful for you.

                                                             Good luck!
                                                 Sergey Zimin, May 2000
                                                       szimin@mypad.com
                                        http://members.xoom.com/seregaz

=======================================================================
=======================================================================
=======================================================================