On Thu, 22 Apr 2010, [email protected] wrote:
Hi,
> 2010-04-22 18:45 UTC+0300 Mindaugas Kavaliauskas (dbtopas/at/dbtopas.lt)
> * harbour/contrib/rddads/ads1.c
> ! Fixed date handling in area putValue method for .dbf tables.
> ADS does not support dates smaller than 0001-01-01 and stores
> invalid values in .dbf without any error. F.e., 0000-01-01 is
> stored as '-0011231', CTOD("")+5 is stored as '****1128'. Such
> invalid filed values generates ADS runtime error 5095 later on
> getValue area method.
> DBF RDD stores empty dates in case of unsupported date range.
> This fix makes ADS RDD behaviour more compatible to DBF RDD.
> ADSADT behaviour is not changed because ADS allows to store
> and retrieve field values for dates before 0001-01-01.
ADS should support in DBF (at least in VFP mode) julian date fields
as 32bit little endian integer values {"D", 4, 0} which do not use
string representation.
As I can see your modification effected also such fields.
I think that you should change the condition from:
pArea->iFileType != ADS_ADT
to:
pField->uiLen == 8
or
pField->uiLen != 4
(AFAIR uiLen == 3 in ADS DBFs is SIX3 packed date with the same
restrictions as string version)
best regards,
Przemek
_______________________________________________
Harbour mailing list (attachment size limit: 40KB)
[email protected]
http://lists.harbour-project.org/mailman/listinfo/harbour