以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  IF语句是否可以这样写,期待指导  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=126324)

--  作者:weibu
--  发布时间:2018/10/18 16:34:00
--  IF语句是否可以这样写,期待指导
  If fr("盘点类型") = "日盘" OrElse fr("盘点类型") = "抽盘" Then  ‘如果盘点类型为日盘或抽盘时执行代码1
  代码1
else    否则其他类型执行代码2
代码2
end IF




--  作者:有点甜
--  发布时间:2018/10/18 16:39:00
--  

可以,有什么问题?

 

http://www.foxtable.com/webhelp/scr/0223.htm

 


--  作者:weibu
--  发布时间:2018/10/18 17:16:00
--  加IF盘点语句后报错
我有个代码仅修改了IF的一部分就报错了

图片点击可在新窗口打开查看此主题相关图片如下:qq截图20181018171033.png
图片点击可在新窗口打开查看


报错代码如下:修改为蓝色字体


     Dim syms As List(of DataRow) = DataTables("溯源码").SQLSelect("当前所在部门 = \'" & yh("所属部门") & "\' And 是否可用 = 1") \'找到本部门可用溯源码的行
     For Each sym As DataRow In syms
            fr = DataTables("盘点单据").Find("[溯源码] = \'" & sym("子溯源码") & "\'")  \'溯源码表中的溯源码是否存在与盘点单据
                If fr IsNot Nothing Then 
                   sym("是否可用") = 1
                   fr("审核人") = dr("姓名")
                   fr("审核日期") = Date.Now
                Else
                      If fr("盘点类型") = "日盘" OrElse fr("盘点类型") = "抽盘" Then
                          If fr("商品编码") = sym("商品编码") Then
                 Dim wb As Row = Tables("外部出库").AddNew()
                 sym("是否可用") = 0
                 wb("溯源码" ) = sym("子溯源码")
                 wb("出库部门") = sym("当前所在部门")
                 wb("出库时间") = Date.Now
                 wb("单据类型") = "销售单"
                 wb("是否拆箱") = sym("是否拆箱")
                 wb("出库人") = yh("姓名")
                 wb("核销人") = dr("姓名")
                          End If
                      Else
                          Dim wb As Row = Tables("外部出库").AddNew()
                           sym("是否可用") = 0
                           wb("溯源码" ) = sym("子溯源码")
                           wb("出库部门") = sym("当前所在部门")
                           wb("出库时间") = Date.Now
                           wb("单据类型") = "销售单"
                           wb("是否拆箱") = sym("是否拆箱")
                           wb("出库人") = yh("姓名")
                           wb("核销人") = dr("姓名")
                     End If 
              End If
        Next
        DataTables("溯源码").SQLUpdate(syms)   \'更新数据库溯源码表中的是否可用状态      
        DataTables("外部出库").Save()
        DataTables("盘点单据").Save()
        MessageBox.Show("核销成功!", "提示")
        Dim btn As WinForm.Button = Forms("盘点核销").Controls("Button1")
        btn.PerformClick()
         e.Form.Close
     Else
       Messagebox.show("密码错误!","提示",MessageBoxButtons.OK,MessageBoxIcon.Information)
     End If
End If


还有因为数据量较大,执行速度比较慢,请问有无办法优化上面代码

--  作者:weibu
--  发布时间:2018/10/18 17:17:00
--  
修改前,可执行代码:
    If fr IsNot Nothing Then 
                 sym("是否可用") = 1
                Else
                 Dim wb As Row = Tables("外部出库").AddNew()
                 sym("是否可用") = 0
                 wb("溯源码" ) = sym("子溯源码")
                 wb("出库部门") = sym("当前所在部门")
                 wb("出库时间") = Date.Now
                 wb("单据类型") = "销售单"
                 wb("是否拆箱") = sym("是否拆箱")
                 wb("出库人") = yh("姓名")
                 wb("核销人") = dr("姓名")
              End If

--  作者:weibu
--  发布时间:2018/10/18 17:29:00
--  
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:新建文本文档 (2).txt

文本有代码的上半部分;

--  作者:有点甜
--  发布时间:2018/10/18 18:06:00
--  

改成

 

For Each sym As DataRow In syms
    fr = DataTables("盘点单据").Find("[溯源码] = \'" & sym("子溯源码") & "\'")  \'溯源码表中的溯源码是否存在与盘点单据
    If fr IsNot Nothing Then
        sym("是否可用") = 1
        fr("审核人") = dr("姓名")
        fr("审核日期") = Date.Now
       
        If fr("盘点类型") = "日盘" OrElse fr("盘点类型") = "抽盘" Then
            If fr("商品编码") = sym("商品编码") Then
                Dim wb As Row = Tables("外部出库").AddNew()
                sym("是否可用") = 0
                wb("溯源码" ) = sym("子溯源码")
                wb("出库部门") = sym("当前所在部门")
                wb("出库时间") = Date.Now
                wb("单据类型") = "销售单"
                wb("是否拆箱") = sym("是否拆箱")
                wb("出库人") = yh("姓名")
                wb("核销人") = dr("姓名")
            End If
        End If
    Else
        Dim wb As Row = Tables("外部出库").AddNew()
        sym("是否可用") = 0
        wb("溯源码" ) = sym("子溯源码")
        wb("出库部门") = sym("当前所在部门")
        wb("出库时间") = Date.Now
        wb("单据类型") = "销售单"
        wb("是否拆箱") = sym("是否拆箱")
        wb("出库人") = yh("姓名")
        wb("核销人") = dr("姓名")
    End If
Next