안녕하세요...
전... 델파이 시작한지 얼마 안돼는 학생인데요...
한가지만 물어 볼께요...
고수분들 넘 쉬운거라고 욕하지 마시길...이렇게 질문하는 저도 미치겠습니다...
다름이 아니라...
검색을 하려고 하는데... 에디트를 써서 검색란을 만들고 엔터키를 치면 검색가능하게 되는 건데요...
RadioGroup을 써서 두가지를 검색해야하는데...
첨것은 검색이 되는데... 그 다음것은 안되는군요...
그래서.. 도움을 청합니다...
도와주세요....
코딩도 넣어 주시면 고맙겠습니다...
그럼 좋은 하루 되시구요...
담에 또 신세 지겠습니다...
그럼 꾸벅!
> 안녕하세요...
> 전... 델파이 시작한지 얼마 안돼는 학생인데요...
> 한가지만 물어 볼께요...
> 고수분들 넘 쉬운거라고 욕하지 마시길...이렇게 질문하는 저도 미치겠습니다...
> 다름이 아니라...
> 검색을 하려고 하는데... 에디트를 써서 검색란을 만들고 엔터키를 치면 검색가능하게 되는 건데요...
> RadioGroup을 써서 두가지를 검색해야하는데...
> 첨것은 검색이 되는데... 그 다음것은 안되는군요...
> 그래서.. 도움을 청합니다...
> 도와주세요....
> 코딩도 넣어 주시면 고맙겠습니다...
> 그럼 좋은 하루 되시구요...
> 담에 또 신세 지겠습니다...
> 그럼 꾸벅!
다음과 같은 방법으로 sql문을 확인하시면 문제의 원인을 알수 있습니다.
showmessage(Query1.sql.text) ;
아래의 예제는 교수 ID 혹은 교수성명으로 LIKE연산자를 이용해서 찾는 예
제입니다. 도움되시길..
ex)
procedure Tfrm_115.edt_id_search_p1Enter(Sender: TObject);
begin
// 1. 교수정보관리 화면에서 검색을 하려고 할때 입력란을 초기화 한다
// => SET_CLEAR
flag_professor_p1 := 2 ;
SET_BUTTON ( btn_insert_p1 , False
, btn_update_p1 , False
, btn_delete_p1 , False ) ;
edt_name_search_p1.Text := '';
edt_id_search_p1.Text := '';
SET_CLEAR ;
end;
procedure Tfrm_115.edt_id_search_p1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
// 1. 교수정보관리 화면에서 교수를 검색한다
// => GETQUERY_PROFESSOR
if key = 13 then
begin
GETQUERY_PROFESSOR (qry_professor_p1, edt_id_search_p1 , 'A.ID' , edt_name_search_p1 , 'A.NAME' ) ;
if qry_professor_p1.RecordCount = 0 then
begin
Application.MessageBox ( '조건에 해당하는 교수가 없습니다' , '알림' ,MB_OK ) ;
btn_tech_info_excel.Enabled := false;
end
else
btn_tech_info_excel.Enabled := true;
end ;
end;
// =============================================================================
procedure Tfrm_115.GETQUERY_PROFESSOR ( VAR QRY : TQUERY ;
VAR EDT_ID : TEDIT ;
S_ID : STRING ;
VAR EDT_NAME : TEDIT ;
S_NAME : STRING ) ;
var
s_q : String ;
i : Integer ;
j : Integer ;
begin
// 1. 교수정보를 ID,성명을 검색하여 질의를 실행한다
// => SQL문의 구조로서는 조건절(ID,성명검색이 가능하게끔 2줄이 공백이어야 한다)다음에
// 'GROUP BY' , 'ORDER BY' 라는 형식의 내용이 있어야 한다
QRY.Active := False ;
s_q := '''' ;
j := 0 ;
for i := 0 to QRY.SQL.Count-1 do
begin
if (Copy(QRY.SQL[i],1,8) = 'GROUP BY') or
(Copy(QRY.SQL[i],1,8) = 'ORDER BY') then
break
else
j := j + 1 ;
end ;
QRY.SQL[j-2]:= 'AND '+S_ID +' LIKE '+ s_q+EDT_ID.Text+%'+s_q ;
QRY.SQL[j-1]:= 'AND '+S_NAME +' LIKE '+s_q+ EDT_NAME.Text+'%'+ s_q ;
QRY.Active := True ;
end ;