[英]VB.Net SQL Query not working in VB but does in Access
我试图找出为什么这个查询不返回结果。 相同的查询在Access中工作正常,但在VB.Net中没有。 任何帮助,将不胜感激。 尝试填充数据集时代码失败。 谢谢。
Function Populate_Month()
Dim dbConnection As New OleDbConnection
Dim dbConnectionStr As String
Dim dbProvider As String
Dim dbSource As String
dbProvider = "Microsoft.Jet.OLEDB.4.0;"
dbSource = "C:\Users\Scraps\Documents\Gossamer.mdb"
dbConnectionStr = "Provider=" & dbProvider & "Data Source=" & dbSource
dbConnection = New OleDbConnection(dbConnectionStr)
dbConnection.Open()
Dim dbAdapter As OleDbDataAdapter
Dim dbDataSet = New DataSet
Dim dbQueryStr As String
Dim CurrentRow As Integer
dbQueryStr = "SELECT * FROM Forecast_TDL" & _
"WHERE Forecast_TDL.EIAC & Forecast_TDL.LCN & Forecast_TDL.Servicing & Forecast_TDL.Interval & Forecast_TDL.Interval_Type" & _
"NOT IN (SELECT EIAC & LCN & Servicing & Interval & Interval_Type FROM Grouped_Servicings);"
dbAdapter = New OleDbDataAdapter(dbQueryStr, dbConnection)
dbAdapter.Fill(dbDataSet, "forecast")
CurrentRow = 0
MsgBox(dbDataSet.Tables("forecast").Rows(CurrentRow)("Interval"))
dbConnection.Close()
Return Nothing
End Function
从我的观点来看,你需要在“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)
在更好地理解问题之后,您可以避免使用JOIN比较连接字符串并找到不存在行的位置。
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.