Foxtable(狐表)用户栏目专家坐堂 → 对NULL的处理


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

主题:对NULL的处理

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


加好友 发短信
等级:五尾狐 帖子:1182 积分:8225 威望:0 精华:0 注册:2015/3/30 10:44:00
对NULL的处理  发帖心情 Post By:2017/2/8 16:04:00 [显示全部帖子]

<WebMethod()>
    Public Function GetState1Refine(ByVal ddh As String, ByVal ddhh As String, ByVal wlbm As String, ByVal lhbbh As String, ByVal rjbb As String) As String
        Dim cnStr As String = "Data Source=172.16.11.201;Initial Catalog=songjiang;Integrated Security=False;User ID=sa;Password=bdcom103liujy;"
        Dim cn As New SqlClient.SqlConnection(cnStr)
        cn.Open()
        Dim adapter As New SqlClient.SqlDataAdapter("s elect * from [可用数量表]  where 物料编码 = '" & wlbm & "' and 订单行号 = '" & ddhh & "' and 软件版本 = '" & rjbb & "'  and 两化表编号 = '" & lhbbh & "' and 订单号 = '" & ddh & "'", cn)
        Dim dt As New DataTable
        adapter.Fill(dt)
        cn.Close()

当后台数据表的值为NULL。如附件后台NULL
查询界面写NULL或者为空,都不行。如附件NULL。这是怎么回事?

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

图片点击可在新窗口打开查看此主题相关图片如下:后台null.png
图片点击可在新窗口打开查看


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


加好友 发短信
等级:五尾狐 帖子:1182 积分:8225 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2017/2/8 16:11:00 [显示全部帖子]

这是给别人提供接口。别人又不知道两化表编号或者订单号为NULL。
怎么变通呢

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


加好友 发短信
等级:五尾狐 帖子:1182 积分:8225 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2017/2/8 17:31:00 [显示全部帖子]

恩。已经做好了。
但有一种情况。
Dim filter1 As String = "订单号 <> '" & ddh & "' and 订单行号 <> '" & ddhh & "'"
加如果ddh=1.但后台订单号的值为NULL
NULL<>'1'---这个成立吗?

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


加好友 发短信
等级:五尾狐 帖子:1182 积分:8225 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2017/2/8 18:20:00 [显示全部帖子]

 <WebMethod()>
    Public Function GetState2Refine(ByVal ddh As String, ByVal ddhh As String, ByVal wlbm As String, ByVal rjbb As String, ByVal lhbbh As String) As String
        Dim cnStr As String = "Data Source=172.16.11.201;Initial Catalog=songjiang;Integrated Security=False;User ID=sa;Password=bdcom103liujy;"
        Dim cn As New SqlClient.SqlConnection(cnStr)
        cn.Open()
        Dim adapter As SqlClient.SqlDataAdapter
        Dim strSql As String = ""

        If ddh = "" Or ddhh = "" Or ddh = "null" Or ddhh = "null" Then
            Dim state1 As String
            state1 = "订单号或者订单行号不能为空"
            Return state1

            'adapter = New SqlClient.SqlDataAdapter("s elect * from [可用数量表]  where  物料编码 = '" & wlbm & "' and 软件版本 = '" & rjbb & "' and 两化表编号 like '% " & lhbbh & "%'", cn)
        Else
            Dim filter As String = "1=1"
            If wlbm = "" Then
                filter &= " and 1=1"
            ElseIf wlbm = "null" Then
                filter &= " and 物料编码 is null"
            Else
                filter &= " and 物料编码 = '" & wlbm & "'"
            End If

            If lhbbh = "" Then
                filter &= " and 1=1"
            ElseIf lhbbh = "null" Then
                filter &= " and 两化表编号 is null"
            Else
                filter &= " and 两化表编号 like '%" & lhbbh & "%'"
            End If

            If rjbb = "" Then
                filter &= " and 1=1"
            ElseIf rjbb = "null" Then
                filter &= " and 软件版本 is null"
            Else
                filter &= " and 软件版本 = '" & rjbb & "'"
            End If
            Dim filter1 As String = "订单号 is null or 订单行号 is null  or 订单号 <> '" & ddh & "' or 订单行号 <> '" & ddhh & "' and "
            MsgBox(filter1)

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

            strSql = "s elect * from [可用数量表]  where " & filter1 & filter
            MsgBox(strSql)

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

            
            adapter = New SqlClient.SqlDataAdapter(strSql, cn)
            Dim dt As New DataTable
            adapter.Fill(dt)
            cn.Close()

