Revision: 13020 http://harbour-project.svn.sourceforge.net/harbour-project/?rev=13020&view=rev Author: snaiperis Date: 2009-11-25 17:11:56 +0000 (Wed, 25 Nov 2009)
Log Message: ----------- 2009-11-25 19:10 UTC+0200 Mindaugas Kavaliauskas (dbtopas/at/dbtopas.lt) * harbour/contrib/rddads/ads1.c * changed field type mapping of HB_FT_* define, ADS_* define, DBCREATE()/DBSTRUCT() array type member. Now we have mapping compatible to DBF files as much as possible. ; INCOMPATIBILITIES to old ads1.c: * ADS_VARCHAR is mapped to HB_FT_VARLENGTH instead of old mapping to HB_FT_MEMO. HB_FT_MEMO has a fixed size in DBF (ex., 10), but ADS_VARCHAR is variable length field, so, HB_FT_VARLENGTH much more correct * fieldinfo method (DBSTRUCT() at .prg level) returns one byte field type if possible. The exceptions are RAW, CICHARACTER, and VARBINARY fields. So, you'll get a DBF compatible type P instead of IMAGE, B instead of DOUBLE, T instead of TIME, etc. Other field mappings are extension to existing code and should not be seen as incompatibility to end used. ; Current field type mappings are: C; Character,n HB_FT_STRING,n ADS_STRING N; Numeric,n,d HB_FT_LONG,n,d ADS_NUMERIC D; Date,n HB_FT_DATE,3 or 4 or 8 ADS_COMPACTDATE; ADS_DATE ShortDate HB_FT_DATE,3 ADS_COMPACTDATE L; Logical HB_FT_LOGICAL,1 ADS_LOGICAL M; Memo,n HB_FT_MEMO,4 or 9 or 8 ADS_MEMO B; Double,,d HB_FT_DOUBLE,8,d ADS_DOUBLE I; Integer,n HB_FT_INTEGER, 2 or 4 or 8 ADS_SHORTINT; ADS_INTEGER; ADS_LONGLONG ShortInt HB_FT_INTEGER,2 ADS_SHORTINT Longlong HB_FT_INTEGER,8 ADS_LONGLONG P; Image HB_FT_IMAGE,9 or 10 ADS_IMAGE W; Binary HB_FT_BLOB,4 or 9 or 10 ADS_BINARY Y; Money HB_FT_CURRENCY,8,4 ADS_MONEY Z; CurDouble,,d HB_FT_CURDOUBLE,8,d ADS_CURDOUBLE T,4; Time HB_FT_TIME,4 ADS_TIME @; T,8; TimeStamp HB_FT_TIMESTAMP,8 ADS_TIMESTAMP +; AutoInc HB_FT_AUTOINC,4 ADS_AUTOINC ^; RowVersion HB_FT_ROWVER,8 ADS_ROWVERSION =; ModTime HB_FT_MODTIME,8 ADS_MODTIME Raw,n HB_FT_STRING,n (+HB_FF_BINARY) ADS_RAW Q; VarChar,n HB_FT_VARLENGTH,n ADS_VARCHAR; ADS_VARCHAR_FOX VarBinary,n HB_FT_VARLENGTH,n (+HB_FF_BINARY) ADS_VARBINARY_FOX; ADS_RAW CICharacter,n HB_FT_STRING,n ADS_CISTRING ; ADS help has many ambiguities. Here is the most important I found: * Both ADS_VARCHAR and ADS_VARCHAR_FOX defines exists, but VarChar filed type is documented only for VFP DBFs. Does commom DBF support this field type? * It is not clear what ADS_* define corresponds to VarBinary field. Both ADS_VARBINARY_FOX and ADS_RAW does not sound to be a good choice. * ADS documents field types CharacterNoCPTrans, MemoNoCPTrans, VarCharNoCPTrans available in VFP tables, but no corresponding ADS_* defines exist. These type are not supported by RDDDADS. * Autoincrement field type in DBF is called "Autoinc", in ADT "Autoicrement". Test shows that both name are acceptedt by AdsCreateTable(). * ADS_LONGLONG define exists, but LomgLong field type is not documented at all. It is not clear how to pass field type to AdsCreateTable(): "Integer,8" or "LongLong". Test required! * Can extended DBF types like ShortDate and Image be used with VFP DBF files? (Some other field typess are defined twice both in extended DBF and VFP DBF) * Documented field type ShortInteger generates 5012 ADS error on AdsCreateTable(). A simple workaround used: "ShortInt" passed instead of documented field name. ! Some ANSI <-> OEM translations moved under ADS_USE_OEM_TRANSLATION switch (the other translations was already there) ; Please, test and report bugs. Modified Paths: -------------- trunk/harbour/ChangeLog trunk/harbour/contrib/rddads/ads1.c This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. _______________________________________________ Harbour mailing list (attachment size limit: 40KB) Harbour@harbour-project.org http://lists.harbour-project.org/mailman/listinfo/harbour