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>'));"