Solved

afterscroll queery

Posted on 2007-03-20
6
239 Views
Last Modified: 2010-04-05
I have 3 tables.'Companies','Subcompanies' and 'Workers'

1st one :
CompanyID
CompanyName

second :
CompanyID
SubcompanyID
SubcompanyName

Third :
CompanyID
SubcompanyID
WorkerID
Workername


On afterscroll of the 1st table
with ABSQuery1 do
 begin
   Close;
   if ABSTable1.FieldByName('CompanyID').AsString <> '' then
   begin
   SQL.Text:= 'select * from Subcompanies where CompanyID = ' +
       ABSTable1.FieldByName('CompanyID').AsString;
        Open;
     end;
 end;

However now I need to have workers displayed.
I want displayed only those who's CompanyID and SubcompanyID match.
That means another queery on afterscroll of the first ABSQueery1.
How is the sql supposed to look like ??
0
Comment
Question by:Vrtnar
  • 4
6 Comments
 
LVL 21

Expert Comment

by:ziolko
ID: 18756133
select * from workers where CompanyID = value_selected_in1table AND SubcompanyID = value_selected_in2table

ziolko.
0
 
LVL 6

Expert Comment

by:bokist
ID: 18756191
Hi vrtnar !

Try this way:

 if ABSTable1.FieldByName('CompanyID').AsString <> '' then
   begin
   Sql.Clear;
   Sql.add('select c.companyId, companyName, s.subcompanyId, subcompanyName, workerId, Workername');  
   Sql.add('  from companies c,  subcompanies s, workers w');
   Sql.add('where c.companyId = :co');
   Sql.add('    and c.companyId = s.companyId');
   Sql.add('    and s.companyId = w.companyId');
   Sql.add('    and s.subcompanyId = w.subcompanyId');
   Parambyname('co').asstring := ABSTable1.FieldByName('CompanyID').AsString;
   Open;

Not tested, just from head!!

regards
  steve


   
0
 

Author Comment

by:Vrtnar
ID: 18756286
if ABSQuery1.FieldByName('SubcompanyID').AsString <> '' then
   begin
   SQL.Text:= 'select * from workers  where companyID = ABSTable1.FieldByName('companyID').AsString AND ABSQuery1.FieldByName('SubcompanyID').AsString  ;

I get :
[Error] Unit1.pas(191): Missing operator or semicolon
[Error] Unit1.pas(192): Expression expected but 'AND' found
[Error] Unit1.pas(192): Unterminated string
[Error] Unit1.pas(193): Missing operator or semicolon
[Error] Unit1.pas(317): Statement expected but 'PROCEDURE' found
[Fatal Error] Project1.dpr(8): Could not compile used unit 'Unit1.pas'
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 21

Accepted Solution

by:
ziolko earned 125 total points
ID: 18756332
SQL.Text:= 'select * from workers  where companyID = ' + ABSTable1.FieldByName('companyID').AsString + ' AND SubcompanyID = ' +ABSQuery1.FieldByName('SubcompanyID').AsString

ziolko.
0
 
LVL 21

Expert Comment

by:ziolko
ID: 18756339
...or

SQL.Text := Format('select * from workers where CompanyId=%d and SubCompanyID=%d', [ABSTable1.FieldByName('companyID').AsInteger, ABSQuery1.FieldByName('SubcompanyID').AsInteger]);

ziolko.
0
 
LVL 21

Expert Comment

by:ziolko
ID: 18756376
btw. cursor position in ABSTable and ABSQuery doesn't correspond with index of record selected in DBGrid or any other component that you use to display data, go to Demos folder and look for Master/Detail sample

ziolko.
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Have you ever had your Delphi form/application just hanging while waiting for data to load? This is the article to read if you want to learn some things about adding threads for data loading in the background. First, I'll setup a general applica…
Hello everybody This Article will show you how to validate number with TEdit control, What's the TEdit control? TEdit is a standard Windows edit control on a form, it allows to user to write, read and copy/paste single line of text. Usua…
Along with being a a promotional video for my three-day Annielytics Dashboard Seminor, this Micro Tutorial is an intro to Google Analytics API data.
Learn how to create flexible layouts using relative units in CSS.  New relative units added in CSS3 include vw(viewports width), vh(viewports height), vmin(minimum of viewports height and width), and vmax (maximum of viewports height and width).

910 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

23 Experts available now in Live!

Get 1:1 Help Now