델파이초보인데요.
Table을 이용해서 DBgrid로 뿌려주는건 쉬운데
아래처럼 Tquery를 이용해서 두 테이블에 있는 데이터를 한번에 쿼리해서 그리드에
뿌려줄때, query 사용법을 잘 모르겠습니다.
Tquery 생성후 Datasource를 생성할때와 반대순서로 생성할때와
오브젝 인스펙터에서 설정하는 게 달라지는데 그 이유도 모르겠습니다.
즉, Datasource를 먼저생성하면 Tquery 의 인스펙터중 Datasource 는 따로 설정해 줄 필요가 없는것인지.. 그렇다면 다음과 같이 코드로 Datasource를 따로 설정해 주어야하는것인지 모르겠습니다.
query1.sql.text := 'select officename,stationname,stationcode from officetable,stationtable ';
query1.Datasource := DataSource1; //의문의 부분..
query1.active:=true;
query1.Open;
DBNavigator1.DataSource := DataSource1;
DBGrid1.DataSource:= DataSource1;
> 델파이초보인데요.
> Table을 이용해서 DBgrid로 뿌려주는건 쉬운데
> 아래처럼 Tquery를 이용해서 두 테이블에 있는 데이터를 한번에 쿼리해서 그리드에
> 뿌려줄때, query 사용법을 잘 모르겠습니다.
> Tquery 생성후 Datasource를 생성할때와 반대순서로 생성할때와
> 오브젝 인스펙터에서 설정하는 게 달라지는데 그 이유도 모르겠습니다.
> 즉, Datasource를 먼저생성하면 Tquery 의 인스펙터중 Datasource 는 따로 설정해 줄 필요가 없는것인지.. 그렇다면 다음과 같이 코드로 Datasource를 따로 설정해 주어야하는것인지 모르겠습니다.
>
> query1.sql.text := 'select officename,stationname,stationcode from officetable,stationtable ';
> query1.Datasource := DataSource1;
=> 오브젝트 인스펙터에서 설정해 주면됨..여기선 설정할 필요 없음.
> query1.active:=true;
=> 이것도 필요 없음.
> query1.Open;
=> 이부분을 아래처럼
> DBNavigator1.DataSource := DataSource1;
> DBGrid1.DataSource:= DataSource1;
=> 위에 두부분도 오브젝트 인스펙트에서 설정 해주고 코딩으로 할 필요 없음.
with query1 do
begin
close;
sql.clear;
sql.add('select 테이블.필드명, 테이블.필드명..... from 테이블, 테이블...');
open;
end;
혹시 동적으로 쿼리와 데이타소스를 생성해주면 다르겠지만,
이미 폼에 만들어 놓았다면....
그라고 두테이블을 조인해서 특정 데이타를 출력을 하는건지
아님 그냥 단순히 두테이블에 있는 데이터를 출력하는 건지..?
만약 조인한다면
with query1 do
begin
close;
sql.clear;
sql.add('select 테이블1.필드명, 테이블2.필드명..... from 테이블1, 테이블2...');
sql.add('where 테이블1.필드명 = 테이블2.필드명');
open;
end;
이때 테이블1 과 테이블2의 필드명은 같은 거 겠죠...^^