Q&A

  • [질문] combobox 의 값을 선택해서 스트링그리드에 뿌려주고 싶은데요...
ComboBox 의 값을 선택하고 "조회"를 클릭하면 ComboBox 의 코드값의 조건에 맞는 결과가 StringGrid 에 뿌려지게 하고싶은데요...  방법좀 자세히 설명해 주세요. (코딩... ^^;;)

-. 테이블 : C05_CODE   ,  C06_NAME
-. 필드명 : C05_LOWXCO  ( VARCHAR  2 ) .  01 , 02
                   C05_APPLNO  ( VARCHAR   4 )
                   C05_DATEAA   ( VARCHAR   8 )
                   C05_STATGU  ( VARCHAR   2 )

                   C06_LOWXCO  ( VARCHAR 2 ) .  01 , 02
                   C06_LOWXMM  ( VARCHAR 8 ) .  01 = 개인 ,  02 = 커플
-. 콤보1   : 전체 ,  개인 ,  커플          

procedure  TfrmMain.FormShow(Sender : TObject) ;
begin
         ComboBox1.Clear   ;
         ComboBox1.Items.Add ( '전체' ) ;
         ComboBox1.Items.Add ( '개인' ) ;
         ComboBox1.Items.Add ( '커플' ) ;
         ComboBox1.ItemIndex   :=  0   ;
end ;

procedure TfrmMain.btnSearchClick(Sender : TObject) ;
var
    Row     :   Integer   ;
    MSQL  :   String     ;
begin
     with    DM.COM_DM.ADOQuery1     do
           begin
                   MSQL   :=   ' '           ;
                   MSQL   :=  MSQL   +  #13   +   'SELECT   C05_APPLNO  , C05_DATEDD  , C05_STATGU '  ;
                   MSQL   :=  MSQL   +  #13   +   'FROM       C05_CODE   Left   Outer   Join   C06_NAME   On   C05_LOWXCO  =  C06_LOWXCO ' ;
                   MSQL   :=  MSQL   + #13   +   'WHERE   FORMAT ( ' C05_LOWXCO  =  ''%S''  ', [ComboBox1.Items.Strings[ComboBox1.ItemIndex ] ] ) ;
                  
                    Close   ;
                    SQL.Clear   ;
                    SQL.Text   :=   MSQL   ;
                    Open   ;

                    while   not    Eof   do
                            begin
                                     StringGrid1.Cells [ 00 , Row  + 1 ]    :=   ' '     ;
                                     StringGrid1.Cells [ 01 , Row  + 1 ]    :=   Fields[00].AsString   ;
                                     StringGrid1.Cells [ 02 , Row  + 1 ]    :=   Fields[01].AsString   ;
                                     StringGrid1.Cells [ 03 , Row  + 1 ]    :=   Fields[02].AsString   ;    
                                     Row   :=  Row  + 1  ;
                                     StringGrid1.RowCount      :=   Row  + 1    ;
                                     Next      ;
                                     Application.ProcessMessages  ;
                           end ;
            end ;
end ;

이렇게 하면 다들 아시겠지만 조건값이 맞게 넘어가지 않아서인지 검색이 안됩니다.
그래서 ComboBox1.Items.Add ( '01' ) ;  
// 개인으로 넣고 검색하고 싶은데 그렇게 안되서 코드값으로 하게되면 결과는 나오지만 ComboBox1 의 값이 "개인" 이 아닌 '01' 로 표기됩니다.  위 콤보를 "01" 이 아닌 "전체 , 개인 , 커플" 이렇게 넣고 검색할 수 있게 코딩좀 도와주세요.

저와 비슷한 경우를 찾기위해 combobox 로 검색해봐도 잘 모르겠어서요... 직접적인 질문을 하게되었습니다.
      
1  COMMENTS
  • Profile
    최용일 2010.11.19 04:53

    MSQL := MSQL + #13 + 'FROM C05_CODE Left Outer Join C06_NAME On C05_LOWXCO = C06_LOWXCO ' ;
    if ComboBox1.ItemIndex > 0 then
    MSQL := MSQL + #13 + 'WHERE C05_LOWXCO = ' + FormatFloat('00', ComboBox1.ItemIndex );