Ms access 如何使用ms access查询将ms access中的一列数据转换为多行

Ms access 如何使用ms access查询将ms access中的一列数据转换为多行,ms-access,Ms Access,我在ms access表中的内容如下所示 编号购买 101产品1产品2产品3 102产品1产品2 我想使用ms access query(仅使用select query)将其转换为以下格式 编号购买 101产品1 101产品2 101产品3 102产品1 102产品2 我无法将列转换为行,在表中我有一列,其中多个值由空格分隔,我必须在ms access select query中将其逐行转换为行 请任何人都可以帮助我如果你愿意使用代码,那么这是很容易的 使用以下代码计算空格数 Public Fu

我在ms access表中的内容如下所示

  • 编号购买
  • 101产品1产品2产品3
  • 102产品1产品2
  • 我想使用ms access query(仅使用select query)将其转换为以下格式

  • 编号购买
  • 101产品1
  • 101产品2
  • 101产品3
  • 102产品1
  • 102产品2
  • 我无法将列转换为行,在表中我有一列,其中多个值由空格分隔,我必须在ms access select query中将其逐行转换为行
    请任何人都可以帮助我

    如果你愿意使用代码,那么这是很容易的 使用以下代码计算空格数

    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
    
    Private子命令0\u Click()
    像细绳一样暗淡
    Dim strSQL As String'要将ParseText值插入新的cust_info表中吗
    将文本解析为字符串
    myDelim=“”
    如果Len(myDelim)>0,则
    
    对于i=0到3’,所以。。。你试过什么?由于您是新手,我强烈建议您阅读我们的,尤其是。嗨,John,这是我添加到您的ParseText函数中的新代码。。。如果Len(MyDelim)>0,则对于I=0到x,ParseText=Split(TextIn,MyDelim)(I)Dim strSQL作为字符串“希望将ParseText值插入新的cust_info表strSQL=”insert into cust_info([cust_id],[cust_prods])值(1,“&ParseText&“;”DoCmd.RunSQL strSQL下一步。。。上面的插入语句不起作用,请帮助我,谢谢,Amay看一看我修改过的答案谢谢john你的代码运行得很好,但面临一个新问题插入查询不起作用,因为我不知道如何形成连接字符串并安装ms access驱动程序你能给我介绍一下什么是ms access驱动程序吗?当我们插入ms access表时,我们需要ms access驱动程序安装我正在使用下面的constring constring=“Driver={MicrosoftAccessDriver(*.mdb)};DBQ=C:\Users\Upendra\Downloads\Compressed\AgeRange.mdb;Persist Security Info=False;“con.Open constring strSQL=”插入emp_详细信息([emp_no],[emp_Info])值(“&i+1&”,“&ParseText&”);”con.执行strsqldocmd.RunSQL strSQL,但当从emp_详细信息表中选择我时,没有插入任何内容