以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  赋值问题  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=173055)

--  作者:shenfengxiaozi
--  发布时间:2021/11/12 16:51:00
--  赋值问题

dim a1 as integer

 

dim b1 as integer

 

有10个 label ,值都是数字,名称分别为 label1--label10,

表A有10个逻辑列,名称分别为第一列--第十列,

而这10个列中,当前行有且只有2个值为TRUE.

需要按以下规律 给 a1 ,b1 赋值

 

比如

 

if Tables("表A").Current("第一列") = true  \'(列号为1 )\' and Tables("表A").Current("第列") = true \'(列号为3)\'  then

 

if forms("窗口1").controls(label1).txt < forms("窗口1").controls(label3).txt  then   

 

a1=forms("窗口1").controls(label1).txt        \'取 值为true的当前行的2个列的列号对应的label的值,把较小的值给a1,较大的给a2.

b1=forms("窗口1").controls(label3).txt

else

b1=forms("窗口1").controls(label1).txt

a1=forms("窗口1").controls(label3).txt

 

end if

end if

 

考虑所有的情况,如何用简洁的代码写?谢谢、

 

 

 

 

 

 

 


--  作者:有点蓝
--  发布时间:2021/11/12 16:57:00
--  
看不懂您说的规律。截图举例说明一下。
--  作者:shenfengxiaozi
--  发布时间:2021/11/12 17:13:00
--  

 


图片点击可在新窗口打开查看此主题相关图片如下:捕获12121.jpg
图片点击可在新窗口打开查看

 

 

把较小的赋值给a1

较大的赋值给b1

[此贴子已经被作者于2021/11/12 17:15:36编辑过]

--  作者:有点蓝
--  发布时间:2021/11/12 17:31:00
--  
dim a1 as integer = -1
dim b1 as integer = -1
dim r as row = Tables("表A").current
for i as integer = 0 to Tables("表A").cols.count - 1
if r(i) = true then
dim v as integer = val(forms("窗口1").controls("label" & (i+1)).txt)
if a1 = -1 then 
a1 = v
else 
if v> a1 then
b1 = v
else
b1 = a1
a1 = v
end if
end if
end if
next