2017-05-29 51 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