2017-05-29 16 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を文字数で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

あなたは一回のパスでデータを修正しようとしていますか?これは現在進行中の問題ですか? – Kris

+0

これは現在進行中の問題です。 –

答えて

0

ホルヘが示唆しているように、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あなたがアクセスしてSQLでこれを行うには困っている26

関連する問題