报下面的错误参数“Expression”不是有效值。这不是合成s elect不对?
System.ArgumentException: 参数“Expression”不是有效值。
   在 Microsoft.VisualBasic.Strings.Format(Object Expression, String Style)
   在 WebApplication4.OrderQueryBLL.GetWareRootWork(DataRow dr1) 位置 F:\VS\WebApplicationN\WebApplication4\OrderQueryBLL.vb:行号 51
   在 WebApplication4.OrderQueryBLL.ConvertToJsonObject(DataTable dataTable) 位置 F:\VS\WebApplicationN\WebApplication4\OrderQueryBLL.vb:行号 31
   在 WebApplication4.WebService1.GetState2Refine(String ddh, String ddhh, String wlbm, String rjbb, String lhbbh) 位置 F:\VS\WebApplicationN\WebApplication4\WebService1.asmx.vb:行号 167

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


加好友 发短信
等级:五尾狐 帖子:1182 积分:8225 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2017/2/9 11:14:00 [显示全部帖子]

Dim filter As String = "1=1"
            If wlbm = "null" Then
                filter &= " and 物料编码 is null"
            ElseIf wlbm > "" Then
                filter &= " and 物料编码 = '" & wlbm & "'"
            End If

            If lhbbh = "null" Then
                filter &= " and 两化表编号 is null"
            ElseIf lhbbh > "" Then
                filter &= " and 两化表编号 like '%" & lhbbh & "%'"
            End If

            If rjbb = "null" Then
                filter &= " and 软件版本 is null"
            ElseIf rjbb > "" Then
                filter &= " and 软件版本 = '" & rjbb & "'"
            End If
            Dim filter1 As String = "(订单号 is null or 订单号 <> '" & ddh & "') and (订单行号 is null or 订单行号 <> '" & ddhh & "') and "

            strSql = "s elect * from [可用数量表]  where " & filter1 & filter
            MsgBox(strSql)

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

还是回报这个错
System.ArgumentException: 参数“Expression”不是有效值。

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


加好友 发短信
等级:五尾狐 帖子:1182 积分:8225 威望:0 精华:0 注册:2015/3/30 10:44:00
  发帖心情 Post By:2017/2/9 11:40:00 [显示全部帖子]

Public Shared Function GetWareRootWork(ByVal dr1 As DataRow) As WareRootWork
        Dim rootWork As New WareRootWork(dr1("_Identify").ToString(), dr1("生产订单号码").ToString(), dr1("工单行号").ToString(), dr1("订单号").ToString(), dr1("订单行号").ToString(), dr1("物料编码").ToString(), dr1("软件版本").ToString(), dr1("两化表编号").ToString(), dr1("数量").ToString(), Format(dr1("入库时间"), "yyyy-MM-dd HH:mm:ss").ToString())
        Return rootWork
    End Function

难道是这个有问题? 红色的就是51行的代码
System.ArgumentException: 参数“Expression”不是有效值。
   在 Microsoft.VisualBasic.Strings.Format(Object Expression, String Style)
   在 WebApplication4.OrderQueryBLL.GetWareRootWork(DataRow dr1) 位置 F:\VS\WebApplicationN\WebApplication4\OrderQueryBLL.vb:行号 51
   在 WebApplication4.OrderQueryBLL.ConvertToJsonObject(DataTable dataTable) 位置 F:\VS\WebApplicationN\WebApplication4\OrderQueryBLL.vb:行号 35
   在 WebApplication4.WebService1.GetState2Refine(String ddh, String ddhh, String wlbm, String rjbb, String lhbbh) 位置 F:\VS\WebApplicationN\WebApplication4\WebService1.asmx.vb:行号 152

 回到顶部