FoxPro - 具有 INTO TABLE 的列名称的字符限制
FoxPro - character limit on column names with INTO TABLE
我们的一个系统仍然运行在 Visual FoxPro 数据库上运行。这是我生命中的祸根。
在调查最近的一个错误时,我发现它是由列名错误引起的。原始数据库有一个名为 SELECTIONS
的 table 和一个名为 mediumValue
的列,长度为 11 个字符。该错误是由另一个 table 引起的,该数据基于该数据将列重命名为 mediumValu
。
问题的根源似乎是这条语句:
SET DELETED ON
SELECT selections.*;
FROM ;
SELECTIONS;
WHERE
//criteria
INTO TABLE Result.dbf
如果您只是 运行 select 而没有 INTO TABLE
,该列将显示为 mediumValue
。但是对于 INTO TABLE
,结果 Result.dbf
table 的列名为 mediumValu
.
我认为这是某种内置的 t运行cation 是否正确,是否有任何记录?有什么我可以覆盖的设置来修复它吗?
您对外部 table 的截断是正确的。在 VFP 中,数据库容器 (.dbc) 允许 tables 的列名长度超过 "free" table 的默认最大值 10 个字符(即:不与数据库关联) .所以,原来的 11 个字符可能是有效的,因为它是数据库容器的一部分。
现在,如果您这样做是为了进行一些临时处理以处理程序另一区域的数据,您总是可以 select
INTO CURSOR C_MyTestResults readwrite
这样,它是内存中的 table 并且将保留完整的列名长度。 READWRITE 子句将允许您在工作时更改游标数据,就像它本身也是 table 一样。
我喜欢使用 "C_" 作为 table 结果别名的前缀,所以我知道它是 "CURSOR" 而不是生产 table,并且知道我不会根据手头的任务来处理生产数据。
如果需要执行vfp命令select ..into table..
,字段名称超过10个字符,必须使用database
子句。
例如:
SELECT selections.*;
FROM ;
SELECTIONS;
WHERE
//criteria
INTO TABLE Result.dbf DATABASE dbUser
如果您没有相应的数据库 (dbUser.dbc),您可以创建它:
create database c:\dbUser
我们的一个系统仍然运行在 Visual FoxPro 数据库上运行。这是我生命中的祸根。
在调查最近的一个错误时,我发现它是由列名错误引起的。原始数据库有一个名为 SELECTIONS
的 table 和一个名为 mediumValue
的列,长度为 11 个字符。该错误是由另一个 table 引起的,该数据基于该数据将列重命名为 mediumValu
。
问题的根源似乎是这条语句:
SET DELETED ON
SELECT selections.*;
FROM ;
SELECTIONS;
WHERE
//criteria
INTO TABLE Result.dbf
如果您只是 运行 select 而没有 INTO TABLE
,该列将显示为 mediumValue
。但是对于 INTO TABLE
,结果 Result.dbf
table 的列名为 mediumValu
.
我认为这是某种内置的 t运行cation 是否正确,是否有任何记录?有什么我可以覆盖的设置来修复它吗?
您对外部 table 的截断是正确的。在 VFP 中,数据库容器 (.dbc) 允许 tables 的列名长度超过 "free" table 的默认最大值 10 个字符(即:不与数据库关联) .所以,原来的 11 个字符可能是有效的,因为它是数据库容器的一部分。
现在,如果您这样做是为了进行一些临时处理以处理程序另一区域的数据,您总是可以 select
INTO CURSOR C_MyTestResults readwrite
这样,它是内存中的 table 并且将保留完整的列名长度。 READWRITE 子句将允许您在工作时更改游标数据,就像它本身也是 table 一样。
我喜欢使用 "C_" 作为 table 结果别名的前缀,所以我知道它是 "CURSOR" 而不是生产 table,并且知道我不会根据手头的任务来处理生产数据。
如果需要执行vfp命令select ..into table..
,字段名称超过10个字符,必须使用database
子句。
例如:
SELECT selections.*;
FROM ;
SELECTIONS;
WHERE
//criteria
INTO TABLE Result.dbf DATABASE dbUser
如果您没有相应的数据库 (dbUser.dbc),您可以创建它:
create database c:\dbUser