문제

가 직면한 상황이 여기에.나에 액세스하는 데이터베이스(MDB)을 통해 제트기입니다.내가 사용하는 DBGrid 및 DBNavigator 을 허용하는 사용자가 액세스할 수 있습니다.데이터 집합이 만들어 사용하 TADOQuery 구성 요소는 다음과 같은 쿼리:

SELECT *, (DateDiff ('y',[Birth Date], Now())) AS [Age] FROM TableName

이 상품에 대한 리뷰가 없습니다.그러나 때마다 내가 누르면 새로고침 버튼을 DBNavigator 의 결과는 이 계산된 필드가 잘못입니다.예를 들어,만약 정상적으로 저는 7 다음과 같은 연령에 열 후 나는 누가 40149, 7 로 변경 40149,6 변경하 40150,0~40156etc.하기 위해서는 정확한 결과가 필요하시 쿼리를 다시.

사람이 도움을 받을 수 있습니까?

도움이 되었습니까?

해결책

다음을 시도하는 것이 반환 시대에서 일입니다.

SELECT *, CINT(Now()-[Birth Date]) as AGE FROM TableName

에 대한 동안 사용:

SELECT *, INT((Now()-[Birth Date]) / 365.242199) as AGEYRS from TableName

(주,CINT 라운드,INT 지 않)

그 이유는 이 작품은에 액세스하는 저장하는 날짜/시간에 유사한 방법으로 델파이로 플로트가 정수 부분은 숫자 이후의 일정일과 분수로는 소수의 일부는 그 날(0.25=6am,0.50=오,etc.).따라서 알고 싶다면 당신 둘 사이의 차이 일,그 사이의 차이 하루 숫자...수 년 동안,분할하여 이의 번호입니다.

편집

여기에서 또 다른 옵션은 것을 만들 계산 분야에서 델파이고 수행하고 논리가 있다.에서 당신의 onCalculated 이벤트 당신은 코드 같은 것을 다음과 같다:

procedure TForm1.ds1CalcFields(DataSet: TDataSet);
begin
  DataSet.FieldByName('CALCDATE').AsInteger := 
    Trunc((Date - DataSet.FieldByName('BIRTH DATE').AsDateTime) / 365.242199);
end;

편집

그리고 아직 세 번째는 방법입니다.오히려 보다 새로 고침으로 작동하다 현재는,재정의 행동과 힘을 가까/시의 데이터 집합을 사용하여 onClick 의 탐색기:

procedure TForm1.dbnvgr1Click(Sender: TObject; Button: TNavigateBtn);
begin
  if Button = nbRefresh then
    begin
      ds1.Close;
      ds1.Open;
    end;
end;

다른 팁

대신이 간격 매개 변수를 시도하십시오.

SELECT *, (DateDiff ('yyyy',[Birth Date], Now())) AS [Age] FROM TableName

"간격"의 의미는 다음과 같습니다.

yyyy    Year
q   Quarter
m   Month
y   Day of Year
d   Day
w   Weekday
ww  Week
h   Hour
n   Minute
s   Second

이전 의견을 테스트했으며 같은 오류도 있습니다.

네비게이터 나 제트기 어딘가에 버그라고 생각합니다.

NAV에서 새로 고침을 누르면 표시된 40149는 계산 된 물건이없는 이중으로 날짜 표현입니다. 발견 된 첫 번째 열만 사용하여 표시하는 것 같습니다.

문자열로 캐스팅하려고하면 표시된 데이터는 여전히 데이터입니다.

Select *, ' ' & DateDiff(.......) as [Age] From table1;

계산 된 필드에서 가장 먼저 유형 문자열 또는 숫자 열을 사용하면 결과가 표시됩니다. 당신은 시도 할 수 있습니다 :

SELECT *,  mid(id & (DateDiff ('y',[madate], Now())), len(id) + 1) AS [Age] FROM Table1

또는 :

SELECT *,  (id-id) + (DateDiff ('y',[madate], Now()))  AS [Age] FROM Table1

이것은 꽤 못 생겼지 만 트릭을합니다 ..

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top