2014-09-24 71 views
1

我写了这个VB6代码来犯的MS Access dB的插入SQL查询提交MS Access中插入查询写在数据库中。 MsgBox显示0个受影响的行。但是当我在MS Access软件上手动运行查询时,它工作正常,有2个受影响的行。无法通过Visual Basic 6的

任何人都可以帮助我吗?

+0

可以验证连接字符串是否有效?如果你的SQL正在工作,那应该告诉你,你没有连接到数据库,或者你发送SQL到数据库的方式是不正确的。 (或者您的显示行的方法影响不正确) – 2014-09-24 17:45:25

+0

连接正在工作。我使用这种方法来创建一个新的表,它的工作原理。当我尝试插入插件时没有任何影响。 – EBalla 2014-09-24 17:49:13

+0

这是看到+用于concatentation,并可能导致微妙的错误的眼睛震颤。很好的工作......直到失败。 – Bob77 2014-09-24 19:06:27

回答

1

您可以使用 “Execute方法(ADO连接)”,见http://msdn.microsoft.com/en-us/library/windows/desktop/ms675023%28v=vs.85%29.aspx,对于一个例子:

Private Sub InsertData() 
    Dim sql As String, num As Long, Con As New adodb.Connection 

    sql = "INSERT INTO Presenze(Enterprise, Employss, mYear, mMonth, mDay, WorkHours) SELECT T.[Enterprise], P.UserCode, T.[Yr], T.[Mnth], T.[Dy], T.[WorkHRS] FROM TableData T INNER JOIN Personal P On P.PID= T.[PID]" 
     Con.Open "Driver={Microsoft Access Driver (*.mdb, *.accdb)};DBQ=" & App.Path + "\Archive.mdb" & ";PWD=" 
    Con.Execute (sql, num, adExecuteNoRecords) 

    If Con.State = 1 Then 
     Con.Close 
     Set Con = Nothing 
    End If 

    MsgBox num & " records were affected" 
End Sub 
+1

但是为什么在您打开并使用它之后查看Connection是否打开?顺便说一句,魔法数字不好,可以吗?你想要的是'adStateOpen'。 – Bob77 2014-09-24 19:04:22