我不确定标题应该是什么,如果您能提出更好的建议,请随时编辑我的帖子并进行更改。
使用Foxpro的资源并不多,我要做的就是了解正在发生的事情。
lldisdead=.t.
Select .f. as chkbox, * from a_counties ;
order by cn_area, cn_desc ;
into dbf (StrTmpFile1)
scan while !EOF()
IF ChkBox
selected_some_cnty = .t
endif
endscan
这是我的理解:
IF CHKBOX
是什么意思?
是说如果CHKBOX列不为空,请执行以下操作, 否则,什么都不做。
编辑:添加了其他代码
答案 0 :(得分:2)
从SQL查询中,数据将根据变量“ StrTmpFile1”指向的内容进入物理表。还要注意,此select语句的第一列是“ .f。as ChkBox”。因此,这为查询中的每个记录都准备了始终为False(因此为.f。)的前导列。
Select .f. as chkbox, * from a_counties ;
order by cn_area, cn_desc ;
into dbf (StrTmpFile1)
现在,我怀疑还有其他一些使用此结果表的用户界面操作,例如以表格形式显示在网格中,并允许列上的复选框让用户选择一个或多个条目来做进一步的操作
进行上述选择后(再次,推测意图),将仅通过循环查找表中“ ChkBox”列已设置为true并将标记设置为.t的那些记录。选择了某些东西。
总体而言,这是一个非常新手的方法,但这是一个不同的问题。如果记录已标记,则获取答案的快捷方式
select (the table)
Locate for ChkBox
selected_some_cnty = found()
希望这会有所帮助,如果您需要其他说明,请发表评论。
答案 1 :(得分:2)
If chkBox
在VFP中,表示:
if (chkBox)
在所有其他众所周知的语言中也是如此,例如C,C ++,C#,Java,Go,Dart,Ruby,...您也可以这样命名-某些语言的括号是强制性的,而有些则不是。它仅表示“ 如果chkBox为true ”。有时您会看到它写为:
If chkBox = .T.
喜欢:
If chkBox == true
就像其他语言一样,但是它比所需的更为冗长,并且经验丰富的开发人员不会这样写(毕竟,“ if true为真”这样的写法很尴尬,只是“ 如果为真”就可以)。
对此进行了解释,并在代码中添加了注释:
* Initialize a memory variable named lldisdead as .t. (true)
lldisdead=.t.
* Select some fields into a table named m.StrTmpFile1
* StrTmpFile1 is a variable holding a string name of the table
* selecting all fields of a_counties table
* plus a boolean field named "chkBox" which is initially
* filled with .F. (false) value
Select .f. as chkbox, * from a_counties ;
order by cn_area, cn_desc ;
into dbf (StrTmpFile1)
* select's result table is table open in the current
* work area and by default located on first record.
* scanning the whole table
* with an unnecessary "while !EOF()" addition
* Default scope of scan is until EOF
scan while !EOF()
* Checking if chkBox field has a value of true
IF ChkBox
* if it has, than set "selected_some_cnty" memory variable to true
selected_some_cnty = .t
endif
endscan
话虽如此,这部分:
scan while !EOF()
IF ChkBox
selected_some_cnty = .t.
endif
endscan
可以写为:
scan
IF ChkBox
selected_some_cnty = .t
endif
endscan
更多:
LOCATE FOR ChkBox
selected_some_cnty = !EOF()
但是,由于我们知道所有chkBox值都是.F。,所以这段代码完全没有用,可以一起删除。