Q&A

  • 날짜검색 및 Param 관련 질문요~~
1.
Query에서 컬럼도 Param으로 줄 수 있나여??
변수를 써서 Order By를 할려구 하는데 잘 안되네여...
Select * From 테이블 Order by :AA :BB
요기서 값을 줄때..
Query.ParamByName('AA').AsString = strSort1; => 컬럼명
Query.ParamByName('BB').AsString = strSort2; => 정렬방법 (asc,desc)
이런식으로 컬럼명하고 정렬방법을 Param으로 줄려구하는데 잘 안되네여..


2.
TDateEdit 2개를 써서 날짜별 검색을 할려구하는데 잘 안되네여..
Select * From 테이블 WHERE 컬럼 Between :AA And :BB
요기서...
Query.ParamByName('AA').AsDate := StrToDate(DateEdit1.Text);
Query.ParamByName('BB').AsDate := StrToDate(DateEdit2.Text);

DateEdit1.Text => 2003-05-16
DateEdit2.Text => 2003-05-17
값이 이러면 16일하구 17일모두 가져와야되는데 16일꺼만 가져옵니당..

DateEdit1.Text => 2003-05-17
DateEdit2.Text => 2003-05-17
값이 이러면 17일꺼 가져와야되는데 하나두 안가져오구여..


참고루.. 디비는 오라클이구여.. 컬럼타입은 Date입니당..
  

델파이를 시작한지 얼마안되서인지 잘 모르겠네염...
화창한 주말에 이렇게 사무실에 박혀서 열심히 코딩중입니다..
고수님덜의 속시원한 해답을 기다립니당.. ^^

모두 즐건 주말되세여~~~
1  COMMENTS
  • Profile
    김경록 2003.05.18 23:47
    < 1번 답변 >
       Field명을 Param으로 설정하실 수 없습니다.
       이것은 Table명에 Param을 설정할 수 없는것과 마찬가지입니다.
       즉, Param을 델파이에서 인식하는 Data Type에 대해서
       값을 매칭시키는 곳이기 때문에 절대로 Field명, Table명이 올 수 없습니다.
       다른 방법으로 대체 하십시오..
       예)  
       ls_Field1 := 'QNAME';
       Query1.SQL.Add(' SELECT SNAME AS ' + ls_Field1 + ' FROM DUAL');

    < 2번 답변 >
    간단히 말씀드리면,
    Oracle은 Field Type이 Date이면, 년월일시분초의 정보가 모두 들어갑니다.
    따라서, 입력하실때 어떤값을 입력시키는가에 따라 값이 달라집니다.
    INSERT 혹은 UPDATE시 해당필드(Data Type이 Date인 Field)에
    sysdate같이 값을 넣게 되면, 시분초까지 모두 들어갑니다..
    따라서,
    Query.ParamByName('AA').AsDate := StrToDate(DateEdit1.Text);
    Query.ParamByName('BB').AsDate := StrToDate(DateEdit2.Text);
    를 아무리 해도 "시분초"부분에서 걸러지게 됩니다.
    즉, Data가 1건도 조회되지 않는 것입니다..
    해당 필드의 값을 정확히 보시고(시분초가 있는지),
    Query내용을 다시 작성하시기 바랍니다...

    이상.. 답변이 되었길..