Q&A

  • dbgrid에서 임시적인 column생성 후 editing
Query 콤포넌트와 DBGrid콤포넌트를 사용하여

자료를 조회한 후 ( SQL문은 프로그램 실행 중 생성함)

DBGrid에서 임시적인 컬럼을 생성하여 임시 컬럼을 Editing

할 수 있는지요 ?

단 임시로 생성하는 컬럼은 DB의 테이블과 무관하여야 하며

(VB, PB, SQL_WINDOWS는 가능함)

SQL문은 프로그램 실행시 동적으로 생성 시켰습니다.



SQL:

select a.a1, a.a2, b.b1, b.b2 ===> 컬럼 4개

from tab a left outer jion tab b

on b.b1 = a.b1

where a.a1 like "X%";



DBGrid:

header <= a1 a2 b1 b2 Temp

1 행자료 a1010 AAAA a1010 CCCC ----

2 행자료 a1020 BBBB a1020 DDDD ----





Q: Temp 컬럼에 자료를 입력할 수 있을 까요?



DBGrid에서 컬럼Edit를 이용하면 화면에 임시적인 컬럼이 생성은

되나 Edit가 되지 않더라구요 ...



2  COMMENTS
  • Profile
    신호성 1999.06.22 21:43
    김영규 께서 말씀하시기를...

    > Query 콤포넌트와 DBGrid콤포넌트를 사용하여

    > 자료를 조회한 후 ( SQL문은 프로그램 실행 중 생성함)

    > DBGrid에서 임시적인 컬럼을 생성하여 임시 컬럼을 Editing

    > 할 수 있는지요 ?

    > 단 임시로 생성하는 컬럼은 DB의 테이블과 무관하여야 하며

    > (VB, PB, SQL_WINDOWS는 가능함)

    > SQL문은 프로그램 실행시 동적으로 생성 시켰습니다.

    >

    > SQL:

    > select a.a1, a.a2, b.b1, b.b2 ===> 컬럼 4개

    > from tab a left outer jion tab b

    > on b.b1 = a.b1

    > where a.a1 like "X%";

    >

    > DBGrid:

    > header <= a1 a2 b1 b2 Temp

    > 1 행자료 a1010 AAAA a1010 CCCC ----

    > 2 행자료 a1020 BBBB a1020 DDDD ----

    >

    >

    > Q: Temp 컬럼에 자료를 입력할 수 있을 까요?

    >

    > DBGrid에서 컬럼Edit를 이용하면 화면에 임시적인 컬럼이 생성은

    > 되나 Edit가 되지 않더라구요 ...

    >



    VB, PB, SQL_WINDOWS에서 가능한데 델파이에서 할수 없다면 자존심 문제지요.



    DBGrid의 컬럼Edit를 사용하시면 안됩니다.

    DBGrid의 모든 컬럼을 삭제하고 Query에서 Select시 임의 컬럼(Field)를 만드시면 원하는 결과를 얻을 수 있습니다.

    어떤 DataBase를 사용하느냐에 따라 표현방법은 틀리겠지만 제가아는 파라독스와 SQL Server를 예로 들겠습니다.



    파라독스의경우



    SQL:

    select a.a1, a.a2, b.b1, b.b2 , ' ' temp

    from tab a left outer jion tab b

    on b.b1 = a.b1

    where a.a1 like "X%";



    공백의 개수는 문자열의 길이만큼, 변환함수가 있었으면 좋겠는데 파라독스를 잘 모르기 때문에 위 방법을 사용하였음.





    MS-SQL Server



    SQL:

    select a.a1, a.a2, b.b1, b.b2 , temp = CONVERT(CHAR(10),'')

    from tab a left outer jion tab b

    on b.b1 = a.b1

    where a.a1 like "X%";



    위와 같이 하면 DBGrid에 Temp컬럼이 만들어지고 편집가능합니다.



    다른 방법도 있을겁니다. 제가 모를뿐이지요.

















  • Profile
    류동균 1999.06.22 08:08
    김영규 께서 말씀하시기를...

    > Query 콤포넌트와 DBGrid콤포넌트를 사용하여

    > 자료를 조회한 후 ( SQL문은 프로그램 실행 중 생성함)

    > DBGrid에서 임시적인 컬럼을 생성하여 임시 컬럼을 Editing

    > 할 수 있는지요 ?

    > 단 임시로 생성하는 컬럼은 DB의 테이블과 무관하여야 하며

    > (VB, PB, SQL_WINDOWS는 가능함)

    > SQL문은 프로그램 실행시 동적으로 생성 시켰습니다.

    >

    > SQL:

    > select a.a1, a.a2, b.b1, b.b2 ===> 컬럼 4개

    > from tab a left outer jion tab b

    > on b.b1 = a.b1

    > where a.a1 like "X%";

    >

    > DBGrid:

    > header <= a1 a2 b1 b2 Temp

    > 1 행자료 a1010 AAAA a1010 CCCC ----

    > 2 행자료 a1020 BBBB a1020 DDDD ----

    >

    >

    > Q: Temp 컬럼에 자료를 입력할 수 있을 까요?

    >

    > DBGrid에서 컬럼Edit를 이용하면 화면에 임시적인 컬럼이 생성은

    > 되나 Edit가 되지 않더라구요 ...

    > --------------------------

    결론부터 말씀을 드리자면 불가능합니다.

    컬럼Edit를이용해 New Field를 생성하셨나본데, 그때 생성되는 Field는

    3가지로 1.Data Field:자신의 테이블에 있는 필드, 2.Calculated Field:

    자신의 테이블에 있는 특정필드의 값을 이용하여 계산하여 넣을수 있는 필드

    (이때는 OnCalculated 이벤트에 코딩으로 값을 정해줍니다),

    3.Lookup Field:자신의 테이블에 있는 특정필드와 다른 테이블의 특정필드를

    서로 연계하여 (Key or Index를 이용하여) 다른 데이블의 필드값을 가져오는

    필드.

    그러므로 이 3가지 필드 외에는 존재하지 않으므로 테이블에 존재하지 않은

    필드에는 값을 넣을수가 없습니다.

    그래도 굳이 필요하다면 임시 테이블을 만들어서 그 임시테이블과 조인하여

    임시 테이블에 특정 필드에 값을 넣는수 밖에 없습니다.

    죄송합니다. 참고가 되었으면 좋겠습니다. 그럼 ^_^.