우선 제 글을 보신 여러분들께 감사를 드립니다.
필드에 있는 값이 NULL면 다음 레코드로 넘어 가고 싶거든요.
테이블의 OnCalcFields이벤트에
procedure TForm4.tblCalcFields(DataSet: TDataSet);
begin
if Table1END_TIME.IsNull then
DataSet.Next;
DataSet['REMAIN_TIME']:= DiffTime(DataSet['END_TIME']);
end;
이렇게 했거든요.
이렇게 하다보면 Invalid variant type conversion 이라고 나오거든요.
이 말은 그 레코드를 넘어가지 않고 NULL값을 TIME로 conversion한다는 말이잖아요..
도데체 어떻게 해야할지 감이 안오네요..
참고로 DiffTime함수는 끝나는시간에서 시작시간을 빼서 정수로 돌려주는 함수거든요.
질문 내용이 부족한지 잘 모르겠네요.
그리고 다음으로 넘어간다라는 발상에 문제가 있습니다..
이 이벤트는 각 래코드 단위로 일어나므로..
If 조건 then 변환;
식으로만 하셔도 됩니다..
From 류..
procedure TForm4.tblCalcFields(DataSet: TDataSet);
begin
Try
DataSet['REMAIN_TIME']:= DiffTime(DataSet['END_TIME']);
Except
End;
end;
델초 wrote:
> 우선 제 글을 보신 여러분들께 감사를 드립니다.
> 필드에 있는 값이 NULL면 다음 레코드로 넘어 가고 싶거든요.
> 테이블의 OnCalcFields이벤트에
>
> procedure TForm4.tblCalcFields(DataSet: TDataSet);
> begin
> if Table1END_TIME.IsNull then
> DataSet.Next;
>
> DataSet['REMAIN_TIME']:= DiffTime(DataSet['END_TIME']);
> end;
> 이렇게 했거든요.
> 이렇게 하다보면 Invalid variant type conversion 이라고 나오거든요.
> 이 말은 그 레코드를 넘어가지 않고 NULL값을 TIME로 conversion한다는 말이잖아요..
> 도데체 어떻게 해야할지 감이 안오네요..
> 참고로 DiffTime함수는 끝나는시간에서 시작시간을 빼서 정수로 돌려주는 함수거든요.
> 질문 내용이 부족한지 잘 모르겠네요.