我在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或访问几乎一无所知,而且我去的每个地方都远远超过我。如果有人可以帮助我,那就太棒了。
谢谢。
答案 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。