Q&A

  • 날짜 검색
델파이에서 데이타베이스 프로그램을 짜다가 막히는 부분이 있습니다.

오라클을 사용했는데 날짜를 저장하는 데이터형으로 DATE형을 지정하였습니다.

입력 폼 상에서 에디트로 날짜를 입력받아 데이타베이스의 날짜와 같은 레코드를

찾을려고 하는데 어떻게 해야 할지....



sql를 어떤식으로 작성해야 할지 잘모르겠습니다.

예를 들어

close;

sql.Clear;

sql.Add('select * from tablename ');

sql.Add('where id is not null ');

if edit1.Text <> '' then

sql.Add(' and date = ' + (요기를 어떻게 해야하는지...));

open;

StrTodate를 사용해 봤는데 소용이 없고

또 어떤식으로 에디트 박스에 입력을 해야하는지 잘모르겠군요....

가령 99-01-11, 990111 인지 여러가지 입력 방법이 있겠지요.

많은 조언 부탁드립니다....

1  COMMENTS
  • Profile
    오승섭 1999.11.02 19:37
    안녕하세요...



    먼저 꼭 Edit Component를 사용해야할 이유가 있나요?

    Edit Component는 사용자가 다양하게 입력할 수 있으므로 Date Type자료를

    입력하는데 좋지 않다고 생각됩니다.

    예) 19990101, 99-01-01, 990101, 1999-01-01 등



    MaskEdit Component를 사용하는 것이 어떨런지요.

    MaskEdit의 EditMask란 Propertie에 날짜형식을 줄 수 있으므로 작업자에게

    일정한 형태의 자료를 입력할 수 있어 안정적이라 생각됩니다.



    예를들어 EditMask에 !0000-!90-90;0;_란 형식으로 입력하면 사용자는

    1999-01-01 이란 형태로 자료를 입력하겠지요. 하지만 실제 EditMask의 Text값은

    19990101 형식으로 들어 있기 때문에 Date Type으로 전환시 형식을 1999-01-01로

    맞춰 주어야 합니다.



    그래서 아래와 같이 하면



    close;

    sql.Clear;

    sql.Add('select * from tablename ');

    sql.Add('where id is not null ');

    if editmask1.Text <> '' then begin

    sql.Add(' and date = :p_date');

    sql.ParamByName('p_date').AsDate

    := StrToDate(copy(editmask1.text,1,4)+'-'

    copy(editmask1.text,5,2)+'-'

    copy(editmask1.text,7,2));

    end;

    open;



    되지 않을까 합니다......



    그럼 좋은하루 되십시요 ....





    급한이 wrote:

    > 델파이에서 데이타베이스 프로그램을 짜다가 막히는 부분이 있습니다.

    > 오라클을 사용했는데 날짜를 저장하는 데이터형으로 DATE형을 지정하였습니다.

    > 입력 폼 상에서 에디트로 날짜를 입력받아 데이타베이스의 날짜와 같은 레코드를

    > 찾을려고 하는데 어떻게 해야 할지....

    >

    > sql를 어떤식으로 작성해야 할지 잘모르겠습니다.

    > 예를 들어

    > close;

    > sql.Clear;

    > sql.Add('select * from tablename ');

    > sql.Add('where id is not null ');

    > if edit1.Text <> '' then

    > sql.Add(' and date = ' + (요기를 어떻게 해야하는지...));

    > open;

    > StrTodate를 사용해 봤는데 소용이 없고

    > 또 어떤식으로 에디트 박스에 입력을 해야하는지 잘모르겠군요....

    > 가령 99-01-11, 990111 인지 여러가지 입력 방법이 있겠지요.

    > 많은 조언 부탁드립니다....