0

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

CSV 文件如下所示:

Fecha de Sorteo,Numero de sorteo,Numero de Juego,Nombre,Valores Principales,Comodines,DRAWNAME,Ganadores de Premio Mayor,Premio Mayor Garantizado
"8/25/2002 12:00:00 AM","1714","1","main","31,34,26,1,2,28","16","Loto","0",

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

我是否必须创建多个表达式来将此字段分成其组件,还是它们是替代解决方案?

4

2 回答 2

0

我建议使用Split 函数将数据写入本地表。它将允许您将该字段拆分为一个数组。然后使用 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”,完全未经测试,但它可能非常准确,应该让你开始。

于 2015-11-24T16:29:43.150 回答
0

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

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

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

于 2015-11-24T16:33:46.113 回答