以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  循环组合  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=119094)

--  作者:扶风
--  发布时间: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(其他的)已结案

--  作者:有点甜
--  发布时间:2018/5/17 15:27:00
--  
具体一点你的问题,逻辑是怎样的?或者用实例说明。
--  作者:扶风
--  发布时间: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编辑过]

--  作者:有点甜
--  发布时间: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(","))


--  作者:扶风
--  发布时间: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编辑过]

--  作者:有点甜
--  发布时间:2018/5/21 15:55:00
--  
没看懂你想表达什么,请上传一个具体的实例,说明你要做的功能。
--  作者:扶风
--  发布时间: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编辑过]

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

--  作者:扶风
--  发布时间: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了

--  作者:有点甜
--  发布时间: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