将链接表用于 Excel 文档时的 ms 访问数据类型问题
Posted
技术标签:
【中文标题】将链接表用于 Excel 文档时的 ms 访问数据类型问题【英文标题】:ms access data type issue when using a linked table to an excel document 【发布时间】:2013-12-06 13:48:08 【问题描述】:我有一个电子表格,它是来自外部供应商的报告。日期列的格式与小型访问数据库的工作方式完全不同,因此我决定在 excel 中记录一个宏以将 3 列更改为 dd/mm/yyyy 格式(im uk btw)。这一切都很好,列如上所示,也被列为“日期”格式。
现在我通过链接表使用访问来链接到此 Excel 工作表,但我注意到我希望以 where 子句的形式过滤这些字段的任何查询,它不会拉入预期的结果IE 它会提取所有日期,而不是我在查询中要求的日期之间的日期,就好像它没有将它们识别为日期一样,请参阅下面的 where 子句
WHERE LatestGamma.ConfirmedPortingDate Between [Please Provide 1st Date (dd/mm/yyyy)] And [Please Provide 2nd Date (dd/mm/yyyy)];
我还通过使用 between cluase 中的实际日期对其进行了测试,但它似乎仍然忽略它。
当我查看这些列的链接表的属性时,它显示这些字段是:dd/mm/yyyy;@ 但显示为文本? 当我查看 excel 宏以查看宏用于更改我看到的列的日期格式的代码时: 列(“F:H”)。选择 Selection.NumberFormat = "dd/mm/yyyy;@"
我有另一个用作链接表的 Excel 表,日期列工作正常,显示为日期/时间而不是文本。就好像 excel 将一些元数据放入列中,使访问将它们解释为文本(即使它们被格式化为日期)
我给她一些帮助/建议会很棒
【问题讨论】:
【参考方案1】:不看文件就很难判断,但似乎主要的罪魁祸首是 excel 宏没有正确地将字符串转换为日期格式。您可以尝试在 excel VBA 中使用类似的东西将字符串转换为日期格式
Sub convert()
Dim str1 As String
str1 = Range("f6").Value
startdate = CDate(str1)
End Sub
您可能必须遍历所有单元格才能将字符串(文本)转换为日期格式。
【讨论】:
【参考方案2】:最后排序了。这或多或少是我所想的 IE 列虽然显示为日期类型似乎将其存储为某种文本。无论如何,它是使用文本到列按钮并强制它成为 DMY 格式的日期。
一旦我尝试过,我就将这些动作记录为一个宏,并在最后将生成的代码复制到我的主宏中,宾果游戏! Access 现在将其视为日期而不是文本。
不确定这是否是一个错误,但 Excel 有时可能真的很痛苦,尤其是电话号码,必须将它们存储为数据类型文本以保持前导零,然后立即将它们转换为通用以允许 vlookup 等. 我想这与上面显示为日期的想法相同,但实际上正在发生类似 suedo 文本元的事情......
【讨论】:
以上是关于将链接表用于 Excel 文档时的 ms 访问数据类型问题的主要内容,如果未能解决你的问题,请参考以下文章
如何将用Google表格编写的脚本迁移到VBA中的MS Excel宏?