我有一个使用查询分析器编写的查询。它在分析器中工作,但是当我在Excel中运行它时,我得到一个无效的列名错误。该错误不会列出整个列名称。如果我在整个列名称周围放置方括号,则错误会列出整个列名称。
如果我按如下方式运行代码。
Select
tblarInvoice.shipfromlocation
From
tblarInvoice
Where
tblarInvoice.dateshipped >= '10/01/2014'
我得到错误: 列名称无效' shipfrom'
如果我运行带有方括号的代码,我会得到错误:
列名称无效' shipfromlocation'
答案 0 :(得分:0)
可能与正在使用的驱动程序有关。
也许列长度有限制。 尝试将列名称替换为更短的名称。
列名中的名称“FROM”也可能有问题。
您是否可以在数据库中创建一个从表中选择但视图为列名称别名的视图。
驱动程序可以解析SQL,看看FROM认为它是一个保留字并放弃。 []可能会超出30个字符的限制......所以...尝试不同的使用列名别名和/或从视图中选择?
SELECT tblarInvoice.shipfromlocation as sfl
根本原因是两件事之一或组合: 处理SQL字符串时,驱动程序看到“FROM”并抛出错误 当您在[]中包装名称时,它将字段名称扩展为> 30个字符,在某些驱动程序中是一个限制。
您可以通过将视图上的别名更改为sFROMLocation来隔离根本原因如果您收到错误,您就会知道驱动程序在其中使用FROM解析列名称的问题。 如果你把它改成sFroLocation它会起作用吗?
此外,您可以将列名称设置为tblarinvoiceshipfrolocationtest,如果返回错误,您知道列名称> 30是使用驱动器的问题。
然后将其更改为 tblarinvoiceshipfrolocationtst如果它工作,那么你知道31长度名称不起作用。一个30。再次证据驱动程序不能支持超过30个字符的列名。
仅仅取决于你是否想要找到根本原因:P