从vb.net执行Access 97数据库中的执行查询(表创建)失败

时间:2014-11-21 19:43:15

标签: vb.net ms-access

当从单独的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*"));

1 个答案:

答案 0 :(得分:2)

由于您使用OleDb连接到Access数据库,因此Like模式中需要使用不同的通配符:

HAVING (((epo.description) Like "%13017pt%"));

使用OleDb时,*字符不会被解释为外卡。相反,db引擎将其视为文字*字符。并且,由于显然没有行epo.description等于" * 13017pt *" ,因此查询没有返回任何行。