Sql 带有多个where条件的SELECT语句未在.NET winform应用程序中运行

Sql 带有多个where条件的SELECT语句未在.NET winform应用程序中运行,sql,.net,vb.net,winforms,Sql,.net,Vb.net,Winforms,我在winform应用程序中运行了一个复杂的SELECT查询。该查询在SQL Server中运行良好,但当我在应用程序中使用该查询时,它会超时/短路/发生某些事情 SELECT Q.ORDNUM FROM GISQC..QC_ORDERS AS Q INNER JOIN TOD..CURRENTORDERS AS NEW ON Q.ORDNUM = NEW.ORDNUM INNER JOIN GISQC..CLONEORDERS AS C ON C.NEWORDNUM = Q.ORDNUM

我在winform应用程序中运行了一个复杂的
SELECT
查询。该查询在
SQL Server
中运行良好,但当我在应用程序中使用该查询时,它会超时/短路/发生某些事情

SELECT Q.ORDNUM FROM GISQC..QC_ORDERS AS Q 
INNER JOIN TOD..CURRENTORDERS AS NEW ON Q.ORDNUM = NEW.ORDNUM 
INNER JOIN GISQC..CLONEORDERS AS C ON C.NEWORDNUM = Q.ORDNUM 
INNER JOIN TOD..CURRENTORDERS AS OLD ON C.ORIGORDNUM = OLD.ORDNUM 
WHERE (Q.WEEK = '2015.17') AND (NEW.ORDSTAT = 'C') 
AND ((NEW.FLDZNE IN ('C', 'B', 'CX', 'BX', 'X') 
AND OLD.FLDZNE NOT IN ('C', 'B', 'CX', 'BX', 'X')) 
OR (NEW.FLDZNE NOT IN ('C', 'B', 'CX', 'BX', 'X') 
AND OLD.FLDZNE IN ('C', 'B', 'CX', 'BX', 'X')) 
OR (NEW.FLDZNE LIKE 'A%' AND OLD.FLDZNE NOT LIKE 'A%') 
OR (NEW.FLDZNE NOT LIKE 'A%' AND OLD.FLDZNE LIKE 'A%') 
OR (NEW.FLDZNE LIKE 'V%' AND OLD.FLDZNE NOT LINE 'V%') 
OR (NEW.FLDZNE NOT LIKE 'V%' AND OLD.FLDZNE LIKE 'V%') 
OR (NEW.FLDZNE IN ('D', 'NON', 'NONE') 
AND OLD.FLDZNE NOT IN ('D', 'NON', 'NONE')) 
OR (NEW.FLDZNE NOT IN ('D', 'NON', 'NONE') 
AND OLD.FLDZNE IN ('D', 'NON', 'NONE')))
由于服务器限制,我无法在此应用程序中创建存储过程,它必须动态运行。我考虑过一个
联合所有
,但我不确定语法

为了澄清,我的应用程序在调用此查询时崩溃,我已经调试并知道这是问题所在

编辑

完成的代码:

  Try
        Dim test As String = "SELECT Q.ORDNUM FROM GISQC..QC_ORDERS AS Q INNER JOIN TOD..CURRENTORDERS AS NEW ON Q.ORDNUM = NEW.ORDNUM INNER JOIN GISQC..CLONEORDERS AS C ON C.NEWORDNUM = Q.ORDNUM INNER JOIN TOD..CURRENTORDERS AS OLD ON C.ORIGORDNUM = OLD.ORDNUM WHERE (Q.WEEK = '2015.17') AND (NEW.ORDSTAT = 'C') AND ((NEW.FLDZNE IN ('C', 'B', 'CX', 'BX', 'X') AND OLD.FLDZNE NOT IN ('C', 'B', 'CX', 'BX', 'X')) OR (NEW.FLDZNE NOT IN ('C', 'B', 'CX', 'BX', 'X') AND OLD.FLDZNE IN ('C', 'B', 'CX', 'BX', 'X')) OR (NEW.FLDZNE LIKE 'A%' AND OLD.FLDZNE NOT LIKE 'A%') OR (NEW.FLDZNE NOT LIKE 'A%' AND OLD.FLDZNE LIKE 'A%') OR (NEW.FLDZNE LIKE 'V%' AND OLD.FLDZNE NOT LINE 'V%') OR (NEW.FLDZNE NOT LIKE 'V%' AND OLD.FLDZNE LIKE 'V%') OR (NEW.FLDZNE IN ('D', 'NON', 'NONE') AND OLD.FLDZNE NOT IN ('D', 'NON', 'NONE')) OR (NEW.FLDZNE NOT IN ('D', 'NON', 'NONE') AND OLD.FLDZNE IN ('D', 'NON', 'NONE')))"
        Dim datest As New SqlDataAdapter(test, Me.Qc_OrdersTableAdapter1.Connection)

        Dim dstest As New DataSet

        datest.Fill(dstest)

        Me.dgSFHA.DataSource = dstest.Tables(0)

    Catch ex As Exception
        MsgBox("Error: " & ex.Message)
    End Try
错误消息是:“错误:靠近‘行’的语法不正确。”

这两个数据库之间没有问题。当我只包含
WHERE
子句的前四个条件时,它运行良好。我知道这与这个
WHERE
子句的复杂性有关

(NEW.FLDZNE LIKE 'V%' AND OLD.FLDZNE NOT LINE 'V%')

“NOT LINE”实际上应该是“NOTLIKE

在这两种情况下,您访问的是同一个数据库吗?如果您运行一个更简单的查询,只是为了尝试连接之类的事情,会怎么样?
但是当我使用查询时,它会超时/短路/发生什么事情
为了澄清,每当我调用此查询时,我的应用程序都会崩溃
您得到的错误到底是什么?请说明您是如何从应用程序调用它的。您可以检查您作为什么用户连接的-construct
TOD..CURRENTORDERS
没有指定架构部分,因此,如果您在应用程序中使用与手动测试数据库不同的凭据连接到数据库,则它可能引用不同的对象statement@gbianchi,请参见编辑。使用代码中的连接字符串,带有3个连接的简单查询运行良好@mbeckish请查看编辑以了解错误@BerndLinde在编辑中发布的完整代码@IanKenney模式没有问题,查询运行良好,条件
WHERE
更少。