Q&A

  • parambyname을 안쓰구 할수있는방법있어여???
안녕하세요. 노력중인 초보입니다...



필드형이 스트링형일경우엔 말이져



query1.sql.add(' and job = :aa ');

parambyname('aa').asstring:= edit1.text;



=>query1.sql.add(' and job = '''+edit1.text+''' ');



이케 parambyname을 안쓰구 할수있었거든여....



근데 필드형이 데이트형일 경우에 말이져



query1.sql.add(' and loginday > :dd ');

parambyname('dd').asdatetime:= strtodate(edit1.text);



이케하면 되는데..... parambyname을 없애서 다음과같이

=>query1.sql.add(' and loginday > strtodate(edit1.text) ');

로 했더니 안되는군요....



에러는 다음과 같습니다...

------------------------------

project ss.exe raised exception class EDBEngineError with message 'General SQL error.

ORA-00907:missing right parenthesis' . Process stopped. Use Step or Run to continue.

-------------------------------

참고로... loginday는 date형이구여. 형식은 99-01-01로 입력이 되있구여

edit1.txt에서두 그렇게 입력을 했습니다....



parambyname없애구 그냥 query1.sql.add안에다가 넣을수 있는 방법아시는분 답변 부탁합니다..... 금 이만...... (^^)(__)(^^)>



4  COMMENTS
  • Profile
    지승용 2001.08.11 03:46
    노력중인 초보 wrote:

    > 안녕하세요. 노력중인 초보입니다...

    >

    > 필드형이 스트링형일경우엔 말이져

    >

    > query1.sql.add(' and job = :aa ');

    > parambyname('aa').asstring:= edit1.text;

    >

    > =>query1.sql.add(' and job = '''+edit1.text+''' ');

    >

    > 이케 parambyname을 안쓰구 할수있었거든여....

    >

    > 근데 필드형이 데이트형일 경우에 말이져

    >

    > query1.sql.add(' and loginday > :dd ');

    > parambyname('dd').asdatetime:= strtodate(edit1.text);

    >

    > 이케하면 되는데..... parambyname을 없애서 다음과같이

    > =>query1.sql.add(' and loginday > strtodate(edit1.text) ');

    > 로 했더니 안되는군요....

    >

    > 에러는 다음과 같습니다...

    > ------------------------------

    > project ss.exe raised exception class EDBEngineError with message 'General SQL error.

    > ORA-00907:missing right parenthesis' . Process stopped. Use Step or Run to continue.

    > -------------------------------

    > 참고로... loginday는 date형이구여. 형식은 99-01-01로 입력이 되있구여

    > edit1.txt에서두 그렇게 입력을 했습니다....

    >

    > parambyname없애구 그냥 query1.sql.add안에다가 넣을수 있는 방법아시는분 답변 부탁합니다..... 금 이만...... (^^)(__)(^^)>

    >







    FormatDateTime('yyyy"/"mm"/"dd', Temp_Date1)

    이것을 넣어보세요...

    기본적 BDE를 인스톨 했을 경우에는 위의 포멧을 따라서 Query를 돌리시면 됩니다.

    하지만 제어판에 있는 BDE관리자에서 Date포멧을 변경했을 경우에는 그에 따라서

    다시 바꿔줘야겠죠...

    그럼...

  • Profile
    노력중인초보 2001.08.11 09:33


    >

    > FormatDateTime('yyyy"/"mm"/"dd', Temp_Date1)

    > 이것을 넣어보세요...

    > 기본적 BDE를 인스톨 했을 경우에는 위의 포멧을 따라서 Query를 돌리시면 됩니다.

    > 하지만 제어판에 있는 BDE관리자에서 Date포멧을 변경했을 경우에는 그에 따라서

    > 다시 바꿔줘야겠죠...

    > 그럼...



    답변감사합니다... 근데 이걸 넣어서 했는데두 에러가나는군여...

    구체적으루 어케 넣어야하는지 알려주셨으면 합니다......

  • Profile
    노력중인초보 2001.08.11 10:54
    노력중인초보 wrote:

    >

    > >

    > > FormatDateTime('yyyy"/"mm"/"dd', Temp_Date1)

    > > 이것을 넣어보세요...

    > > 기본적 BDE를 인스톨 했을 경우에는 위의 포멧을 따라서 Query를 돌리시면 됩니다.

    > > 하지만 제어판에 있는 BDE관리자에서 Date포멧을 변경했을 경우에는 그에 따라서

    > > 다시 바꿔줘야겠죠...

    > > 그럼...

    >

    > 답변감사합니다... 근데 이걸 넣어서 했는데두 에러가나는군여...

    > 구체적으루 어케 넣어야하는지 알려주셨으면 합니다......



    지승용님이 답변해주신 내용을 참고해서리..

    이리저리 고쳐보다가 됐습니당....^^



    query1.sql.add(' and LOGINDAY > :dd ');

    parambyname('dd').asdatetime:=strtodate(edit1.text);



    => query1.sql.add(' and LOGINDAY > to_date('''+formatdatetime('YYYY-MM-DD'

    ,strtodate(edit1.text))+''') ');

    이케하니깐 되는군염.....^^



    근데 to_date대신 strtodate를 쓰면 안되더군여....

    두개의 차이점이 몬지 아시는분 답변부탁합니당......^^

    금 이만.....(^^)(__)(^^)>

  • Profile
    김지엽 2001.08.11 19:09
    to_date : SQL 함수

    strtodate : 델파이 함수



    전자는 DBMS에서 처리하는 함수이고, 후자는 델파이 어플리케이션이 직접 처리하는 함수.



    TQuery.SQL이 가지는 의미가 먼지를 생각해 보면 금방 파악되겠죠.



    TQuery는 ExecSQL이나 Open 이벤트가 발생하면 연결된 데이터셋 커넥션으로, 문자열 형태의 SQL 구문을 보냅니다. 이때 to_date는 문자열 형태로 그냥 넘어가겠죠? 최종적으로 그 처리는 데이터베이스에서 해주는 거져.