질문에 대해 답해 주어 정말루 고마워요
그런데 소스를 보니깐 radiogroup을 이용했더라구요..
전 tabsheet를 사용했기 때문에 radiogroup대신 groupbox를 사용하거있거든요..
부탁드려요... 혹아시면 다시 가르쳐 주실 수 있을까요??
table명 : book.db
필드명 : 도서코드, 도서명, 저자명, 출판사, 등록일자
< 질문 >
1. 키워드 : 검색할 문자 입력
2. 도서명, 저자명, 출판사, 등록일자를 라디오 버튼을 이용하여 4가지중 한가지 선택
3. 버튼 클릭
4. dbgrid에 검색한 걸과 출력
이렇게 만들려고 하는데 아시는 분 꼭 좀 알려주세요...
> 질문에 대해 답해 주어 정말루 고마워요
> 그런데 소스를 보니깐 radiogroup을 이용했더라구요..
> 전 tabsheet를 사용했기 때문에 radiogroup대신 groupbox를 사용하거있거든요..
> 부탁드려요... 혹아시면 다시 가르쳐 주실 수 있을까요??
> table명 : book.db
> 필드명 : 도서코드, 도서명, 저자명, 출판사, 등록일자
> < 질문 >
> 1. 키워드 : 검색할 문자 입력
> 2. 도서명, 저자명, 출판사, 등록일자를 라디오 버튼을 이용하여 4가지중 한가지 선택
> 3. 버튼 클릭
> 4. dbgrid에 검색한 걸과 출력
> 이렇게 만들려고 하는데 아시는 분 꼭 좀 알려주세요...
>
>
이렇게 해보면 어떨까요.
const
SearchField:Array[0..3] of string=('도서명','저자명','출판사','등록일자');
function TForm1.SearchBook(fieldname,value:String);
//fieldname:검색할 필드명,value:검색어
begin
With Query1 do begin
Close;
sql.Clear;
sql.Add('SELECT * FROM "book.db" ');
sql.Add('WHERE '+fieldname+' LIKE ''%'+value+'%''');
Open;
if Not EOF then Result:= True
else Result:= False;
end;
end;
//검색버튼을 눌렀을 때의 동작
procedure TForm1.SearchButtonClick(Sender:TObject);
var
findfield:String; //검색할 필드명
begin
if RadioGroup.ItemIndex=-1 then
begin
ShowMessage('검색할 항목을 선택해 주십시오!');
Exit;
end;
findfield:= SearchField[Radiogroup.ItemIndex];
if not SearchBook(findfield,Edit1.Text) then
ShowMessage('해당 정보가 없습니다!')
else
//정보가 있을 때의 처리루틴
Edit1.Text:= Query1.FieldByName('BOOKNAME').AsString;
end;
도움이 되시길...
아, 죄송합니다. groupbox를 쓰신다구요.
그렇다면 groupbox위에 놓인 radiobutton들의 이름을 검색할 필드들의 이름과 똑같이 주시면 됩니다.
RadioButton1.name:= '도서명'
RadioButton2.name:= '저자명'
이런식으로 주신 다음 위의 SearchBook함수의 필드명에 해당 버튼의 이름을 집어넣으면 됩니다.
그러니까
findfield를 전역변수로 선언하고 RadioButton의 Click 이벤트에
findfield:= TRadioButton(Sender).Name;
라고 하신다음 검색루틴을 실행하시면 똑같은 결과가 나올 것같군요.