Access 2013 odbc链接表更新查询问题

时间:2015-03-04 18:16:54

标签: sql-server odbc

我有一个非常大的ODBC链接表,我必须使用Access 2013来阅读。我有表的编辑权限。

我需要更新2列中的信息,以便在我正在更新的其中一列上排序的前300个条目。我从ODBCtable中取出400个条目并将它们放在标准访问表中以开发正确的代码来实现这一点。我能够获得正确的代码并使其在标准访问表中工作。它如下:

UPDATE (SELECT TOP 300 [testers 400].AgrCode, [testers 400].RangeCode, [testers 400].UnitNumber, [testers 400].DNSName
FROM [testers 400]
WHERE ((([testers 400].AgrCode) Like "*fran*") AND (([testers 400].RangeCode) Like "*phi*") AND (([testers 400].UnitNumber) Like "F??????"))
ORDER BY [testers 400].UnitNumber)
SET [testers 400].UnitNumber = Right([UnitNumber],6), [testers 400].DNSName = Replace([DNSName],".f",".")
WHERE ((([testers 400].AgrCode) Like "*fran*") AND (([testers 400].RangeCode) Like "*phi*") AND (([testers 400].UnitNumber) Like "F??????"));

这返回了前300个单位,并且只更新了400个中的300个单位。

然后我转到我的ODBC表并使用新描述符运行相同的代码:

UPDATE (SELECT TOP 300 dbo_TTMSProdActiveIPDNS.AgrCode, dbo_TTMSProdActiveIPDNS.RangeCode, dbo_TTMSProdActiveIPDNS.UnitNumber, dbo_TTMSProdActiveIPDNS.DNSName
FROM dbo_TTMSProdActiveIPDNS
WHERE (((dbo_TTMSProdActiveIPDNS.AgrCode) Like "*fran*") AND ((dbo_TTMSProdActiveIPDNS.RangeCode) Like "*phi*") AND ((dbo_TTMSProdActiveIPDNS.UnitNumber) Like "F??????"))
ORDER BY dbo_TTMSProdActiveIPDNS.UnitNumber)
SET dbo_TTMSProdActiveIPDNS.UnitNumber = Right([UnitNumber],6), dbo_TTMSProdActiveIPDNS.DNSName = Replace([DNSName],".f",".")
WHERE (((dbo_TTMSProdActiveIPDNS.AgrCode) Like "*Fran*") AND ((dbo_TTMSProdActiveIPDNS.RangeCode) Like "*phi*") AND ((dbo_TTMSProdActiveIPDNS.UnitNumber) Like "F??????"));

不幸的是它没有完全发挥作用。它找到了300个站点,但它没有运行命令的SET / WHERE部分。所以300个网站都没有更新。

我无法弄清楚它为什么运行select命令,而不是实际的更新命令。我认为它与odbc链接表有关,但我不知道如何调整我的代码以使其工作。请帮忙。我会对使用Pass-through函数感兴趣,但我不知道如何更改上面的代码语言以使其在传递中工作。任何想法都会很棒。

0 个答案:

没有答案