2015-11-24 1 views
0

У меня есть файл csv (обновляется 3 раза в неделю. У меня нет контроля над его форматом, поэтому не могу его нормализовать), что я создал OBDC-ссылку на MS Access 2016. (Я выбрал MS Access, чтобы обновить свои навыки, иначе завершил бы в SQL). Я пробовал различные перестановки в настройке ссылки OBDC для связанной таблицы, однако ни одна из них не дает оптимальной структуры для других полей.Запятая, разделяющая текст в поле в MS Access 2016 Query

Файл 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 составных частей. Я видел много примеров, которые разделяют либо 2 или 3 компонента (но не более того) с использованием InStr и Mid-функций, например, here.

Должен ли я создавать несколько выражений для разделения этого поля на его компоненты или их альтернативное решение?

+0

увидеть, если это помогает https: // MSDN .microsoft.com/en-us/library/6x627e5f (v = vs.90) .aspx –

ответ

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» и полностью непроверенный, но это, вероятно, довольно точно, и вы должны получить работу.

+0

Я просто хочу отметить, что мой ответ был представлен до изменения образца CSV, поэтому, в то время как позиция Field3 больше не точна, она по-прежнему действительна способ справиться с вашей проблемой с небольшой дополнительной настройкой кода. –

0

Так что ваш файл, кажется, следует CSV спецификации, где значения могут быть поставлены в скобках ...

Затем вы должны быть в состоянии открыть его непосредственно в качестве записей ADODB (*). Столбец, соответствующий данным «Valores Principales», будет содержать текстовую строку, являющуюся вашими 6 значениями, разделенными comas.

(*) не знаю, если он работает с DAO ... Для набора записей Например, проверьте эту ссылку (это первенствовать, но это та же самая логика): return csv file as recordset

+0

Спасибо. Я обновил вопрос, чтобы включить клип с фактического CSV. (--- была только моя собственная плохая разметка). –

+0

И поле 'field3' - многозначное поле или просто одно стандартное поле? –

+0

Стандартное поле с шестью значениями, разделенными запятой. –

 Смежные вопросы

  • Нет связанных вопросов^_^