|
▼MAI さん:
Dlookup関数は少し時間がかかってしまうのが難点ですね。
(ヘルプでもなるべくクエリを使うように勧めているようですし)
いろいろ考えずに力技(?)で押せるところは好きですけど^^;;
Acc2000であればADOが既定だったかと思いますが、
私はDAOに慣れているのでDAOにさせてもらいます。
VBAコードの一例です。
'=======================================
Private Sub sub_Sample()
'要参照設定 Microsoft DAO X.X Object Library
Dim myDB As DAO.Database
Dim myRS As DAO.Recordset
Dim myFilSTR(2 To 3) As String '** 出荷率ごとの更新値を引数に **
Dim myLooP As Long
Dim mySQL As String
Set myDB = CurrentDb
Set myRS = myDB.OpenRecordset("Q_出荷状況", dbOpenSnapshot)
'出荷率ごとの注文NOを取得
Do Until myRS.EOF
If myRS!出荷率 > 1 And myRS!出荷率 < 100 Then
myFilSTR(2) = myFilSTR(2) & ", '" & myRS!注文NO & "'"
ElseIf myRS!出荷率 >= 100 Then
myFilSTR(3) = myFilSTR(3) & ", '" & myRS!注文NO & "'"
End If
myRS.MoveNext
Loop
'T_受注更新
For myLooP = LBound(myFilSTR) To UBound(myFilSTR)
If myFilSTR(myLooP) <> "" Then
myFilSTR(myLooP) = "IN (" & Mid$(myFilSTR(myLooP), 3) & ")"
mySQL = "UPDATE T_受注 SET フラグ = " & myLooP & _
" WHERE 注文NO " & myFilSTR(myLooP)
myDB.Execute mySQL, dbFailOnError
End If
Next myLooP
Set myRS = Nothing
Set myDB = Nothing
End Sub
'=======================================
動かすには「Microsoft DAO X.X Object Library」への参照設定が必要です。
大量データで試してないので分かりませんが、
少しは早くなるかと思います。
コードの細かい解説はご勘弁を^^;;
Accのヘルプや書籍等を参照して下さい。
参考までに
|
|