我对VFP知之甚少,但我的任务是对一个相当大的表进行一些数据更改。在命令窗口中运行标准SQL更新命令时,VFP声明记录正在更新,但它们永远不会更改。
我试过了:
UPDATE selections ;
SET selections.gender = "FEMALE" ;
WHERE selections.gender = "F"
VFP报告称它在大约十秒内更新了4221674条记录(预期数量)。但是当我重新询问桌子时,性别领域没有改变。
以防万一这是基于我试图更新我正在过滤的字段的事实,我尝试了这个:
UPDATE selections ;
SET selections.gender = "FEMALE" ;
WHERE Urn = "946000001484066"
据报道已更新1条记录但未进行任何更改。
我做错了什么?是否存在我需要调用的某种后命令进程,比如当您将记录标记为删除然后进行实际的删除步骤时?
编辑:这......REPLACE ALL gender WITH "FEMALE" for gender = "F"
具有相同的效果 - 它说它已经取代了400万条记录,但数据似乎没有改变。
我发现我似乎无法向表中添加字段,这表明存在某种锁定。但我看不到任何相关的设置。
答案 0 :(得分:2)
表格结构可能只是性别中的一个字符,因为一个人只能是生物学上的男性或女性,而且简称为" M"或" F"分别
VFP只是没有唠叨你,你试图写一个比表中的列可以处理更大的字符串值,因此只保留" F"出于"女性"尝试。
如果您希望某些报告中的输出显示完整的性别参考,您可以在sql查询中执行类似的操作来获取数据。
select ;
iif( s.gender = "F", "FEMALE", "MALE" ) as ShowThisGender,;
s.OtherColumns ;
from ;
Selections s;
where ;
conditions...
如果您在VFP中,要确认结构,请在命令窗口中键入
use Selections
display structure
为了澄清,您可以使用显式路径引用来确定您的选择表所在的位置,例如
use X:\SomePath\SubPath\Selections