当前位置: 代码迷 >> VFP >> VC中怎么创建DBF格式的表格
  详细解决方案

VC中怎么创建DBF格式的表格

热度:1606   发布时间:2013-02-26 00:00:00.0
VC中如何创建DBF格式的表格
在VC中如何创建DBF格式的表格,最好能够有实例代码?

------解决方案--------------------------------------------------------
是创建DBF表吧,不应该是表格,这是两回事。

1、VC有没有导出DBF或Excel功能。
2、参考一下DBF表的文件格式:

表文件结构 (.dbc, .dbf, .frx, .lbx, .mnx, .pjx, .scx, .vcx)
相关信息
全部折叠 全部展开
Visual FoxPro 使用表来储存定义不同文件类型的数据。下面的列表包含了储存为表的文件类型:

数据库(.dbc)

表单(.scx)

标签(.lbx)

菜单(.mnx)

项目(.pjx)

报表(.frx)

表(.dbf)

可视类库(.vcx)

由于这些文件实际上是表,因此,可以用浏览任何表文件的同样方式来使用和浏览这些文件。

一个表文件由头记录和数据记录组成。头记录定义表的结构和并包含与表有关的任何其他信息。头记录开始于文件位置 0。数据记录以连续的字节跟随着头记录,并包含字段中的实际文本。

注意:
数据文件中的数据开始于头记录 8 到 9 字节中指出的位置。数据记录以删除标记字节开始,如果该字节是一个 ASCII 空格(0x20),则该记录没有删除。如果这个首字节是一个星号(0x2A),则该记录已删除。来自字段子记录中指定字段的数据跟随着删除标记。
 


 

以字节为单位的记录长度,由所有字段已定义长度的和确定。表文件中的整数首先储存高位字节。

有关不同文件类型表结构的信息,请参见 表文件的表结构。


表头记录结构
 
偏移字节 描述
0
文件类型:
0x02 FoxBASE
0x03 FoxBASE+/Dbase III plus,没有备注
0x30 Visual FoxPro
0x31 Visual FoxPro,启用自动增量
0x32 Visual FoxPro,启用 Varchar、Varbinary 或 Blob
0x43 dBASE IV SQL 表文件,没有备注
0x63 dBASE IV SQL 系统文件,没有备注
0x83 FoxBASE+/dBASE III PLUS,带有备注
0x8B dBASE IV 带有备注
0xCB dBASE IV SQL 表文件,带有备注
0xF5 FoxPro 2.x (或以前)带有备注
0xFB FoxBASE

1 - 3
最后更新(YYMMDD)

4 – 7
文件中的记录数

8 – 9
第一条数据记录的位置

10 – 11
一条数据记录的长度,包括删除标记

12 – 27
保留

28
表标记:
0x01 带有结构 .cdx 的文件
0x02 带有 Memo 字段的文件
0x04 是数据库(.dbc)的文件
该字节可以包含任何上述值的和。例如:0x03 值表示该表带有结构 .cdx 和 Memo 字段。

29
代码页标记

30 – 31
保留,包含 0x00

32 – n
字段子记录
字段数决定了字段子记录的数量。表中的每个字段都存在一个字段子记录。

n+1
头记录终止符(0x0D)

n+2 to n+264
一个 263 字节的范围,包含了相关数据库(.dbc)文件相对路径的后链信息。如果第一个字节是 0x00,则该文件不于数据库关联。因此,数据库文件总是包含 0x00。


字段子记录结构
 
偏移字节 描述
0 – 10
带有 10 个字符最大值的字段名。如果小于 10,则用空字符(0x00)填补。

11
字段类型:

W - 二进制大型对象(Blob)

C – 字符(Character)

C – 字符(二进制)(Character (binary))

Y – 货币(Currency)

B – 双精度(Double)

D – 日期(Date)

T – 日期时间(DateTime)

F – 浮点(Float)

G – 通用(General)

I – 整型(Integer)

L – 逻辑(Logical)

M – 备注(Memo)

M – 备注(二进制)(Memo (binary))

N – 数值(Numeric)

P – 图片(Picture)

Q - 可变长度二进制(Varbinary)

V - 可变长度字符(二进制)(Varchar (binary))

注意:
对于每个 Varchar 和 Varbinary 字段,在最后一个系统字段(一个隐藏字段,储存所有可以为 Null 的字段的 Null 状态)中被分配一位或“varlength”位。如果 Varchar 或 Varbinary 字段可以为 Null,则 Null 位跟随在“varlength”位后。如果“varlength”位被设置为 1,实际字段值长度的长度被储存在该字段的最后字节中。否则,如果该位被设置为 0,该值的长度等于字段大小。
 


 

12 – 15
记录中字段的偏移量

16
字段长度(字节数)

17
小数位数

18
字段标记:
0x01 系统列(对用户不可见)
0x02 可以储存 Null 值的列
0x04 Binary 列(只用于 CHAR 和 MEMO)
0x06 (0x02+0x04) 当字段是 NULL 和 Binary(Integer、Currency 和 Character/Memo 字段)
0x0C 自动增量列

19 - 22
自动增量的 Next 值

23
自动增量的 Step 值

24 – 31
保留


有关每条记录字符数限制、最多字段数等信息,请参见 Visual FoxPro 系统功能。


解释
当打开或添加字段值的自动增量时,Visual FoxPro 会修改表头。

除非在该文件中添加了下列其中一个功能,否则,Visual FoxPro 不会修改被储存为 FoxPro 2.x 文件格式的文件头:

Null 值支持

DateTime、Currency 和 Double 数据类型

被标记为 Binary 的 CHAR 或 MEMO 字段

被添加到数据库(.dbc)文件的表

提示:
可以使用下列公式返回表文件中的字段数:(x – 296/32)。在该公式中,x 是第一条记录的位置(表头记录中的 8 到 9 字节),296 是 263 (后链信息) + 1 (头记录终止符) + 32 (第一个字段子记录),并且,32 是字段字记录的长度。
  相关解决方案