Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VB.Net SQL查询在VB中不起作用,但在Access中不起作用_Sql_Vb.net - Fatal编程技术网

VB.Net SQL查询在VB中不起作用,但在Access中不起作用

VB.Net SQL查询在VB中不起作用,但在Access中不起作用,sql,vb.net,Sql,Vb.net,我正在试图弄清楚为什么这个查询不返回结果。 相同的查询在Access中可以正常工作,但在VB.Net中不能。 任何帮助都将不胜感激。 尝试填充数据集时,代码失败。 谢谢 在我看来,在Where和Not in等子句之前需要空格。并删除查询末尾的分号。在MS Access中也没有这种方法。您必须执行以下操作: SELECT * FROM Forecast_TDL WHERE Forecast_TDL.EIAC NOT IN(SELECT EIAC FROM Grouped_Servicings)

我正在试图弄清楚为什么这个查询不返回结果。 相同的查询在Access中可以正常工作,但在VB.Net中不能。 任何帮助都将不胜感激。 尝试填充数据集时,代码失败。 谢谢


在我看来,在Where和Not in等子句之前需要空格。并删除查询末尾的分号。

在MS Access中也没有这种方法。您必须执行以下操作:

SELECT * FROM Forecast_TDL 
WHERE Forecast_TDL.EIAC NOT IN(SELECT EIAC FROM Grouped_Servicings) AND 
Forecast_TDL.LCN NOT IN(SELECT LCN FROM Grouped_Servicings) AND
Forecast_TDL.Servicing NOT IN(SELECT Servicing FROM Grouped_Servicings) And 
Forecast_TDL.Interval NOT IN(SELECT Interval FROM Grouped_Servicings) And 
Forecast_TDL.Interval_Type NOT IN (SELECT Interval_Type FROM Grouped_Servicings)
在更好地理解这个问题之后,您可以通过使用连接并查找不存在行的位置来避免比较连接的字符串

SELECT * FROM Forecast_TDL
LEFT OUTER JOIN Grouped_Servicings
ON Forecast_TDL.EIAC = Grouped_Servicings.EIAC AND
 Forecast_TDL.LCN = Grouped_Servicings.LCN AND
 Forecast_TDL.Servicing = Grouped_Servicings.Servicing AND
 Forecast_TDL.Interval = Grouped_Servicings.Interval AND
 Forecast_TDL.Interval_Type = Grouped_Servicings.Interval_Type
WHERE Grouped_Servicings.EIAC IS NULL OR
      Grouped_Servicing.LCN IS NULL OR
      Grouped_Servicing.Servicing IS NULL OR
      Grouped_Servicing.Interval IS NULL OR
      Grouped_Servicing.Interval_Type IS NULL

怎么会失败?我们不喜欢猜测这里的内容。首先打开选项Strict错误是IErrorInfo.GetDescription因E_FAIL0x80004005而失败。当只查询一个表(如SELECT*FROMForecast_TDL)时,代码运行良好,因此由于缺少信息,这是我第一次在VB.Net中使用SQL,我刚刚打开了Option Strict。我认为问题在于查询本身,但由于我没有太多的经验,因此无法找到问题。因此,我想问一个更好的问题,鉴于上面的查询,任何人都能看到阻止它在VB.Net设置中返回结果的任何东西吗?谢谢,我添加了空格并删除了;但错误并没有改变。我也只是把它写在一行上,看看这是否有什么不同,但没有运气在SQL语句中Remove&by,在第2行和第3行中用逗号代替&。语句应该是bQueryStr=SELECT*FROM Forecast\u TDL&u其中Forecast\u TDL.EIAC和Forecast\u TDL.LCN以及Forecast\u TDL.Servicing和Forecast\u TDL.Interval和Forecast\u TDL.Interval\u Type&u不在SELECT EIAC,LCN,Servicing,Interval,Interval\u Type FROM Grouped\u service\u ServicingsMy Query在access中工作!但我会看看这是否也有效谢谢。您的查询在MS ACCESS中没有提供任何结果。我的查询连接一行字段,以查找相同字段的连接是否不在另一个表中。@ZedsDead ok,现在有意义了。我不明白你想做什么,但现在我明白了。您可能需要在字段的串联处加上单引号。dbQueryStr=SELECT*FROM Forecast\u TDL和其中的'Forecast\u TDL.EIAC&Forecast\u TDL.LCN&Forecast\u TDL.Servicing&Forecast\u TDL.Interval&Forecast\u TDL.Interval\u Type'和'NOT在选择'EIAC&LCN&Servicing&Interval&Interval\u Type'中谢谢你,上面的工作做得很好,我真的很感谢你的帮助。我自己永远也想不到。你能给我解释一下VB.Net中单引号的需要吗。
SELECT * FROM Forecast_TDL
LEFT OUTER JOIN Grouped_Servicings
ON Forecast_TDL.EIAC = Grouped_Servicings.EIAC AND
 Forecast_TDL.LCN = Grouped_Servicings.LCN AND
 Forecast_TDL.Servicing = Grouped_Servicings.Servicing AND
 Forecast_TDL.Interval = Grouped_Servicings.Interval AND
 Forecast_TDL.Interval_Type = Grouped_Servicings.Interval_Type
WHERE Grouped_Servicings.EIAC IS NULL OR
      Grouped_Servicing.LCN IS NULL OR
      Grouped_Servicing.Servicing IS NULL OR
      Grouped_Servicing.Interval IS NULL OR
      Grouped_Servicing.Interval_Type IS NULL