2015-05-23 2 views
0

Что я имею в таблице доступа мс нижекак преобразовать одну колонку с данными в несколько строк доступа мс с помощью запроса доступа мс

  1. Количествопокупка
  2. 101 product1 product2 product3
  3. 102 product1 product2

И я хочу преобразовать его в формат ниже, используя запрос доступа к ms (usi нг только запрос на выборку)

  1. Количествопокупке
  2. 101 Product1
  3. 101 product2
  4. 101 Product3
  5. 102 Product1
  6. 102 product2

Я не могу преобразовать столбец в строки, в таблице у меня есть столбец, в котором несколько значений разделены пробелом, и я должен преобразовать его в строку за строкой в ​​запросе выбора доступа к MS , пожалуйста, любой может мне помочь

+0

Итак ... что вы пробовали? Поскольку вы новичок, я настоятельно рекомендую вам прочитать нашу [Турную страницу] (http://stackoverflow.com/tour) и особенно [Как задать хороший вопрос?] (Http://stackoverflow.com/help/how -спрашивать). – ZygD

ответ

0

Если вы готовы использовать код, то это довольно легко используйте следующий код, чтобы подсчитать количество пробелов

Public Function calculateSplits(InputRecord as String) 
Dim recordWithoutSpaces as String 
Dim noOfSpaces as Integer 

recordWithoutSpaces = Replace(InputRecord," ","") 
noOfSpaces =Len(InputRecord) -Len(recordWithoutSpaces) 
calculateSplits = noOfSpaces 
End Function 

затем используйте следующий код для Разделить записи

Public Function ParseText(TextIn As String, x As Byte, Optional MyDelim As String) As Variant 
On Error Resume Next 
If Len(MyDelim) > 0 Then 
    ParseText = Split(TextIn, MyDelim)(x) 
Else 
    ParseText = Split(TextIn, " ")(x) 
End If 
End Function 

Тогда вы просто создать функцию, которая считывает таблицу и присоединяет записи в другую таблицу расщепленной, как вы хотите

Согласно вашему последнему коду

Private Sub Command0_Click() 
Dim myDelim As String 
Dim strSQL As String ' want to insert the ParseText value into the new cust_info table 
Dim ParseText As String 
myDelim = " " 
If Len(myDelim) > 0 Then 
     For i = 0 To 3 ' <-- n+1 CalculateSplits e.g if you have found 3 splits (spaces) then i =0 to 4 
     ParseText = Split("101 product1 product2 product3", myDelim)(i) 
      strSQL = "INSERT INTO cust_info([cust_id], [cust_prods]) VALUES ('" & i + 1 & "','" & ParseText & "');" 
     DoCmd.RunSQL strSQL 
     Next 


End If 

End Sub 

Просто обратите внимание на мой комментарий о верхнем пороге я противостоять.

+0

Привет Джон, Это новый код, который я добавил к вам ParseText функция, ... If Len (MyDelim)> 0 Тогда Для I = 0 до х = ParseText Split (TextIn, MyDelim) (I) Dim strSQL As String 'вставить значение ParseText в новую cust_info таблицу \t strSQL = «INSERT INTO cust_info ([cust_id], [cust_prods]) VALUES (1,'» & ParseText &» ');» DoCmd.RunSQL strSQL Следующий ... Оператор вставки выше не работает, пожалуйста, помогите мне Спасибо, Amay – amay

+0

Посмотрите на моем пересмотренный ответ – John

+0

спасибо джон ваш код работает совершенно прекрасный но перед новым запрос вопроса вставки не работает, потому что я Не знаете, как сформировать строку подключения и установить драйвер доступа ms, можете ли вы мне посоветовать – amay

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