Vb.net SQL在Access和.Net中不返回类似的数据

Vb.net SQL在Access和.Net中不返回类似的数据,vb.net,ms-access,ms-access-2010,vb.net-2010,Vb.net,Ms Access,Ms Access 2010,Vb.net 2010,仅供参考:使用VS 2010和Access 2010创建Windows桌面应用程序 在尝试查询和访问数据库时,我在VB.Net中遇到了一些奇怪的行为。我有一个SQL脚本,在Access中运行时,它会生成一个包含记录的数据集。但是,当我在VB.Net中运行相同的脚本(它连接到相同的access db)时,查询不会产生任何结果。以下是我的.Net脚本: Dim strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="

仅供参考:使用VS 2010和Access 2010创建Windows桌面应用程序

在尝试查询和访问数据库时,我在VB.Net中遇到了一些奇怪的行为。我有一个SQL脚本,在Access中运行时,它会生成一个包含记录的数据集。但是,当我在VB.Net中运行相同的脚本(它连接到相同的access db)时,查询不会产生任何结果。以下是我的.Net脚本:

Dim strConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & item.Text
Dim conn As System.Data.OleDb.OleDbConnection
Dim da As OleDbDataAdapter
Dim s As String = " SELECT" & vbCrLf _ 
   & "  GrantData.[Grant Number]," & vbCrLf _
   & " OutputData.[Output], " & vbCrLf _
   & " OutputData.PlanNumber, " & vbCrLf _
   & " OutputData.ActualNumber" & vbCrLf _
   & " FROM " & vbCrLf _
   & " Themes, " & vbCrLf _
   & " GrantThemes, " & vbCrLf _
   & " GrantData," & vbCrLf _
   & " OutputData" & vbCrLf _
   & " WHERE" & vbCrLf _
   & " Themes.ThemeID = GrantThemes.ThemeId AND" & vbCrLf _
   & " GrantData.[Grant Number] = GrantThemes.[Grant Number] AND" & vbCrLf _
   & " GrantData.[Grant Number] =OutputData.[Grant Number] AND" & vbCrLf _
   & " ( " & vbCrLf _
   & " (GrantData.Status in ('Cleared', 'Completed', 'Closed')) AND" & vbCrLf _
   & " (Themes.Theme Like '*infrastructure*' or Themes.Theme Like '*construction*')" & vbCrLf _
   & " )" & vbCrLf _
   & " ORDER BY" & vbCrLf _
   & " GrantData.[Grant Number];"


conn = New System.Data.OleDb.OleDbConnection(strConnectionString)
conn.Open()
Try
   da = New OleDbDataAdapter(s, strConnectionString)
   da.Fill(ds, sqlStatement)   
Catch ex As Exception   

Finally
End Try

所以,就像我说的,如果我运行这个,数据集是空的(我在ds上有一个断点,可以查看数据集)。但是,如果我在SQL字符串上放置一个断点,并将其复制到Access数据库中,它就可以正常运行。有人有什么建议吗?

像外卡一样的
有问题

虽然这在访问会话中起作用

Themes.Themes类似于“*基础设施*”或Themes.Themes类似于“*构造*”
您需要用OleDb替换
%
*

Themes.Theme类似于“%infrastructure%”或Themes.Theme类似于“%construction%”
或者,如果您更喜欢从OleDb获得与Access相同结果的查询,请使用
Like
而不是
Like

Themes.Themes相似“%infrastructure%”或Themes.Themes相似“%construction%”

像通配符一样的
有问题

虽然这在访问会话中起作用

Themes.Themes类似于“*基础设施*”或Themes.Themes类似于“*构造*”
您需要用OleDb替换
%
*

Themes.Theme类似于“%infrastructure%”或Themes.Theme类似于“%construction%”
或者,如果您更喜欢从OleDb获得与Access相同结果的查询,请使用
Like
而不是
Like

Themes.Themes相似“%infrastructure%”或Themes.Themes相似“%construction%”

太好了,成功了!谢谢太好了,成功了!谢谢也不需要所有的回车和换行。。。您只需执行已有的操作即可提高可读性,无需使用“&vbCrLf”。也无需使用所有回车符和换行符。。。您只需执行已有的操作即可提高可读性,而无需使用“&vbCrLf”。