在vf中,通过赋值,可以改变内存变量的值,还可以改变它的什么

在vf中,通过赋值,可以改变内存变量的值,还可以改变它的什么,第1张

在VF中,通过赋值,可以改变内变量的值,还可以改变它的类型。
VFP中共定义了6种类型的内存变量:数值型、字符型、日期型、日期时间型、逻辑型和货币型。内存变量可以在被赋值时自动创建,内存变量的类型与所赋值的常量的类型相同。

将数据存入内存变量、数组或数组元素中。
STORE eExpression TO VarNameList | ArrayNameList或者
VarName | ArrayName = eExpression
参数
eExpression
指定一个表达式,该表达式的值将存入内存变量、数组或数组元素中。如果指定内存变量不存在,则创建该内存变量,并且将其初始化为 eExpression。数组必须先用 DIMENSION 命令定义。STORE 命令用新值替换现有的内存变量、数组或数组元素中的值。
VarNameList
指定内存变量或数组元素的列表,将 eExpression 存入这些内存变量或数组元素中。内存变量名或数组元素之间用逗号分隔。
ArrayNameList
指定 eExpression 所要存入的、已存在的数组名,数组名之间用逗号分隔。
如果 SET COMPATIBLE 为 OFF,那么 STORE 命令用指定值初始化数组中的每一个元素;如果 SET COMPATIBLE 为 ON,STORE 命令将指定值存入指定名称的内存变量中,并改写任何已存在的同名数组。
备注
等号 (=) 赋值 *** 作符可代替 STORE 命令。内存变量、数组或数组元素必须位于等号的左边,其值位于等号的右边。
使用花括号可以将日期直接存入内存变量、数组或数组元素:
STORE {^1998-12-25} TO gdXMas
帮助中的“系统容量”列出了能够创建的变量或数组的最大数。在 Visual FoxPro 配置文件中可以增加或减少此限制。有关配置 Visual FoxPro 的详细内容,请参阅 配置 Visual FoxPro。
示例
STORE DATE() TO gdDate
STORE 50 TO gnNumeric
STORE 'Hello' TO gcCharacter
STORE T TO glLogical
STORE $1999 TO gyCurrency
DIMENSION gaMyArray(2,2)
SET COMPATIBLE OFF
STORE 2 TO gaMyArray
CLEAR
DISPLAY MEMORY LIKE g

这是个非常简单的问题如果你定义"实发工资"为一个变量,而"基本工资"、"水电"和"奖金"是数据表的字段,那么变量“实发工资”的赋值语句就是:实发工资=基本工资+奖金-水电费 另外:我感觉水电费应该是扣款的,所以用减法

把数组赋给一个变量,不可行的,但是把组数赋给另一个组是可以的。
如果是把数组中的一个分量赋组一个变量是可以的,比如将数组A的第i个变量赋给,变量b可用:
b=A[i]来实现。如果是赋给另一数组可用循环实现。
相关的内容,可参阅教科书。

1
CLOSE TABLE ALL
USE E:\TEMP\表B ALIAS 表B IN 0
SELECT 0
USE E:\TEMP\表A ALIAS 表A
SCAN
SELECT 表B
REPL 字段2 WITH 表A字段1
SKIP
SELECT 表A
ENDSCAN
以上代码即可将表A的字段1的值赋给表B字段2条件是表B表的记录数不少于表A的记录数
2
CLOSE TABLE ALL
SELECT 0
USE E:\TEMP\表B ALIAS 表B EXCL
INDEX ON 字段3 TAG 字段3
SELECT 0
USE E:\TEMP\表A ALIAS 表A
SET RELATION TO 字段3 INTO 表B
BROW FIELDS 字段3 FOR EMPTY(字段1) NOWAIT
SELECT 表B
BROW FIELDS 字段3,字段2 NOWAIT
SELECT 表A
此时你用光标键在表A中移动记录,同时可以看到表B的浏览窗口中字段3值与表A字段3值相同的对应的记录
附:表的结构及数据
表A 的结构:
字段1 D 8
字段3 C 20
记录:
字段1 字段3
20080101 001
20080206 002
003
20080305 004
20080315 005
006
20080808 007
表B 的结构:
字段2 D 8
字段3 C 20
记录:
字段2 字段3
001
20080530 003
004
006
20081208 007
补充回答:
这个问题并不难!
CLOSE TABLE ALL
SELECT 0 &&在可用空闲数据区打开表A
USE E:\TEMP\表A ALIAS 表A EXCL &&独享打开表A,目的是要对其建立索引
INDEX ON 字段3 TAG 字段3 &&对字段3建立索引,索引名就叫'字段3'
SELECT 0 &&在可用空闲数据区打开表B
USE E:\TEMP\表B ALIAS 表B &&表B可以不需索引,因此可共享打开
SET RELATION TO 字段3 INTO 表A &&建立表B与表A的以字段3为关键字段的关系
REPL 表B字段2 WITH 表A字段1 FOR 表B字段3 = 表A字段3 AND !EMPTY(表A字段1) &&用表A的字段1去置换表B的字段2,条件是两个表的字段3相同并且表A的字段1不为空
_TALLY &&这个内存变量表示刚刚进行了多少条记录的 *** 作也就是有多少条记录的表A字段3 = 表B字段3并且表A字段1不为空
显示结果:
SELECT 表A字段3, 表A字段1, 表B字段3, 表B字段2 ;
FROM 表A INNER JOIN 表B ;
ON 表A字段3 = 表B字段3
注:根据提问人的要求,已将表B的记录减少,并使字段2的内容为空这样就不需要前面的第1点的回答了你可以将代码拷贝到VFP60中执行表A,表B都位于E:\TEMP文件夹内请注意按实际修改路径


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/13198558.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-06-19
下一篇 2023-06-19

发表评论

登录后才能评论

评论列表(0条)

保存