Foxtable(狐表)用户栏目专家坐堂 → 循环组合


  共有2150人关注过本帖树形打印复制链接

主题:循环组合

帅哥哟,离线,有人找我吗?
扶风
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:481 积分:3258 威望:0 精华:0 注册:2015/6/2 8:33:00
循环组合  发帖心情 Post By:2018/5/17 15:02:00 [只看该作者]

if A=0 then
update 数据1=A
else 
//if A=1
msgbox A已结案

if B=0 then
update 数据1=B
else 
//if B=1
msgbox B已结案

老师例如有好几个ABCDEFG之类的,之前是单独写的所以方便,现在想写在一起,因为有许多排列组合,不可能全部if出来,如何写方便呢?
比如IF A=0,C=0就 update  A和C,msgbox B(其他的)已结案

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/5/17 15:27:00 [只看该作者]

具体一点你的问题,逻辑是怎样的?或者用实例说明。

 回到顶部
帅哥哟,离线,有人找我吗?
扶风
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:481 积分:3258 威望:0 精华:0 注册:2015/6/2 8:33:00
  发帖心情 Post By:2018/5/17 15:43:00 [只看该作者]

if A=0 then
update 数据1=A
else
msgbox A已结案

if B=0 then
update 数据2=B
else
msgbox B已结案

if C=0 then
update 数据3=C
else
msgbox C已结案
比如目前这3个本来是3个按钮控制的,分段式的,各管各的
现在需要一键控制,这样不是就可能出现组合吗
比如
if A=0 then
update 数据1=A
else
msgbox B,C已结案
if B=0 then
update 数据2=B
else
msgbox A,C已结案
if A=0 then
update 数据1=A
else
msgbox B,C已结案
if B=0 and A=0 then
update 数据2=B,数据1=A
else
msgbox C已结案

