I'm trying to open 1GB DBF table with 255 fields on it. X# is complaining and exception is thrown with following message:
"Exception of type 'XSharp.RDD.RddError' was thrown."
The actual description is : "Field 'DAYSCMPL' is not valid"
The field in this table is N(3,2) with index on it. There are no rows with **** on it and the table is opened without issues through VFP.
Any thoughts?
Dimitar
Can't open DBF table
Can't open DBF table
Hi Dimitar,
Please create a copy of the file and then delete all its records except just a couple of them. Does the error still happen? If yes, can you please post it here or send it directly to us to have a look? If not, it means there's something specific about the original data, in which case would it be possible to send the complete file? Of course it will be handled with privacy if it contains sensitive data.
Please create a copy of the file and then delete all its records except just a couple of them. Does the error still happen? If yes, can you please post it here or send it directly to us to have a look? If not, it means there's something specific about the original data, in which case would it be possible to send the complete file? Of course it will be handled with privacy if it contains sensitive data.
Chris Pyrgas
XSharp Development Team
chris(at)xsharp.eu
XSharp Development Team
chris(at)xsharp.eu
Can't open DBF table
Hey Chris,
I grabbed just first 10 records into a separate table with same struct. Got same error I send this example to you.
Thanks
Dimitar
I grabbed just first 10 records into a separate table with same struct. Got same error I send this example to you.
Thanks
Dimitar
- Attachments
-
- work_temp.zip
- (5 KiB) Downloaded 89 times
Can't open DBF table
Hi Dimitar,
Thanks, I see where the problem is, it's because this numeric field has a length of 2 for decimals, with a total length of 3, while a total length of at least 4 is expected (decimals + 2).
So I guess VFP allows you to create such fields with no issue? What kind of values can you store in this field, I assume a field value of 1,23 cannot be stored correctly, or can it?
Thanks, I see where the problem is, it's because this numeric field has a length of 2 for decimals, with a total length of 3, while a total length of at least 4 is expected (decimals + 2).
So I guess VFP allows you to create such fields with no issue? What kind of values can you store in this field, I assume a field value of 1,23 cannot be stored correctly, or can it?
Chris Pyrgas
XSharp Development Team
chris(at)xsharp.eu
XSharp Development Team
chris(at)xsharp.eu
Can't open DBF table
Chris,
Foxpro allows this and then only stores the decimal point and 2 decimals. So the allowed values are between .01 and .99.
I opened the table and executed:
This shows that the value 999 was written.
A value > 999 throws a "Numeric Overflow" exception:
Btw I do not think we should support it in the same way.
Robert
Foxpro allows this and then only stores the decimal point and 2 decimals. So the allowed values are between .01 and .99.
I opened the table and executed:
Code: Select all
REPLACE dayscmpl WITH 999
? dayscmpl
A value > 999 throws a "Numeric Overflow" exception:
Btw I do not think we should support it in the same way.
Robert
XSharp Development Team
The Netherlands
robert@xsharp.eu
The Netherlands
robert@xsharp.eu
Can't open DBF table
Hi Robert,
Its a tricky on I admit. For VFP decimals are not strict. The fact that you have N(3,2) doesn't mean each number must have 2 decimals. In this case you can safely add 100 or 999 into the field. Of course attempting to put 1000 should end up with exception (in contrast with what VFP is doing).
I'm afraid there might be a lot of cases coming from VFP which does not respect the decimals the way you think they should do.
Kind Regards
Dimitar
Its a tricky on I admit. For VFP decimals are not strict. The fact that you have N(3,2) doesn't mean each number must have 2 decimals. In this case you can safely add 100 or 999 into the field. Of course attempting to put 1000 should end up with exception (in contrast with what VFP is doing).
I'm afraid there might be a lot of cases coming from VFP which does not respect the decimals the way you think they should do.
Kind Regards
Dimitar
Can't open DBF table
Dimitar
It is not the way "we" think, but the way it has been handled by all other Xbase dialects (Xbase++, Clipper, Visual Objects, Advantage, Six driver etc).
FoxPro is the only DBF implementation that allows a value of 999 to be written to a N 3,2 field.
I do not think it was intentional.
Open the DBF in FoxPro and type:
and then try to enter the value 999 in a blank field: it won't work.
I think this is not a feature, but a bug.
Robert
It is not the way "we" think, but the way it has been handled by all other Xbase dialects (Xbase++, Clipper, Visual Objects, Advantage, Six driver etc).
FoxPro is the only DBF implementation that allows a value of 999 to be written to a N 3,2 field.
I do not think it was intentional.
Open the DBF in FoxPro and type:
Code: Select all
BROWSE FIELDS dayscmpl
I think this is not a feature, but a bug.
Robert
XSharp Development Team
The Netherlands
robert@xsharp.eu
The Netherlands
robert@xsharp.eu
Can't open DBF table
I agree and I disagree.
Here is the DBF specs for Advantage server - https://devzone.advantagedatabase.com/d ... ations.htm
If you look at that file, you will find standard and non-standard implementations as well as VFP-specifics etc. And I know this is probably a huge pain to deal with all but if X# claims it works with one or another dialect, why should VFP dialect suffer from compatibility issues just because the DBF created with VFP are not compatible with DBFs created with Advantage for example (or vice versa)?
If I'm using VFP dialect I don't expect to be able to open DBFs created with Advantage if they contain advantage-specific dbf schema or field types. But I expect the dbf to be fully compatible, non-breakable if being used with X#. Not really expecting you try to fix some "bugs" within the schema.
Speaking about compatibilities - is NULL an option and recognizable? Its probably not for all dialects but if its not standard does it mean X# would throw an exception if trying to open a table with nullable field type? Or how do you cope with the memo field length since memo in VFP is 4 bytes while as it seems the standard is 10?
Dimitar
Here is the DBF specs for Advantage server - https://devzone.advantagedatabase.com/d ... ations.htm
If you look at that file, you will find standard and non-standard implementations as well as VFP-specifics etc. And I know this is probably a huge pain to deal with all but if X# claims it works with one or another dialect, why should VFP dialect suffer from compatibility issues just because the DBF created with VFP are not compatible with DBFs created with Advantage for example (or vice versa)?
If I'm using VFP dialect I don't expect to be able to open DBFs created with Advantage if they contain advantage-specific dbf schema or field types. But I expect the dbf to be fully compatible, non-breakable if being used with X#. Not really expecting you try to fix some "bugs" within the schema.
Speaking about compatibilities - is NULL an option and recognizable? Its probably not for all dialects but if its not standard does it mean X# would throw an exception if trying to open a table with nullable field type? Or how do you cope with the memo field length since memo in VFP is 4 bytes while as it seems the standard is 10?
Dimitar
Can't open DBF table
Hi Dimitar,
In the specifications you posted, it is clearly stated that for field type "Numeric", the size of decimals can be "0 to Length-2"![Smile :)](https://dt9qzg9h465rt.cloudfront.net/phpBB3/images/smilies/icon_e_smile.gif)
So there should not exist a Numeric ("N") field with total length 3 and length for decimals 2.
The other field types that are specific to VFP should be already supported in X#. If there is some that it is not, it's either a bug or work in progress.
In the specifications you posted, it is clearly stated that for field type "Numeric", the size of decimals can be "0 to Length-2"
![Smile :)](https://dt9qzg9h465rt.cloudfront.net/phpBB3/images/smilies/icon_e_smile.gif)
So there should not exist a Numeric ("N") field with total length 3 and length for decimals 2.
The other field types that are specific to VFP should be already supported in X#. If there is some that it is not, it's either a bug or work in progress.
Chris Pyrgas
XSharp Development Team
chris(at)xsharp.eu
XSharp Development Team
chris(at)xsharp.eu
Can't open DBF table
Yes I saw that ![Smile :)](https://dt9qzg9h465rt.cloudfront.net/phpBB3/images/smilies/icon_e_smile.gif)
But here is the case - all VFP community is used with this "bug" as its always being like that in Microsoft's Visual FoxPro. So you can imagine how many "validations" and how many tables exists out there with this bug utilized as a feature. This is quite of a problem if you ask me. Its not only about N(3,2) but also for N(5,2). You are free to enter values like 10000 in such field. For VFP this is legal value and I suppose for X# + VFP dialect it should be the same.
Dimitar.
![Smile :)](https://dt9qzg9h465rt.cloudfront.net/phpBB3/images/smilies/icon_e_smile.gif)
But here is the case - all VFP community is used with this "bug" as its always being like that in Microsoft's Visual FoxPro. So you can imagine how many "validations" and how many tables exists out there with this bug utilized as a feature. This is quite of a problem if you ask me. Its not only about N(3,2) but also for N(5,2). You are free to enter values like 10000 in such field. For VFP this is legal value and I suppose for X# + VFP dialect it should be the same.
Dimitar.