Subject AW: [IBO] New sub-release 3.6 Ca
Author Heinz Morandell
Jason,

there are still problems with the correct IN () syntax.

Something like
column IN (2418,2419,2420)
gets parsed to
column IN (2418.2419.2420)

because the commas are interpreted as the
DecimalSeparator (at least here in Germany) and then converted into points
in
procedure ProcessItem().

Also there are extra commas added into the filter in ExtractFilterClause().
I've already figured out the fix:

if UpperCase( AOper ) = 'IN' then
begin
if tmpStr = '(' then
AItem := '( '
else
raise EIB_Error.Create( 'Invalid Filter syntax: IN()' );
tmpStr := GetNextToken( AFilter, false );
while Length( AFilter ) > 0 do
begin
ProcessExpr( tmpStr );
// AItem := AItem + ', ' + tmpStr;
AItem := AItem + tmpStr; // <----
tmpStr := GetNextToken( AFilter, false );
if tmpStr = ')' then
Break;
end;
if tmpStr = ')' then
AItem := AItem + ' )'
else
raise EIB_Error.Create( 'Invalid Filter syntax: IN()' );


Heinz Morandell


> -----Ursprungliche Nachricht-----
> Von: Jason Wharton [mailto:jwharton@...]
> Gesendet: Freitag, 8. Dezember 2000 22:31
> An: IBObjects@egroups.com
> Betreff: [IBO] New sub-release 3.6 Ca
>
>
> 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
>
>
>
>
> -------------------------- eGroups Sponsor
> -------------------------~-~>
> eGroups eLerts
> It's Easy. It's Fun. Best of All, it's Free!
> http://click.egroups.com/1/9698/1/_/685810/_/976311443/
> --------------------------------------------------------------
> -------_->
>
>
>