where-vba、sql附近的语法不正确

where-vba、sql附近的语法不正确,sql,excel,vba,Sql,Excel,Vba,我有下面的vba,我不断得到一个错误,说不正确的语法附近的地方 Private Sub-uplodbanks() 尺寸ssql、r、c、con、dstring Dim cn作为新的ADODB.连接 将rs设置为新ADODB.Recordset 昏暗的光线 con=“Provider=SQLOLEDB;Password=0wcwlZq7hVeiu#S&bt;User ID=clx#u write;Initial Catalog=DPEDataMartDBPrd01;数据源=tcp:dscusnor

我有下面的vba,我不断得到一个错误,说不正确的语法附近的地方

Private Sub-uplodbanks()
尺寸ssql、r、c、con、dstring
Dim cn作为新的ADODB.连接
将rs设置为新ADODB.Recordset
昏暗的光线
con=“Provider=SQLOLEDB;Password=0wcwlZq7hVeiu#S&bt;User ID=clx#u write;Initial
Catalog=DPEDataMartDBPrd01;数据源=tcp:dscusnoramcloxprd01.database.windows.net,1433;”
r=1
c=1
工作表(“WTUpload”)。计算
'对于i=1到18
'dstring=dstring&'“&Sheets(“WTUpload”)。单元格(5,i)&'”
“接下来我
'dstring=dstring&“'”和工作表(“WTUpload”)。单元格(5,19)和“'
lRow=Cells.Find(What:=“*”,After:=Range(“A1”),LookAt:=xlPart,LookIn:=xlFormulas,SearchOrder:=xlByRows,SearchDirection:=xlPrevious,MatchCase:=False)。行
中国公开赛
i=1
对于i=1至lRow
ssql=“update dbo.cxu_all_load_control set driver_arr_dte=“&Sheets(“WTUpload”).Cells(i,11)和“where mst_ship_num=“&Sheets(“WTUpload”).Cells(i,11)和”
cn.执行ssql
接下来我
cn.Close
端接头

您必须将值转换为日期和数字,如下所示:

ssql = "update dbo.cxu_all_load_control set driver_arr_dte = " & CDate(Sheets("WTUpload").Cells(i, 11)) & " where mst_ship_num = " & CDbl(Sheets("WTUpload").Cells(i, 11)) & " ; "
您可以使用与mst_ship_num字段类型相关的函数替换Cdbl(…)。 但是,我有一句话:为什么要使用相同的表(“WTUpload”)。单元格(I,11)来输入两个不同的字段


另一句话:这假设所有值都是正确的。最好的方法是检查工作表的值(“WTUpload”)。在查询中使用单元格(i,11)之前。

欢迎使用SO!请拿着这本书读一读!显示
debug.print ssql
输出!当您收到错误时,转到调试窗口并键入
?ssql
并按enter键-执行此操作时,它给出的确切字符串是什么?将其复制/粘贴到问题末尾,以便每个人都能看到。@braX set和criteria使用相同的val,但不同的类型(请参见Mohamads答案)当我在即时窗口中键入?ssql时,我得到以下结果:update dbo.cxu_all_load_control set driver_arr_dte=其中mst_ship_num=;我不确定WT上传部分。目标是用wokrbook中的一列中的值替换我的数据库表中的空值。我运行了您放置的内容,但附近的synatx不正确:最好建议使用或希望永远不要见面;)如果您仍然对[driver_arr_dte]和[mst_ship_num]使用相同的值单元格(i,11),则出现“语法错误”消息是正常的。因为,单元格(i,11)中包含的值不能同时转换为日期和数字。您是否可以对[driver_arr_dte]和[mst_ship_num]使用两个不同的值。我不确定是否会得到不同的值,因为我希望该工具能够循环通过,如果driver\u arr\u dte字段中的值为空,它将获取excel文件中填写的日期,并通过匹配mst\u ship\u num文件更新数据库表。我相信我的部分问题是sql语句没有完全写入。当我调试并且将鼠标悬停在ssql变量上时,表示ssql=empty