我正在使用Btrieve和Pervasive SQL Control Center来创建表。该表有3列:char 20,char 20,& char 50.第一列是主键。当我通过代码插入记录时,第二列的第一个字符总是丢失。我假设因为第一列覆盖了它。在调查我为什么加载文件信息编辑器。文件规范将记录长度列为92.这对我没有意义,因为我清楚地将表定义为记录长度为90.
我也得到错误22,这表示我的缓冲区在代码中的记录长度和实际的表记录长度不同。
要修复第二列中缺少的第一个字符,我在代码中更改了缓冲区,因此第一列的长度为21个字符。我还将第3列更改为51以修复错误22。
当我在创建表格时将记录长度明确定义为90时,如何在我的示例中将记录长度设置为92?
答案 0 :(得分:1)
您最有可能看到的是Btrieve / Pervasive中“空”处理的工件
使用Btrieve创建文件时,可以逐字节地布局记录。当Pervasive引擎添加“True Null”支持时,任何创建为可空的列(默认值)都会在Btrieve文件中为字段添加前缀。这允许引擎知道字段是空还是空字符串
因为你的表有三列,所以应该有三个额外的字节,但因为其中一列是主键,所以它不是全为空,所以你只有两个额外的字节。
在您的情况下,如果您有一个现有的Btrieve文件并创建了SQL定义,那么在某些情况下这些额外的字段将不存在。
您有两种选择:
重新启动“True Null”支持的表格。这是通过在Set TrueNullCreate = Off
命令之前发出Create Table
命令来完成的。
将Not Null
添加到表中的所有列并重新创建表。