Q&A

  • [급질]날짜 형식을 디비에 입력할때...
한창 늦더위에 다덜 수고가 많으십니다.

지금 델파이공부를 열심히 하고 있는데영

날짜 형식을 디비에 넣고 있는데 막히네영.

디비서버는 mssql7.0입니다.



간단히 날짜를 입력 하면 잘 들어 가는데영.

만약에 날짜를 입력 하고 싶지 않을때 문제가 생기거든요.



날짜를 입력 하는곳은 maskedit 이고요.

물론 형식은 9000-90-00;1;_ 이겠죠.

mssql의 날자를 입력 할려고 하니...

(-)문자까지 입력을 해주어야만 해서 위와 같이 썼습니다.

물론 위에 같은 형식으로 입력 하면 잘 들어가죠.



그러나 문제는 입력을 안할때가 문제더군요.

에디트포멧이 위와 같이 적어 놓아 버리니깐..

공란을 적어주면 null 이 되는것이 아니라.

' - - ' 이런식으로 들어가버리니..

당연히 에러가 발생..

즉 ' - - ' 이란 형식은 date형식이 아니라는 말이죠.



위와 같은 문제를 어캐 해결 해야 하나요.



참고로 쿼리는 Parambyname('aaa').AsDateTime := strtoDatetime(maskedit1.text);

라는 식입니다.



혹시 다른 컴퍼넌트를 이용하면 어캐 되는지요.

어떠한 방법이라도 좋으니

고수님들 고견을 펼쳐 주세요.



또 참고로 날짜에는 null 을 넣어 주고 싶을때 무조건 null 이들어가야 합니다.

예를 들어 오늘의 날짜를 넣는다는지 하면 안되겠죠.







4  COMMENTS
  • Profile
    이성훈 2001.08.21 07:03
    edit box를 여러개 씁니다.



    edit1에는 년도

    edit2에는 월

    edit3에는 일

    이렇게 입력 해서 세개의 에디트 박스를 합쳐서 SQL문에 대입하면 되겠죠..

    Parambyname('aaa').AsDateTime := strtoDatetime(edit1.text+edit2.text+ edit3.text);



    그리고 Null값을 입력하려면.. 필드의 초기값을 Null로 주고

    입력받은 값이 Null 아닐때만 Insert함 되겠죠..

















    chobo of chobo wrote:

    > 한창 늦더위에 다덜 수고가 많으십니다.

    > 지금 델파이공부를 열심히 하고 있는데영

    > 날짜 형식을 디비에 넣고 있는데 막히네영.

    > 디비서버는 mssql7.0입니다.

    >

    > 간단히 날짜를 입력 하면 잘 들어 가는데영.

    > 만약에 날짜를 입력 하고 싶지 않을때 문제가 생기거든요.

    >

    > 날짜를 입력 하는곳은 maskedit 이고요.

    > 물론 형식은 9000-90-00;1;_ 이겠죠.

    > mssql의 날자를 입력 할려고 하니...

    > (-)문자까지 입력을 해주어야만 해서 위와 같이 썼습니다.

    > 물론 위에 같은 형식으로 입력 하면 잘 들어가죠.

    >

    > 그러나 문제는 입력을 안할때가 문제더군요.

    > 에디트포멧이 위와 같이 적어 놓아 버리니깐..

    > 공란을 적어주면 null 이 되는것이 아니라.

    > ' - - ' 이런식으로 들어가버리니..

    > 당연히 에러가 발생..

    > 즉 ' - - ' 이란 형식은 date형식이 아니라는 말이죠.

    >

    > 위와 같은 문제를 어캐 해결 해야 하나요.

    >

    > 참고로 쿼리는 Parambyname('aaa').AsDateTime := strtoDatetime(maskedit1.text);

    > 라는 식입니다.

    >

    > 혹시 다른 컴퍼넌트를 이용하면 어캐 되는지요.

    > 어떠한 방법이라도 좋으니

    > 고수님들 고견을 펼쳐 주세요.

    >

    > 또 참고로 날짜에는 null 을 넣어 주고 싶을때 무조건 null 이들어가야 합니다.

    > 예를 들어 오늘의 날짜를 넣는다는지 하면 안되겠죠.

    >

    >

    >

  • Profile
    chobo of chobo 2001.08.21 18:31
    에디트창 세개 말고 꼭 하나로 해결 하고 싶거든요.

    datatimepiker(철자 맞나~~ 홍홍 )으로 해결 하는 방법은 없나영?



  • Profile
    지니 2001.08.22 18:34
    datatimepiker 는 null 값을 허용 안하는 걸루 알고 있는데....



    음냐리... 격이 확실한지 는 모르겠지만.... *^^*



    null 값을 넣을려구 하지 말구.....



    0001-01-01 을 디폴트 값으로 넣으면 어떨지....



    1년1월1일은 null 하고 같이 생각 하면 좋을텐데.....



    그럼 문제가 안되겠죠.... *^^* 이상 지니의 옆길로 돌아가기 입니다......







    chobo of chobo wrote:

    > 에디트창 세개 말고 꼭 하나로 해결 하고 싶거든요.

    > datatimepiker(철자 맞나~~ 홍홍 )으로 해결 하는 방법은 없나영?

    >

  • Profile
    이성훈 2001.08.21 20:47
    chobo of chobo wrote:

    > 에디트창 세개 말고 꼭 하나로 해결 하고 싶거든요.

    > datatimepiker(철자 맞나~~ 홍홍 )으로 해결 하는 방법은 없나영?

    >



    이렇게 하심 될겁니다.

    DateTimePicker Change이벤트에 아래와 같이 적어주시면 됩니다..

    그럼 즐프하세요...ㅋㅋ

    procedure TForm1.DateTimePicker1Change(Sender: TObject);

    begin

    Edit1.Text := FormatDateTime('yyyy-mm-dd' , DateTimePicker1.Date);

    end;