Icon View Thread

The following is the text of the current message along with any replies.
Messages 1 to 3 of 3 total
Thread EDB 2.02 b11 problem
Thu, Apr 9 2009 11:59 AMPermanent Link

"Hedley Muscroft"
Hi Tim,

Thanks for the Build 11 update - the fixes are much appreciated. However, I
just migrated a customer from DBISAM 4 to EDB 2.02 b11 using the latest
unicode migrator.

On trying to fill a DataTable from a DataAdapter, I get the following error
:-

---------------------------------------
System.ArgumentException
Not a legal OleAut date.

  at System.DateTime.DoubleDateToTicks(Double value)
  at System.DateTime.FromOADate(Double d)
  at Borland.Delphi.TDateTime.FromOADate(Double AValue)
  at Borland.Delphi.TDateTime.op_Implicit(Int32 AValue)
  at
Elevate.ElevateDB.Data.Engine.Units.edbdatetime.TimeStampToDateTime(TTimeStamp$edbdatetime
ATimeStamp)
  at
Elevate.ElevateDB.Data.Engine.Units.edbdatetime.TimeStampToNativeDateTime(Int64
TimeStamp)
  at Elevate.ElevateDB.Data.Engine.TEDBValue.GetAsDateTime()
  at Elevate.ElevateDB.Data.Engine.TEDBValue.get_AsDateTime()
  at Elevate.ElevateDB.Data.Engine.TEDBValue.GetAsVariant()
  at Elevate.ElevateDB.Data.EDBDataReader.GetValues(Object[] Values)
  at
System.Data.ProviderBase.DataReaderContainer.CommonLanguageSubsetDataReader.GetValues(Object[]
values)
  at System.Data.ProviderBase.SchemaMapping.LoadDataRow()
  at System.Data.Common.DataAdapter.FillLoadDataRow(SchemaMapping mapping)
  at System.Data.Common.DataAdapter.FillFromReader(DataSet dataset,
DataTable datatable, String srcTable, DataReaderContainer dataReader, Int32
startRecord, Int32 maxRecords, DataColumn parentChapterColumn, Object
parentChapterValue)
  at System.Data.Common.DataAdapter.Fill(DataTable[] dataTables,
IDataReader dataReader, Int32 startRecord, Int32 maxRecords)
  at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset,
DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String
srcTable, IDbCommand command, CommandBehavior behavior)
  at System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32
startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)
  at System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)
  at ClinicOffice.cDB_EDB.FillTable(DataTable Table, String SQL)
---------------------------------------

I tried running a DBISAM repair on all their tables, then I did the
migration again, and then I ran an EDB repair on all tables. Unfortunately
the same error still persists.

I did all this remotely (via LogMeIn) so what I'm now trying to do is get
hold of a copy of their database to see if I can reproduce the problem here.

Time is pressing on this one so I just thought I'd ask if you have any idea
from the stack trace what may be causing the problem?

Thanks!
Thu, Apr 9 2009 6:00 PMPermanent Link

"Hedley Muscroft"
On researching this further I found some good explanations here :-
http://stackoverflow.com/questions/310700/meaning-of-exception-in-c-app-not-a-legal-oleaut-date

I don't know why this problem would be flagged up only after migrating from
DBISAM 4 to EDB, but it does - and it also only shows up as a problem in the
ADO.NET (no problem in EDB Manager or Delphi <sigh>).

Anyway - I investigated the table in question and (eventually) found a date
in the year 0008.

Removing the invalid values fixed the problem. In case it helps anyone else,
I used the following SQL :-

update tbl set datefld = null where (extract(year from datefld) < 1000) or
(extract(year from datefld) > 3000);

Thought I'd post this in case it's of use to anyone else.

Regards,

Hedley
Mon, Apr 13 2009 8:30 AMPermanent Link

Tim Young [Elevate Software]

Elevate Software, Inc.

Avatar

Email timyoung@elevatesoft.com

Hedley,

<< Thought I'd post this in case it's of use to anyone else. >>

Very much so - thanks for the update.

--
Tim Young
Elevate Software
www.elevatesoft.com

Image