Subject Re: [IBO] TIBODataset Problem with M/D
Author hans
Hello Jason

After reading about the possible After event problem in TIBODataset I hooked
an AfterScroll event on my lowest Detail table in my Test. About 5 M/D
levels deep and found it firing every time any of the masters brought in new
records for the lowest detail or on row focus changes in the Detail itself..

I wonder what could be different ?

Best Regards
Hans

-------------------------------------------------------------------------
----- Original Message -----
From: "Jason Wharton" <jwharton@...>
To: <IBObjects@yahoogroups.com>
Sent: Monday, January 13, 2003 4:59 PM
Subject: Re: [IBO] TIBODataset Problem with M/D


| Thanks, this will be in the next sub-release.
|
| Jason Wharton
| CPS - Mesa AZ
| http://www.ibobjects.com
|
| -- We may not have it all together --
| -- But together we have it all --
|
|
| ----- Original Message -----
| From: "hans" <hans@...>
| To: <ibobjects@yahoogroups.com>
| Sent: Saturday, January 11, 2003 8:08 PM
| Subject: [IBO] TIBODataset Problem with M/D
|
|
| > Hello Jason,
| >
| > I found a problem in TIBODataset with M/D.
| >
| > Linked Detail fields of ftLargeInt (Decimal(18,0) are not or properly
| > populated in the Detail records upon a Detail Append or Insert.
| >
| > I found a simple code change to IBODataset.pas solves this problem.
| >
| > ==================================
| >
| > procedure TIBODataset.GetValuesFromMaster;
| > var
| > ii: integer;
| > tmpField: TField;
| > NewField: TField;
| > tmpDataset: TDataset;
| > tmpCol: TIB_Column;
| > begin
| > if Assigned(FDataLink.DataSource) then
| > begin
| > tmpDataset := FDataLink.DataSource.Dataset;
| > if Assigned(tmpDataset) then
| > if tmpDataset.Active and (tmpDataset.State <> dsSetKey) then
| > begin
| > with InternalDataset.Params do
| > for ii := 0 to InternalDataset.Params.ColumnCount - 1 do
| > begin
| > tmpCol := InternalDataset.Params.Columns[ii];
| > tmpField := tmpDataset.FindField(tmpCol.FieldName);
| >
| > if Assigned(tmpField) then
| > begin
| > NewField := Self.FindField(tmpCol.FieldName);
| > if Assigned(NewField) and NewField.IsNull then
| > begin
| >
| > //---- Hans added
| >
| > {$IFDEF IBO_VCL40_OR_GREATER}
| > if NewField.DataType = ftLargeInt then
| > NewField.AssTring := tmpField.AsString
| > else
| > {$ENDIF}
| > //-----
| > NewField.Assign(tmpField)
| >
| > end;
| > end;
| > end;
| > end;
| > end;
| > end;
| >
| > ============================
| >
| > I hope my code change is acceptable
| >
| > Best Regards
| > Hans
|
|
|
|
|
___________________________________________________________________________
| IB Objects - direct, complete, custom connectivity to Firebird or
InterBase
| without the need for BDE, ODBC or any other layer.
|
___________________________________________________________________________
| http://www.ibobjects.com - your IBO community resource for Tech Info
papers,
| keyword-searchable FAQ, community code contributions and more !
|
| Your use of Yahoo! Groups is subject to http://docs.yahoo.com/info/terms/
|
|
|