2014-03-24 109 views
1

我想我可能已经解决了这个插入到SQL表问题。我一直在打SYNTAX ERROR问题,它突出显示了整个QDF.SQL =“INSERT INTO .....部分。我试图解决我做错了什么。任何专家都可以发现我的问题是什么?插入语法问题

Public Function Update() 
Dim cdb As DAO.Database, qdf As DAO.QueryDef 

Dim rs As Recordset 

Dim err As DAO.Error 

Const DestinationTableName = "AC_CDData" 

Const ConnectionString = _ 
     "ODBC;" & _ 
      "Driver={SQL Server Native Client 10.0};" & _ 
      "Server=GAALPSVR031B\P003,49503;" & _ 
      "Database=DB;" & _ 
      "UID=ID;" & _ 
      "PWD=PW;" 
Set cdb = CurrentDb 
Set qdf = cdb.CreateQueryDef("") 

Set rs = CurrentDb.OpenRecordset("CDData", dbOpenTable) 

qdf.Connect = ConnectionString 

Do While Not rs.EOF 

    qdf.SQL = "INSERT INTO ac_cddata_1(EmployeeID, EmployeeName, Region, District, Function1, Gender, EEOC, Division, Center, MeetingReadinessLevel, ManagerReadinessLevel, EmployeeFeedback, DevelopmentForEmployee1, DevelopmentForEmployee2, DevelopmentForEmployee3, DevelopmentForEmployee4, DevelopmentForEmployee5, Justification, Changed, JobGroupCode, JobDesc, JobGroup) " & _ 
       "Values (" & _ 
       "'" & rs.EmployeeID & "', " & _ 
       "'" & rs.EmployeeName & "', " & _ 
       "'" & rs.Region & "', " & _ 
       "'" & rs.District & "', " & _ 
       "'" & rs.Function1 & "', " & _ 
       "'" & rs.Gender & "', " & _ 
       "'" & rs.EEOC & "', " & _ 
       "'" & rs.Division & "', " & _ 
       "'" & rs.Center & "', " & _ 
       "'" & rs.MeetingReadinessLevel & "', " & _ 
       "'" & rs.ManagerReadinessLevel & "', " & _ 
       "'" & rs.EmployeeFeedback & "', " & _ 
       "'" & rs.DevelopmentForEmployee1 & "', " & _ 
       "'" & rs.DevelopmentForEmployee2 & "', " & _ 
       "'" & rs.DevelopmentForEmployee3 & "', " & _ 
       "'" & rs.DevelopmentForEmployee4 & "', " & _ 
       "'" & rs.DevelopmentForEmployee5 & "', " & _ 
       "'" & rs.Justification & "', " & _ 
       "'" & rs.Changed & "', " & _ 
       "'" & rs.JobGroupCode & "', " & _ 
       "'" & rs.JobDesc & "', " & _ 
       "'" & rs.JobGroup"')" 


qdf.ReturnsRecords = False 
On Error GoTo Update_qdfError 
qdf.Execute dbFailOnError 
On Error GoTo 0 

rs.MoveNext 
Loop 

rs.Close 

Set qdf = Nothing 
Set cdb = Nothing 
Set rs = Nothing 
Exit Function 

Update_qdfError: 
For Each err In DAO.Errors 
    MsgBox err.Description, vbCritical, "Error " & err.Number 
Next 

End Function 

回答

1

建立您的字符串时,您有一个错误...

"'" & rs.JobGroup"')" 

改成这样......

"'" & rs.JobGroup & "')" 

这是经常使用字符串变量更容易发现问题保存你的SQL语句。

Dim strInsert As String 
strInsert = "INSERT INTO ..." 

然后你可以检查字符串...

Debug.Print strInsert 

最后字符串分配给您的QueryDef ...

qdf.SQL = strInsert 
+0

现在解决了这个问题我得到一个TYPE MISMATCH错误,它突出显示SET RS = CURRENTDB.OPENRECORDSET(“CDDATA”,“DBOPENTABLE) – user2119980

+0

然后尝试:set rs = currentdb()。 openRecordset(“CDDATA”,dbOpenDynaset)' – Barranka

+0

不要在DBOPENTABLE周围使用引号,它是一个常量的名称,所以不应该引用 – HansUp

0

您正试图rs.fieldName引用的字段在您的记录,那就是不这样做的正确方法正确的做法是:

rs![EmployeeId] 

(方括号是可选的,如果你的领域名称没有空格)

另外,由于HansUp点特德在他的回答,你错过了最后一个符号......你忘了把最后&在字符串中的最后一行:"'" & rs.JobGroup"')"应该是““” & rs.JobGroup &“”)”

+0

我只是做了这种变化(没有我的是需要[]),但我得到相同的语法错误。 – user2119980

1

我可以' t发表评论问一个问题,但从你的发言看,EmployeeId我将假设是整数类型。如果ID是整数,请尝试:

qdf.SQL = "INSERT INTO ac_cddata_1(EmployeeID, EmployeeName, Region, District, Function1, Gender, EEOC, Division, Center, MeetingReadinessLevel, ManagerReadinessLevel, EmployeeFeedback, DevelopmentForEmployee1, DevelopmentForEmployee2, DevelopmentForEmployee3, DevelopmentForEmployee4, DevelopmentForEmployee5, Justification, Changed, JobGroupCode, JobDesc, JobGroup) " & _ 
       "Values (" & _ 
       & rs.EmployeeID & ", " & _ 
       "'" & rs.EmployeeName & "', " & _ 
       "'" & rs.Region & "', " & _ 
       "'" & rs.District & "', " & _ 
       "'" & rs.Function1 & "', " & _ 
       "'" & rs.Gender & "', " & _ 
       "'" & rs.EEOC & "', " & _ 
       "'" & rs.Division & "', " & _ 
       "'" & rs.Center & "', " & _ 
       "'" & rs.MeetingReadinessLevel & "', " & _ 
       "'" & rs.ManagerReadinessLevel & "', " & _ 
       "'" & rs.EmployeeFeedback & "', " & _ 
       "'" & rs.DevelopmentForEmployee1 & "', " & _ 
       "'" & rs.DevelopmentForEmployee2 & "', " & _ 
       "'" & rs.DevelopmentForEmployee3 & "', " & _ 
       "'" & rs.DevelopmentForEmployee4 & "', " & _ 
       "'" & rs.DevelopmentForEmployee5 & "', " & _ 
       "'" & rs.Justification & "', " & _ 
       "'" & rs.Changed & "', " & _ 
       "'" & rs.JobGroupCode & "', " & _ 
       "'" & rs.JobDesc & "', " & _ 
       "'" & rs.JobGroup"')" 

否则,错误说的是什么?

+0

他们都是文本类型 – user2119980