Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL更新或插入Excel;表「;_Sql_Excel_Insert Update_Vba - Fatal编程技术网

SQL更新或插入Excel;表「;

SQL更新或插入Excel;表「;,sql,excel,insert-update,vba,Sql,Excel,Insert Update,Vba,这个问题是根据上一个问题构建的(请阅读,因为它包含了大部分细节和背景细节)。链接到的代码与此处代码的唯一区别是qry字符串(如下所示)。让我知道,如果更多的细节是需要在这篇文章 我的问题:如果可以,我如何更新,否则如何插入新记录?我尝试了几种变体,但通过Excel VBA实现这一点……很困难。为了简单起见,我将把我的示例减少到两个(这两个似乎是最有效的) 1)通过故障排除,我确定这是由于@@ROWCOUNT而失败的,但我无法确定变量名(如果它在该上下文中存在) qry=“UPDATE”&vbNe

这个问题是根据上一个问题构建的(请阅读,因为它包含了大部分细节和背景细节)。链接到的代码与此处代码的唯一区别是
qry
字符串(如下所示)。让我知道,如果更多的细节是需要在这篇文章

我的问题:如果可以,我如何更新,否则如何插入新记录?我尝试了几种变体,但通过Excel VBA实现这一点……很困难。为了简单起见,我将把我的示例减少到两个(这两个似乎是最有效的)

1)通过故障排除,我确定这是由于
@@ROWCOUNT
而失败的,但我无法确定变量名(如果它在该上下文中存在)

qry=“UPDATE”&vbNewLine&_
设置empName='',empDay=CDate(''),inTime=CDate(''),outTime=CDate(''),&_
“vac=CBool(”),sales=CDbl()”&vbNewLine&_
其中empName=''和empDay=CDate('')&vbNewLine&_
“如果@@ROWCOUNT=0”&vbNewLine&_
“插入(empName、empDay、inTime、outTime、vac、sales)”&vbNewLine&_
“值(CStr(“”)、CDate(“”)、CDate(“”)、CDate(“”),”和_
“CBool(“”),CDbl();”&vbNewLine&_
“结束;”
2)这几乎可以正常工作,只会抱怨SQL语句末尾缺少“;”(显然在那里)。帕伦夫妇似乎也很般配

qry = "INSERT INTO <tbl> (empName, empDay, inTime, outTime, vac, sales)" & vbNewLine & _
      "VALUES (CStr('<name>'), CDate('<date>'), CDate('<in>'), CDate('<out>'), " & _
            "CBool('<vac>'), CDbl(<sales>))" & vbNewLine & _
      "ON DUPLICATE KEY UPDATE (empName='<name>' AND empDay=CDate('<date>'));"
qry=“插入(empName、empDay、inTime、outTime、vac、sales)”&vbNewLine&_
“值(CStr(“”)、CDate(“”)、CDate(“”)、CDate(“”),”和_
“CBool(“”),CDbl()”&vbNewLine&_
“在重复密钥更新时(empName=''和empDay=CDate('');”

如果使用Windows Jet/ACE SQL引擎,其SQL方言不支持一条语句中的多个操作查询。通过VBA中的查找有条件地分隔,并相应地调用其中一个。值得一提的是,@Parfait确实不是。再次感谢你在这方面的帮助。这些限制当然让事情……有趣。我更喜欢一个带有自定义WPF前端的适当数据库,但这正是我需要在其中工作的地方。如果使用Windows Jet/ACE SQL引擎,其SQL方言不支持一条语句中的多个操作查询。通过VBA中的查找有条件地分隔,并相应地调用其中一个。值得一提的是,@Parfait确实不是。再次感谢你在这方面的帮助。这些限制当然让事情……有趣。我更喜欢一个带有定制WPF前端的适当数据库,但这正是我需要在其中工作的地方。
qry = "INSERT INTO <tbl> (empName, empDay, inTime, outTime, vac, sales)" & vbNewLine & _
      "VALUES (CStr('<name>'), CDate('<date>'), CDate('<in>'), CDate('<out>'), " & _
            "CBool('<vac>'), CDbl(<sales>))" & vbNewLine & _
      "ON DUPLICATE KEY UPDATE (empName='<name>' AND empDay=CDate('<date>'));"