Q&A

  • Where절에 들어갈 변수가 여러개일때 어떻게 해야죠?
현재 마이다스로 구성된 AtiveX용 성적관리프로그램을 작성하고 있습니다.(허접~)

검색목록에 '이름/ID/주민등록번호'등으로 찾는 방식이 있습니다.

이를 예를들면,

Select * from 테이블이름 where '이름/ID/주민등록번호' = ???

가 되는데, 마이다스에서 이 동적 SQL문의 처리가 궁금합니다.

(이름 & ID & 주민번호를 Query에서 한다는 것이 아니라 검색방법이 3가지라는 의미

입니다. 그래서, SQL문장이 3문장이 되어야 되구요.)



1.제가 한 방식은 서버에 인터페이스등록후 함수처럼 부르는 방식으로 하니 나중에

결과 Open를 한것을 처리하는 방법을 몰라서 일단 관두고,



2.다음으론

DataModule1.ClientDataSet1.Close;

DataModule1.ClientDataSet1.CommandText := '위의 SQL문';

예로 'Select * from 테이블명 where ID=' + Edit1.Text; <- 이런 형식으로..

DataModule1.ClietnDataSet1.Open;

위와 같이 하면 field가 없다고 나오구요.



3.극단의 방법 정적테이블을 각각 구성/ SQL문을 작성(App서버쪽에)후 나중엔 인자만

서버에 넘기는 방법(Ativex클라이언트쪽에)

예) ID방식은

DataModule1.ClientDataSet1.Close;

DataModule1.ClientDataSet1.ParamByName('서버에서정한:p인자').AsString := ?

DataModule1.Open;



만약 제가 계속한다면 마지막방법으로 구성할순 있을것입니다만, 제가 개념이 부족한것인지 책이 잘못된 것인지 2번의 방법으로 SQL문장을 통째로(where절포함)날리면 되는

방법을 아시면 감사하겠습니다. 뭐가 뭔지 아직 허우적되어서 ㅠ.ㅠ





