|
간단하게는 where 절 용 String 변수를 둬서 Length 가 0 보다 크면 AND 를 붙여주면 되겠네요.
sky 님이 쓰신 글 :
: 우선 제가 짠 코드 보시죠.....
:
: AnsiString MODEL = ComboBox9->Items->Strings[ComboBox9->ItemIndex];
: AnsiString Serial = ComboBox6->Items->Strings[ComboBox6->ItemIndex];
: AnsiString Machine_Name = ComboBox8->Items->Strings[ComboBox8->ItemIndex];
:
:
: AnsiString Query1 = "MODEL";
: AnsiString Query2 = "Serial";
: AnsiString Query3 = "고객사_일련No";
:
: ADOQuery1->SQL->Clear();
:
: switch(ComboBox1->ItemIndex)
: {
: case 0:
: ADOQuery1->SQL->Add("select * from SEC_S_LSI_Logic_Power_CSR");
:
: if(ComboBox9->ItemIndex != -1)
: ADOQuery1->SQL->Add("where " + Query1 + " LIKE '" + MODEL + "%'");
:
: if(ComboBox6->ItemIndex != -1)
: ADOQuery1->SQL->Add("where " + Query2 + " LIKE '" + Serial + "%'");
:
: if(ComboBox8->ItemIndex != -1)
: ADOQuery1->SQL->Add("where " + Query3 + " LIKE '" + Machine_Name + "%'");
:
: // ADOQuery1->SQL->Add("where " + Query2 + " LIKE '" + Machine_Name + "%'");
: // ADOQuery1->SQL->Text = "select * from samsung where 설비명 = LPP";
:
: ADOQuery1->Open();
:
: break;
:
: 검색기능을 만드는 중인데요.
:
: 쿼리로 테이블을 불러와서 where, like로 검색을 하는겁니다.
:
: 콤보박스는 3개가 있구요. 각각의 콤보박스에는 SEC_S_LSI_Logic_Power_CSR 이라는 테이블의
:
: MODEL, Serial, 고객사_일련No 라는 3개의 필드의 모든 항목이 리스트로 들어가 있습니다.
:
: 제가 짠 코드를 보시면 각각의 콤보박스에서 리스트를 선택하면 if문이 실행되어 검색기능을 수행하는걸 알수 있을겁니다.
:
: 그런데 제가 짠 코드를 보시면 문제가.. 콤보박스9 에서 리스트를 선택하고, 콤보박스6을 선택하면 sql의 add문에 의해서 "SEC_S_LSI_Logic_Power_CSR 이라는 sql문에 콤보박스9에 의한 add문이 추가되고 거기에 콤보박스6에 의한 add문이 추가되어 전체적으로
: SEC_S_LSI_Logic_Power_CSR "where " + Query1 + " LIKE '" + MODEL + "%'" "where " + Query2 + " LIKE '" + Serial + "%'" 이라는 말도 안되는 sql문이 생성된다는거죠.
:
: 당연히 에러가 나구요.
:
: 제가 원하는 검색기능은 콤보박스9에서만 리스트를 선택하면 콤보박스9에 의한 검색기능만 실행되고
: 콤보박스9에 콤보박스6을 추가로 선택하면 콤보박스9와 콤보박스6의 조건을 동시에 만족하는 결과값을 검색으로 뽑아내는건데요.
:
: 잘 모르겠습니다.
:
: 혹시 방법을 아시는분은 도움좀 주시면 감사하겠습니다....
|