当从单独的VB.net程序执行Access 97数据库中存在的查询(生成新表)时,表会被创建,但最终会有0条记录。如果我直接在Access 97数据库中执行相同的查询,则会创建记录。
这是我正在使用的代码,执行正常且没有任何错误:
Dim cmd1 As OleDbCommand = New OleDbCommand()
Dim sConStr As String = "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Password=xx;User ID=username;" & _
"Data Source=\\FILESERVER\TestMyAgents.mdb;" & _
"Persist Security Info=True;" & _
"Jet OLEDB:System database=\\FILESERVER\backend\mdw\system.mdw"
Dim conn As OleDbConnection
conn = New OleDbConnection(sConStr)
cmd1.Connection = conn
cmd1.CommandType = CommandType.StoredProcedure
cmd1.CommandText = "Query1"
If conn.State = ConnectionState.Closed Then
conn.Open()
End If
cmd1.ExecuteNonQuery()
conn.Close()
为什么没有创建记录的任何想法?
编辑:这是Query1中的SQL语句:
SELECT epo.description, epo.date, epo.voucher, epo.application_number, Sum(epo.amount) AS SommaDiamount INTO test33
FROM epo
GROUP BY epo.description, epo.date, epo.voucher, epo.application_number
HAVING (((epo.description) Like "*13017pt*"));
答案 0 :(得分:2)
由于您使用OleDb连接到Access数据库,因此Like
模式中需要使用不同的通配符:
HAVING (((epo.description) Like "%13017pt%"));
使用OleDb时,*
字符不会被解释为外卡。相反,db引擎将其视为文字*
字符。并且,由于显然没有行epo.description
等于" * 13017pt *" ,因此查询没有返回任何行。