Q&A

  • [2931]답변고마워요.. 그런데 문제가(검색관련)....
질문에 대해 답해 주어 정말루 고마워요

그런데 소스를 보니깐 radiogroup을 이용했더라구요..

전 tabsheet를 사용했기 때문에 radiogroup대신 groupbox를 사용하거있거든요..

부탁드려요... 혹아시면 다시 가르쳐 주실 수 있을까요??

table명 : book.db

필드명 : 도서코드, 도서명, 저자명, 출판사, 등록일자

< 질문 >

1. 키워드 : 검색할 문자 입력

2. 도서명, 저자명, 출판사, 등록일자를 라디오 버튼을 이용하여 4가지중 한가지 선택

3. 버튼 클릭

4. dbgrid에 검색한 걸과 출력

이렇게 만들려고 하는데 아시는 분 꼭 좀 알려주세요...





1  COMMENTS
  • Profile
    박성훈 1999.11.16 21:40
    미선 wrote:

    > 질문에 대해 답해 주어 정말루 고마워요

    > 그런데 소스를 보니깐 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;

    라고 하신다음 검색루틴을 실행하시면 똑같은 결과가 나올 것같군요.