Subject | New sub-release 3.6 Ca |
---|---|
Author | Jason Wharton |
Post date | 2000-12-08T21:31:22Z |
From the release notes:
French constants updated.
Published OnSetColumnText for TIB_Grid control.
Enhanced the Filter syntax to accommodate all of the former BDE syntax and
options as well as integrated in all of the simple SQL-Style syntax items:
IS [NOT] NULL
[NOT] BETWEEN ... AND ...
[NOT] IN ( ... )
[NOT] LIKE ... ESCAPE ...
[NOT] CONTAINING ...
[NOT] STARTING [WITH] ...
This is all in addition to the former syntax and it is all integrated into
the filtering options as well. PartialMatch only applies when the operator
is '=' and the asterisk and case insensitivity applies to all of them and it
will substitute in the NOCASE columns indicated in the ColumnAttributes
automatically.
I modified the TIB_TransactionBar to respond to cachedupdates pending when
executing the CommitRetaining and RollbackRetaining. Keep in mind that if
updates are active then in the process of handling the updates a hard Commit
or Rollback will be performed. I assume if you are using cachedupdates then
you are prepared for that.
I made it so that when you are using cached updates in a detail dataset
using MasterLinks and you insert records in the detail dataset and change to
a different master record it will only make the inserted record appear when
its corresponding master record is scrolled to. Calling CancelUpdates or
ApplyUpdates acts upon the record even if it isn't in the current visible
records. Previously inserts showed up for all master records. This does not
work with MasterParamLinks situations and I don't think it will work for the
TDataset stuff yet either. I have not handled it there.
I improved the handling of InvalidateRows (RefreshRows) when using cached
updates and there are edits in the buffers. Previously it simply ignored
records that had cached updates associate with them but now it surgically
removes the old row that came from the server and the next time that record
is pulled into a buffer it will fetch from the server the current row and
replace the previous old row. This can be a mechanism for dealing with the
"Record changed by another user" since it is possible to invalidate a row
and get the new values to base the updates on if necessary. The only
complaint I have there is that there isn't a way to tell if the record was
changed and so the user may not be aware of the change until they cancel
their updates and take a look at it. The only solution to this is to add a
third hook on the buffer node so that it will be possible to distinguish the
NEW, CUR and OLD values. I am considering doing that but it will impact the
memory usage a little by adding in two variables to me node record. I don't
have a way to surface the CUR values either...
In the process of the above changes I also cleaned up the processing of the
CalculatedFields better. It should now be very precise and efficient about
when the fields are calculated and how they are cached in memory. Prior to
this time I had it doing a little overkill just to make sure the buffers
always reflected accurate values but this was undesirable for those who were
using semi-expensive routines in the calc routine.
Fixed the handling of TIBODataset when multiple input parameters have the
same name. They are now consolidated down to the unique occurrences.
Fixed a problem with the resolution of MIDAS columns when updating or
inserting records. In some cases it was having the full field name (meaning
TABLE.COLUMN) instead of just the FieldName (meaning COLUMN) and it was not
finding the right column to line up with. I made it so that if it doesn't
get a match with the full field name to parse off the table name and try it
with just the column name and now it works fine. Previously it was just
inserting NULL instead of the appropriate values.
Published the RecordCountAccurate property for TIBOQuery and TIBOTable
components.
Added the ability to right click in the Query editor's list of tables to
optionally include or exclude views and stored procedures.
I increased the internal margin for text inside of the TIB_Grid control so
that there is a little more white surrounding the text. This should improve
the readability of the grid considerably. Especially when the grid is full
of text.
Enjoy!
Jason Wharton
CPS - Mesa AZ
http://www.ibobjects.com
French constants updated.
Published OnSetColumnText for TIB_Grid control.
Enhanced the Filter syntax to accommodate all of the former BDE syntax and
options as well as integrated in all of the simple SQL-Style syntax items:
IS [NOT] NULL
[NOT] BETWEEN ... AND ...
[NOT] IN ( ... )
[NOT] LIKE ... ESCAPE ...
[NOT] CONTAINING ...
[NOT] STARTING [WITH] ...
This is all in addition to the former syntax and it is all integrated into
the filtering options as well. PartialMatch only applies when the operator
is '=' and the asterisk and case insensitivity applies to all of them and it
will substitute in the NOCASE columns indicated in the ColumnAttributes
automatically.
I modified the TIB_TransactionBar to respond to cachedupdates pending when
executing the CommitRetaining and RollbackRetaining. Keep in mind that if
updates are active then in the process of handling the updates a hard Commit
or Rollback will be performed. I assume if you are using cachedupdates then
you are prepared for that.
I made it so that when you are using cached updates in a detail dataset
using MasterLinks and you insert records in the detail dataset and change to
a different master record it will only make the inserted record appear when
its corresponding master record is scrolled to. Calling CancelUpdates or
ApplyUpdates acts upon the record even if it isn't in the current visible
records. Previously inserts showed up for all master records. This does not
work with MasterParamLinks situations and I don't think it will work for the
TDataset stuff yet either. I have not handled it there.
I improved the handling of InvalidateRows (RefreshRows) when using cached
updates and there are edits in the buffers. Previously it simply ignored
records that had cached updates associate with them but now it surgically
removes the old row that came from the server and the next time that record
is pulled into a buffer it will fetch from the server the current row and
replace the previous old row. This can be a mechanism for dealing with the
"Record changed by another user" since it is possible to invalidate a row
and get the new values to base the updates on if necessary. The only
complaint I have there is that there isn't a way to tell if the record was
changed and so the user may not be aware of the change until they cancel
their updates and take a look at it. The only solution to this is to add a
third hook on the buffer node so that it will be possible to distinguish the
NEW, CUR and OLD values. I am considering doing that but it will impact the
memory usage a little by adding in two variables to me node record. I don't
have a way to surface the CUR values either...
In the process of the above changes I also cleaned up the processing of the
CalculatedFields better. It should now be very precise and efficient about
when the fields are calculated and how they are cached in memory. Prior to
this time I had it doing a little overkill just to make sure the buffers
always reflected accurate values but this was undesirable for those who were
using semi-expensive routines in the calc routine.
Fixed the handling of TIBODataset when multiple input parameters have the
same name. They are now consolidated down to the unique occurrences.
Fixed a problem with the resolution of MIDAS columns when updating or
inserting records. In some cases it was having the full field name (meaning
TABLE.COLUMN) instead of just the FieldName (meaning COLUMN) and it was not
finding the right column to line up with. I made it so that if it doesn't
get a match with the full field name to parse off the table name and try it
with just the column name and now it works fine. Previously it was just
inserting NULL instead of the appropriate values.
Published the RecordCountAccurate property for TIBOQuery and TIBOTable
components.
Added the ability to right click in the Query editor's list of tables to
optionally include or exclude views and stored procedures.
I increased the internal margin for text inside of the TIB_Grid control so
that there is a little more white surrounding the text. This should improve
the readability of the grid considerably. Especially when the grid is full
of text.
Enjoy!
Jason Wharton
CPS - Mesa AZ
http://www.ibobjects.com