1  COMMENTS
  • Profile
    hugehead 2000.07.20 00:22
    Client에 갖다 놓으신 ClientDataSet의 DataRequest 함수를 사용하시면 될 것 같군요.



    DataRequest 함수의 정확한 설명은 F1키를 누르시면 저보다 잘 설명할 겁니다.

    쉽게 말해서 선언은:

    function DataRequest( value: OleVariant) : OleVariant;

    인데, 이 함수를 실행시키면 서버쪽으로 임의의 값을 넘길 수 있습니다.



    그리고 이 함수를 콜하면, 서버에서는 OnDataRequest 이벤트가 발생합니다.

    그러니깐,



    우선 서버에서 TQuery/TADOQuery/TADODataset 컴포넌트에 쿼리문을:

    'SELECT ...... FROM SJ_MASTER, SJ_TOTAL, SJ_YEAR_TOTAL, HAKKWA_CODE,.'

    이렇게 만들어 놓으시고...(where 절에서 마지막 검색 조건을 비워 두세요)





    라디오 버튼이던지 체크박스 같은 걸로 ID/주민등록번호/이름을 선택하게 하고, 검색어를 넣고, 검색버튼 (Button1)을 누르면..

    1) 클라이언트의 검색 버튼의 Onclick event handler에서:



    //생략...

    if (ID를 선택했다) then sMod := 'where ID = ' + Edit1.Text

    else if (주민을 선택했다) then sMod := 'where JUMINNO = ' + Edit1.Text

    else if (이름을 선택했다) then sMod := 'where NAME = ' + Edit1.Text;



    if ClientDataSet1.DataRequest(sMod) = 0 then

    clientDataset1.Open

    else ShowMessage('서버 작동시 에러 발생');



    2) 서버의 OnDataRequest 이벤트 핸들러에서는:

    try

    Query1.SQL.Add(sMod);

    Result := 0;

    except

    Result := -1;

    end;



    코드가 난잡한걸 용서하세요.

    난해하면 제가 다시 설명드리겠습니다.

    Happy Programming!



    강정한 wrote:

    > 현재 마이다스로 구성된 AtiveX용 성적관리프로그램을 작성하고 있습니다.(허접~)

    > 검색목록에 '이름/ID/주민등록번호'등으로 찾는 방식이 있습니다.

    > 이를 예를들면,

    > Select * from 테이블이름 where '이름/ID/주민등록번호' = ???

    > 가 되는데, 마이다스에서 이 동적 SQL문의 처리가 궁금합니다.

    > (이름 & ID & 주민번호를 Query에서 한다는 것이 아니라 검색방법이 3가지라는 의미

    > 입니다. 그래서, SQL문장이 3문장이 되어야 되구요.)

    >

    > 1.제가 한 방식은 서버에 인터페이스등록후 함수처럼 부르는 방식으로 하니 나중에

    > 결과 Open를 한것을 처리하는 방법을 몰라서 일단 관두고,

    >

    > 2.다음으론

    > DataModule1.ClientDataSet1.Close;

    > DataModule1.ClientDataSet1.CommandText := '위의 SQL문';

    > 예로 'Select * from 테이블명 where ID=' + Edit1.Text; <- 이런 형식으로..

    > DataModule1.ClietnDataSet1.Open;

    > 위와 같이 하면 field가 없다고 나오구요.

    >

    > 3.극단의 방법 정적테이블을 각각 구성/ SQL문을 작성(App서버쪽에)후 나중엔 인자만

    > 서버에 넘기는 방법(Ativex클라이언트쪽에)

    > 예) ID방식은

    > DataModule1.ClientDataSet1.Close;

    > DataModule1.ClientDataSet1.ParamByName('서버에서정한:p인자').AsString := ?

    > DataModule1.Open;

    >

    > 만약 제가 계속한다면 마지막방법으로 구성할순 있을것입니다만, 제가 개념이 부족한것인지 책이 잘못된 것인지 2번의 방법으로 SQL문장을 통째로(where절포함)날리면 되는

    > 방법을 아시면 감사하겠습니다. 뭐가 뭔지 아직 허우적되어서 ㅠ.ㅠ

    >

    >

    • 가가가
    • 2000.07.19 18:10
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 타락천사
      2000.07.19 19:29
      안녕하세여.. 타락임다..^^ 커널DLL이 깨졌네여... Win98 DLL이 가끔 깨져여.. Win98 다시 까세여......
    • 최용일
      2000.07.19 12:01
      안녕하세요. 최용일입니다. CompareText함수를 사용하세요. ^^ 항상 즐코하세요. 꼴뚜기 wrote: ...
    • 뭉치
    • 2000.07.19 10:16
    • 0 COMMENTS
    • /
    • 0 LIKES
    • 최영근
      2000.07.20 04:52
      이선주 wrote: > 초보입니다. > > 고수님들의 조언이 필요합니다 > > 현재 스트링 그리드에 있는 내...
    • Black}{ole
      2000.07.19 22:37
      이선주 wrote: > 초보입니다. > > 고수님들의 조언이 필요합니다 > > 현재 스트링 그리드에 있는 내...
    • 4master
    • 2000.07.19 08:09
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 하얀까마귀
      2000.07.19 14:46
      안녕하세요 하얀까마귀 입니다. 오늘 날밤 샛내요.. 흑흑.. 밤샘안하기로 다짐을 했건만... 이놈 눈...
    • 김영해
      2000.07.19 09:35
      김명성 wrote: > 답변이 너무 늦어 재질문드립니다. 고수님들 제발 도움을 주셨으면 합니다. > 이것 때문...
    • 타락천사
      2000.07.19 08:56
      안녕하세여..타락임다..^^ 제가 요즘 시간 여유가 좀 있어서뤼...ㅠㅠ 질문의 요지를 모르겠군여.. ...
    • 김명성
      2000.07.20 06:44
      타락천사 wrote: > 안녕하세여..타락임다..^^ > > 제가 요즘 시간 여유가 좀 있어서뤼...ㅠㅠ > > ...
    • heimdal
    • 2000.07.19 07:26
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 김영해
      2000.07.19 09:45
      heimdal wrote: > procedure Tmachine.DateTimePicker1Click(Sender: TObject); > begin > with qu...
    • 조규춘
      2000.07.19 08:38
      heimdal wrote: > procedure Tmachine.DateTimePicker1Click(Sender: TObject); > begin > with qu...
    • 김영해
      2000.07.19 09:56
      델파이걸 wrote: > 블랙홀님의 답변 감사합니다. > > 그런데 그 방법은 파일명을 갖고 오는 것입니다. ...
    • Black}{ole
      2000.07.19 06:45
      델파이걸 wrote: > 블랙홀님의 답변 감사합니다. > > 그런데 그 방법은 파일명을 갖고 오는 것입니다. ...
    • Mr.Q
      2000.07.19 08:26
      Black}{ole wrote: > 델파이걸 wrote: > > 블랙홀님의 답변 감사합니다. > > > > 그런데 그 방법은 파...
    • Codenj
    • 2000.07.19 05:01
    • 4 COMMENTS
    • /
    • 0 LIKES
    • Black}{ole
      2000.07.19 06:43
      Codenj wrote: > DBGrid에서 특정행을 보이지 않게 하려고 하는데요, 어떻게 하면 될까요? > 예를 들면 ...
    • Codenj
      2000.07.19 07:13
      Black}{ole wrote: > Codenj wrote: > > DBGrid에서 특정행을 보이지 않게 하려고 하는데요, 어떻게 하면...
    • Mr.Q
      2000.07.19 08:21
      Codenj wrote: > Black}{ole wrote: > > Codenj wrote: > > > DBGrid에서 특정행을 보이지 않게 하려고 ...
    • 조규춘
      2000.07.19 08:12
      Codenj wrote: > Black}{ole wrote: > > Codenj wrote: > > > DBGrid에서 특정행을 보이지 않게 하려고 ...
    • 델초보
    • 2000.07.19 04:36
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 성호종
      2000.07.21 22:11
      델초보 wrote: 어찌하여 하위버젼에서 상위버젼으로 바뀌는데 Migration이 필요한 것인가!!! 상식적으로 ...
    • 최용일
      2000.07.19 11:49
      안녕하세요. 최용일입니다. 흠~ 이걸 구조적인 차이라고 해야하나~ 암튼 버전별로 함수나 메소드, 속성,...
    • mallove
    • 2000.07.19 04:51
    • 2 COMMENTS
    • /
    • 0 LIKES
    • Mr.Q
      2000.07.19 11:19
      mallove wrote: > 키가 없는 테이블에서 '번호'필드가 있다고 할 때 자동증가를 사용 > 하지 않고 Number...
    • Black}{ole
      2000.07.19 07:24
      mallove wrote: > 키가 없는 테이블에서 '번호'필드가 있다고 할 때 자동증가를 사용 > 하지 않고 Number...
    • 최용일
      2000.07.19 12:03
      안녕하세요. 최용일입니다. 패키지 형태로 만들어서 컴파일하면 bpl파일이 나옵니다. File/New하셔서 패...
    • 강정한
    • 2000.07.19 03:13
    • 1 COMMENTS
    • /
    • 0 LIKES
    • hugehead
      2000.07.20 00:22
      Client에 갖다 놓으신 ClientDataSet의 DataRequest 함수를 사용하시면 될 것 같군요. DataRequest 함수...
    • 정지호
      2000.07.19 03:30
      참신 wrote: > 안녕들 하십니까..... > 모듈간 파라메타를 전달하려 합니다 > > WinExec('Out_Agen...
    • 283
    • 2000.07.19 02:54
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2000.07.19 12:10
      안녕하세요. 최용일입니다. 모두 다 지원합니다. 근데 스탠다드나 프로페셔널버전에는 없습니다. 엔터프...
    • 정지호
      2000.07.19 03:36
      somoon wrote: > > 델파이 안에서 dos명령어는 어떻게 사용합니까? > > winexec('')명령어가 있다는...
    • 김형선
    • 2000.07.19 02:29
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 성호종
      2000.07.21 22:12
      김형선 wrote: 퀵레포트의 차트에 Background Image를 삽입할수 있습니다. > 안녕하십니까???? > > ...