Q&A

  • (query 사용시..) 초보를 구해주세요
델파이초보인데요.

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;

3  COMMENTS
  • Profile
    Webcome 2001.01.16 01:46
    임소영 wrote:

    > 델파이초보인데요.

    > 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의 필드명은 같은 거 겠죠...^^

  • Profile
    임소영 2001.01.16 02:48
    답변감사합니다만 더 여쭤보아도..되겠져?

    한 폼에서 하나의 그리드에 여러개의 Tquery를 사용하는 형태입니다.

    그래서 오브젝트인스펙터에서설정해 주는건 아는데 여러 이벤트가 있어야 하므로 그렇게 해주었구요.

    글구.. 조인해서 특정한값을 얻는게 아니구 그냥 두 테이블에있는 값중 하나씩 가지고 온다고 생각하시면 됩니다.

    그런데 에러는 나지 않는데 그리드에 필드명만 찍히고 데이터가 찍히지 않아서여

    여쭤보는 거지요..^^*

    도대체 왜그럴까요?





    Webcome wrote:

    > 임소영 wrote:

    > > 델파이초보인데요.

    > > 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의 필드명은 같은 거 겠죠...^^

  • Profile
    Umpro 2001.01.16 06:35
    안녕 하세요.

    도움이 될지 모르겠지만 ....



    query1.sql.text := 'select officename,stationname,stationcode from

    officetable,stationtable ';

    query1.Datasource := DataSource1;



    DataSource1.DataSet := query1 <========저는 이렇게 하는데요.



    여러 Query를 사용한다면 DataSourc 도 여러개인지 한개인지 모르지만

    그리드는 한개 일 것이고 그 그리드와 DataSourc 의 연결은 인스펙터에서 하시고

    Query를 Open 하기전 DataSource1 의 DataSet을 연결하면 잘 보일 것 입니다.

    필드명은 보이는데 데이타가 안 보인다.....????

    혹시 다든 Query를 Open 하고 그것을 연결한것이 아닐까요....

    잘 풀어보세요 분명히 풀릴 것 입니다.