Solved

Delphi 7 :: TADOQuery OnAfterScroll Error with parameters

Posted on 2007-11-27
12
1,196 Views
Last Modified: 2013-11-23
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
Comment
Question by:Marius0188
  • 3
  • 3
  • 2
  • +2
12 Comments
 
LVL 27

Expert Comment

by:kretzschmar
Comment Utility
ensure, that the ParamCheck-property of the TAdoQuery is set to true

meikl ;-)
0
 
LVL 27

Expert Comment

by:kretzschmar
Comment Utility
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
 
LVL 4

Expert Comment

by:JeePeeTee
Comment Utility
Is your DBConnection and your qOrders/qPart opened at designtime? Close them before you launch you application.
0
 
LVL 10

Expert Comment

by:dinilud
Comment Utility
are you sure the error from "qOrdersAfterScroll" event
0
 
LVL 10

Expert Comment

by:dinilud
Comment Utility
Change component creation order of these two components.
(qOrders,qParts)
0
How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

 
LVL 10

Expert Comment

by:dinilud
Comment Utility
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
 
LVL 4

Expert Comment

by:JeePeeTee
Comment Utility
Don't open on TPickingListFrame.FormCreate(Sender: TObject). Open during TPickingListFrame.FormShow(....

This will by-pass creation order issues as well.
0
 
LVL 21

Accepted Solution

by:
developmentguru earned 500 total points
Comment Utility
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
 
LVL 27

Expert Comment

by:kretzschmar
Comment Utility
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
 
LVL 1

Expert Comment

by:Computer101
Comment Utility
Forced accept.

Computer101
EE Admin
0

Featured Post

How your wiki can always stay up-to-date

Quip doubles as a “living” wiki and a project management tool that evolves with your organization. As you finish projects in Quip, the work remains, easily accessible to all team members, new and old.
- Increase transparency
- Onboard new hires faster
- Access from mobile/offline

Join & Write a Comment

Suggested Solutions

This article explains how to create forms/units independent of other forms/units object names in a delphi project. Have you ever created a form for user input in a Delphi project and then had the need to have that same form in a other Delphi proj…
In this tutorial I will show you how to use the Windows Speech API in Delphi. I will only cover basic functions such as text to speech and controlling the speed of the speech. SAPI Installation First you need to install the SAPI type library, th…
Sending a Secure fax is easy with eFax Corporate (http://www.enterprise.efax.com). First, Just open a new email message.  In the To field, type your recipient's fax number @efaxsend.com. You can even send a secure international fax — just include t…
In this tutorial you'll learn about bandwidth monitoring with flows and packet sniffing with our network monitoring solution PRTG Network Monitor (https://www.paessler.com/prtg). If you're interested in additional methods for monitoring bandwidt…

743 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

19 Experts available now in Live!

Get 1:1 Help Now