如何用一个语句写出来,而不是写多个if全部举出来
[此贴子已经被作者于2018/5/17 15:45:03编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/5/17 15:53:00 [只看该作者]

判断变量是不是0?如果是0,就update,不是0,就msgbox?

 

Dim ary1() As String = {"A", "B", "C"}
Dim ary2() As Integer = {1,1,0}
Dim str As String = ""
For i As Integer = 0 To ary1.length-1
    If ary2(i) = 0 Then
        msgbox("update" & "  " & ary1(i))
    Else
        str &= ary1(i) & ","
    End If
Next
msgbox(str.trim(","))


 回到顶部
帅哥哟,离线,有人找我吗?
扶风
  5楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:481 积分:3258 威望:0 精华:0 注册:2015/6/2 8:33:00
  发帖心情 Post By:2018/5/21 15:52:00 [只看该作者]

Dim c1 As String = Forms("测试窗口").Controls("TextBox29" ).Value
Dim df1 As String = Forms("测试窗口").Controls("TextBox19" ).Value
Dim D1 As String = Forms("测试窗口").Controls("TextBox9" ).Value
Dim t1 As String = Forms("测试窗口").Controls("TextBox8" ).Value
Dim bh As String = Forms("测试窗口").Controls("TextBox39").Value
Dim wz As Integer = Tables("项目测试数据看板").FindRow("项目编号 = '" & bh & "'")
Dim ary1() As String = {"C", "D1","T","F","D2","L","BDV"}
Dim str As String = ""
For i As Integer = 0 To ary1.length-1
    If ary1(i) = "C" And Tables("项目测试数据看板").Current("C")=False Then
Dim cmd1 As New SQLCommand
cmd1.C
cmd1.CommandText = "u pdate {测试数据库} set [C] ='"& c1 &"',[DF]='"& df1 &"'  where 项目编号 = '" & bh & "' and 样本编号 =1"
  cmd1.ExecuteNonQuery
cmd1.CommandText = "u pdate {项目测试数据看板} set [C] =1 where 项目编号 = '" & bh & "' "
  cmd1.ExecuteNonQuery

    Else If ary1(i) = "D1" And Tables("项目测试数据看板").Current("D1")=0 Then
Dim cmd1 As New SQLCommand
cmd1.C
cmd1.CommandText = "u pdate {测试数据库} set [D1] ='"& D1 &"' where 项目编号 = '" & bh & "' and 样本编号 =1"
  cmd1.ExecuteNonQuery
cmd1.CommandText = "u pdate {项目测试数据看板} set [D1] =1 where 项目编号 = '" & bh & "' "
  cmd1.ExecuteNonQuery

    Else If ary1(i) = "T" And Tables("项目测试数据看板").Current("T")=0 Then
Dim cmd1 As New SQLCommand
cmd1.C
cmd1.CommandText = "u pdate {测试数据库} set [T] ='"& t1 &"' where 项目编号 = '" & bh & "' and 样本编号 =1"
  cmd1.ExecuteNonQuery
cmd1.CommandText = "u pdate {项目测试数据看板} set [T] =1 where 项目编号 = '" & bh & "' "
  cmd1.ExecuteNonQuery
Else
MessageBox.Show("已结案,不能再次操作!")
   Return
End If
Next

老师,如上,如果其中比如D1我单独反结案又变回了0,此时再点击,跳出的是"已结案,不能再次操作!",如何能做到点击后单独把D1变为1
想法是点击后如果是0的就全部变为1,是1的就跳已结案
[此贴子已经被作者于2018/5/21 16:50:31编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  6楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/5/21 15:55:00 [只看该作者]

没看懂你想表达什么,请上传一个具体的实例,说明你要做的功能。

 回到顶部
帅哥哟,离线,有人找我吗?
扶风
  7楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:481 积分:3258 威望:0 精华:0 注册:2015/6/2 8:33:00
  发帖心情 Post By:2018/5/21 16:53:00 [只看该作者]

Dim c1 As String = Forms("测试窗口").Controls("TextBox29" ).Value
Dim df1 As String = Forms("测试窗口").Controls("TextBox19" ).Value
Dim bh As String = Forms("测试窗口").Controls("TextBox39").Value
Dim wz As Integer = Tables("项目测试数据看板").FindRow("项目编号 = '" & bh & "'")

If Tables("项目测试数据看板").Current("C")=False Then

Dim cmd1 As New SQLCommand
cmd1.C
cmd1.CommandText = "u pdate {测试数据库} set [C] ='"& c1 &"',[DF]='"& df1 &"'  where 项目编号 = '" & bh & "' and 样本编号 =1"
  cmd1.ExecuteNonQuery
cmd1.CommandText = "u pdate {项目测试数据看板} set [C] =1,[DF]=1 where 项目编号 = '" & bh & "' "
  cmd1.ExecuteNonQuery

MessageBox.Show("结案成功!")
Else
MessageBox.Show("已结案,不能再次操作!")
   Return
End If

老师,之前是这样子的,每个单独分开的,比如C,D,F都有各自的按钮就3个了,现在想弄个一键按钮,把所有的都一次性生成,就大致是上面5楼的样子,想法是这样的
[此贴子已经被作者于2018/5/21 16:56:59编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  8楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/5/21 17:01:00 [只看该作者]

那你直接把你以前那些按钮的代码写在一起,就可以了的啊。
[此贴子已经被作者于2018/5/21 17:01:05编辑过]

 回到顶部
帅哥哟,离线,有人找我吗?
扶风
  9楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:一尾狐 帖子:481 积分:3258 威望:0 精华:0 注册:2015/6/2 8:33:00
  发帖心情 Post By:2018/5/23 17:30:00 [只看该作者]

老师,都写在一起后,如下
If Tables("项目测试数据看板").Current("C")=0 Then 
update c=1
    Else If Tables("项目测试数据看板").Current("D1")=0 Then
update D1=1
    Else If Tables("项目测试数据看板").Current("T")=0 Then
update T=1
如果这么写,结果就是点击后IF第一个语句成立了,然后就结束了,C=1,D1和T还是0
再点一下,D1=1了,再点一下T=0,这又是点3下了,而不是我想要的点一下全部1了

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  10楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2018/5/23 17:32:00 [只看该作者]

If Tables("项目测试数据看板").Current("C")=0 Then
    update c=1
End If
If Tables("项目测试数据看板").Current("D1")=0 Then
    update D1=1
End If
If Tables("项目测试数据看板").Current("T")=0 Then
    update T=1
End If


 回到顶部