• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1218
  • Last Modified:

Delphi 7 :: TADOQuery OnAfterScroll Error with parameters

Dear Experts,

I have 2 TDBGrid components.
The 1st one must display master table records and the second one displays detail table records
for the selected row in the master table.
qOrders = Master Query
qParts = Detail Query.

On qOrders' OnAfterScroll event I have the following code:
**** PS: See code snippet.

When my application starts up I receives and error:
"EDatabaseError with message 'qParts: Parameter 'POrderNumber' not found'...."
This parameter does exist and when I click the error message away the application starts up and
when scrolling through the master dbgrid the code is working 100%. It is only when the app starts up when I receive this error. After that, it is working as expected.

What can possible be wrong?

Please help.
procedure TPickingListFrame.qOrdersAfterScroll(DataSet: TDataSet);
begin
  inherited;
  If qOrders.IsEmpty then Exit;
 
  qParts.Close;
  qParts.SQL.Clear;
  qParts.SQL.Text := 'SELECT POrderNumber, ItemNumber, ItemDescription, Qty FROM tblCallOff WHERE '+
    '(POrderNumber = :POrderNumber) AND (Deleted = :Deleted) ORDER BY ItemNumber';
  qParts.Parameters.ParamByName('POrderNumber').Value := qOrders.FieldByName('POrderNumber').AsString;
  qParts.Parameters.ParamByName('Deleted').Value := 0;
  qParts.Open;
end;

Open in new window

0
Marius0188
Asked:
Marius0188
  • 3
  • 3
  • 2
  • +2
1 Solution
 
kretzschmarCommented:
ensure, that the ParamCheck-property of the TAdoQuery is set to true

meikl ;-)
0
 
kretzschmarCommented:
in case that the sql don't change during runtime (except the parameterValues),
you could simple close, set the parameter and open again
(a clear and new set of the sql is not needed then)
(would be also raise the performance)

meikl ;-)
0
 
JeePeeTeeCommented:
Is your DBConnection and your qOrders/qPart opened at designtime? Close them before you launch you application.
0
Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
diniludCommented:
are you sure the error from "qOrdersAfterScroll" event
0
 
diniludCommented:
Change component creation order of these two components.
(qOrders,qParts)
0
 
diniludCommented:
Set Active property of qOrders equal to false. then open this dataset in the "formcreate" event.




procedure TPickingListFrame.FormCreate(Sender: TObject);
begin
   qOrders.Open;
end;
0
 
JeePeeTeeCommented:
Don't open on TPickingListFrame.FormCreate(Sender: TObject). Open during TPickingListFrame.FormShow(....

This will by-pass creation order issues as well.
0
 
developmentguruCommented:
With my own testing I verified your results.  I also discovered that having an active TADOConnection (referenced by the ADOQuery) corrected the situation.

Let me know if you need more.
0
 
kretzschmarCommented:
as the questioner itself didn't response to any comment which wass done, so that any advice due lack of feedback could be/ could not be right, i would recommend to delete this question

meikl ;-)
0
 
Computer101Commented:
Forced accept.

Computer101
EE Admin
0

Featured Post

Technology Partners: We Want Your Opinion!

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

  • 3
  • 3
  • 2
  • +2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now