重复记录并添加变量

时间:2017-05-29 00:51:14

标签: sql ms-access

我在Access中有一个看起来像这样的表。

ORDNO   OPSEQ   OPDSC                   UU40MX
M438840 0010    TURN COMPLETE           2                                       
M438840 0020    BROACH SPLINE           1                                       
M438840 0030    FINAL INSPECT           1                                       
M438840 0040    WASH, OIL, PACK         1

当UU40MX>时,需要复制额外的记录。 1并通过字母将OPSEQ更改为Count。基本上我想看起来像这样。

ORDNO   OPSEQ   OPDSC                   UU40MX
M438840 0010a   TURN COMPLETE           2 
M438840 0010b   TURN COMPLETE           2                                      
M438840 0020    BROACH SPLINE           1                                       
M438840 0030    FINAL INSPECT           1                                       
M438840 0040    WASH, OIL, PACK         1

问题在于我对SQL或访问几乎一无所知,而且我去的每个地方都远远超过我。如果有人可以帮助我,那就太棒了。

谢谢。

1 个答案:

答案 0 :(得分:0)

正如Jorge所说,需要使用编程语言,例如VBA。 VBA可以运行一些SQL操作语句(UPDATE,INSERT),但单独的SQL不会执行您想要的操作。代码将打开记录集对象,循环记录,运行SQL操作,如:

Sub FixData()
Dim rs As DAO.Recordset, X As Integer, Z As Integer, intC As Integer, intAsc As Integer
Set rs = CurrentDb.OpenRecordset("SELECT * FROM Table1 WHERE UU40MX > 1 AND NOT OPSEQ LIKE '*[a-b]';")
If Not rs.EOF Then
    rs.MoveLast
    rs.MoveFirst
    intC = rs.RecordCount
    For X = 1 To intC
        intAsc = 98
        For Z = 1 To rs!UU40MX - 1
            CurrentDb.Execute "INSERT INTO Table1(OrdNo, OPSEQ, OPDSC, UU40MX) " & _
                "VALUES('" & rs!OrdNo & "', '" & rs!OPSEQ & Chr(intAsc) & "', '" & rs!OPDSC & "', " & rs!UU40MX & ")"
            intAsc = intAsc + 1
        Next
        rs.Edit
        rs!OPSEQ = rs!OPSEQ & Chr(97)
        rs.Update
        rs.MoveNext
    Next
End If
End Sub

此代码假定UU40MX永远不会超过26。