逗号分隔MS Access 2016查询中的字段中的文本

时间:2015-11-24 16:17:41

标签: ms-access office-2016

我有一个csv文件(每周更新3次。我无法控制其格式,因此无法规范化)我创建了一个到MS Access 2016数据库的OBDC链接。(我选择了MS Access to用它刷新我的技能,否则将在SQL中完成。我已经尝试了为链接表设置OBDC链接的各种排列,但没有为其他字段提供最佳结构。

CSV文件如下所示:

beginsWithHash

我正在尝试创建一个查询,以逗号将字段3分成6个组成部分。我已经看到很多使用InStr和Mid函数(例如看到here)分离2个或3个组件(但绝不会超过它们)的示例。

我是否必须创建多个表达式以将此字段分隔为其组件,或者它们是替代解决方案?

2 个答案:

答案 0 :(得分:1)

我建议使用Split function将数据写入本地表。它允许您将该字段拆分为数组。然后使用VBA将整个记录写入Access。

所以,比如:

Dim db as Database
Dim rec as Recordset
Dim rec2 as Recordset

Set db = CurrentDB
Set rec = db.OpenRecordset("SELECT * FROM MyLinkedTable")
Set rec2 = db.OpenRecordset("SELECT * FROM MyLocalTable")

Do while rec.EOF = False
  rec2.AddNew
  rec2("Field1") = rec("Field1")
  rec2("Field2" = rec("Field2")
  strArray = Split(rec("Field3"), ",")
  rec2("Part1") = strArray(0)
  rec2("Part2") = strArray(1)
  etc...
  rec2.Update
rec.MoveNext

以上是“aircode”并且完全未经测试,但它可能非常准确,应该让你入门。

答案 1 :(得分:0)

所以你的文件似乎遵循CSV规范,其中值可以放在括号之间......

然后,您应该可以直接将其作为ADODB记录集(*)打开。与“Valores Principales”数据对应的列将包含纯文本字符串,即6个值,由逗号分隔。

(*)不知道它是否适用于DAO记录集...例如,检查此链接(它是excel但它是相同的逻辑):return csv file as recordset