2013-02-12 5 views
0

다른 정보와 함께 MS ACCESS 데이터베이스에 날짜를 저장하고 있습니다. 하지만 내가 원하는대로 그들을 찾을 수는 없다. 나는 다음과 같이 검색하고 싶다 : 년, 월. 나는 현재 내가 그렇게 할이 코드를 사용 해요 datetimepicker레코드의 날짜를 검색하십시오.

을 사용하고 있습니다 : 이 ADOTable1.Filter := 'Date > ' + Edit1.Text; ADOTable1.Filtered := True; end;

이 사람이 나를 도울 수 있을까요?

+0

Google에서 * "Delphi MS Access date time"* 용어에 대한 [첫 번째 히트 곡] (http://delphi.about.com/od/delphitips2007/qt/datetime_sql.htm)을 보았습니까? – TLama

+0

@TLama 데이터 세트 필터는 데이터베이스 – bummi

답변

2

두 가지 옵션이 있습니다. 솔루션에서 덜 바람직하게 사용되는 문자열 리터럴 중 하나를 쿼리에 사용합니다. 이 경우, 예를 들어

ADOTable1.Filter := 'Date > ''' + Edit1.Text + ''''; 

ADOTable1.Filter := 'Date > ''27-Sep-69''' 

더 나은 솔루션은 매개 변수화 쿼리를 사용하는 것입니다 같은 라인을 초래할 것 '탈출'당신이 전달하는 값으로이

select <whatever> from table 
where date > :p1 

는 다음과 같은 방식으로 매개 변수를 전달

ADOTable.parambyname ('p1').asdate:= strtodate (edit1.text); 
,536,

필자는 ADO 구성 요소를 사용하지 않기 때문에 구문이 다소 꺼져 있지만 Firebird에 사용 된 구문이라고 생각합니다.

매개 변수는 올바른 따옴표를 추가하는 것에 대해 걱정할 필요가 없으며 아무도 잘못된 값을 전달할 수 있기 때문에 원시 텍스트 값을 사용하는 것보다 낫습니다. edit1.text에 '27 -Sep-65; Drop table1 '이 포함되어 있으면 어떻게 될지 상상해보십시오. - 데이터베이스에서 테이블을 삭제할 수 있습니다!

+0

에서 독립적입니다. 'ADOTable1.parambyname ('Date '). asdate : = strtodate (edit1.text);'IT는 작동하지 않고'parambyname'과'.asdate'에 erro를 얻습니다. – Ammadeux

+0

@Ammadeux : 'TAdoQuery'구성 요소가 있습니까? 대신 TAdoTable을 사용하십시오. 'asdate'를 'asdatetime'으로 변경해야 할 수도 있습니다. –

+0

'Tadoquery'를 추가했고 내가 입력 한 SQL 속성에' 테이블 데이터> : p1 '을 선택했습니다. 그러나이 오류가 발생합니다. 개체 매개 변수가 올바르게 정의되지 않았으며 정보가 잘못 지정되었습니다. – Ammadeux

관련 문제