Subject Re: [IBO] onpreparesql & odd behaviour
Author Daniel Rail
Forgot to mention, I'm using Delphi 5 Enterprise and IBO 4.2Gc.

Daniel Rail

At 27/06/2002 05:06 PM, you wrote:
>At 27/06/2002 03:37 PM, you wrote:
> >heres the relevant code fragments
> >
> >FQueryList is declared in the classes protected section
> >
> >//datamodule.create
> >var
> > I : Integer;
> > M : TMethod;
> >begin
> >
> > FQueryList := TStringList.Create;
> >
> > for I:=0 to ComponentCount -1 do
> > begin
> > if(Components[I] is TIBODataSet)then
> > begin
> > if IsPublishedProp(Components[I], 'OnPrepareSql') then
> > begin
> > M.Code := MethodAddress('QueryOnPrepareSql');
> > if Assigned(M.Code) then
> > SetMethodProp(Components[I], 'OnPrepareSql', M );
> > end; // OnPrepareSql
> >
> >
> >& heres the onpreparesql
> >procedure TDataSetDM.QueryOnPrepareSql(Sender : TObject);
> >begin
> > TIBOQuery(Sender).SQLWhereItems.AddStrings(FQueryList);
> > FQueryList.Clear;
> >end;
> >
> >no rocket science here.....
>
>You are right the code is straight forward. And I can confirm the error,
>and it only happens if you assign the method to the event in run-time. I
>even tried with only 1 TIBOQuery on the datamodule, the same error
>occurs. An error(EAccessViolation) occurs when using TIB_Query with the
>same code adapted for TIB_Query. The EAccessViolation error occurs when
>trying to add to SQLWhereItems. For TIBOQuery, I was able to isolate the
>error occurring when it's trying to make reference to
>InternalDataset.SQLWhereItems. In the case for TIB_Query, the error occurs
>as soon as you try to reference SQLWhereItems.
>
>Unfortunately, I don't have a solution at the moment for you. Maybe,
>someone else might have an idea.
>
>Jason, if you want, I can send you a small test app, so you could see for
>yourself.
>
>
>Daniel Rail
>Senior System Engineer
>ACCRA Group Inc. (www.accra.ca)
>ACCRA Med Software Inc. (www.accramed.ca)