2017-05-29 49 views
0

我在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用字母来计算将要一个额外的记录复制。基本上我想看起来像这样。

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

你有麻烦的接入与SQL做到这一点。我可以给你的最好建议是用你选择的编程语言来完成。 –

+0

您是否试图一次性修复数据,或者这是一个持续的问题? – Kris

+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