5

私はAccessを使用して小さな在庫プログラムを作成しようとしていますが、これまでに行ったことはグーグルで行うことで、あまり知識がありません。バインドされていないフォームを使用してデータを格納するコードを作成できました。次に、別のテーブルのバインドされていないフォームに入力されたデータによって、テーブルの特定のフィールドを更新したいと思います。問題の2つのテーブルは、TransactionとStockです。在庫には、PartNo、Location、およびQtyの3つのフィールドがあります。在庫のある数量を、在庫が移動する場所から差し引いて、移動する場所に追加したいと思います。

表のサンプルデータStock

Stock_PartNo    Stock_Location  Stock_Qty
2288            SAWRH001        85
2288            SAWRH002        54
3214            SAWRH003        544
4567            SAWRH001        32
5555            SAWRH002        128
5555            SAWRH005        874
5678            SAWRH002        321
6544            SAWRH004        465
6666            SAWRH003        45
6666            SAWRH004        87
7777            SAWRH003        365
7890            SAWRH002        352
8765            SAWRH005        57
8888            SAWRH004        54
9999            SAWRH005        21

バインドされていないフォームのコードは次のとおりです。

Private Sub Command39_Click()

Dim db As Database, rsCust As Recordset


    Set db = CurrentDb
    Set rsCust = db.OpenRecordset("Transaction", DB_OPEN_DYNASET)

        rsCust.AddNew
        rsCust("Trans_PartNo") = Me!Combo52
        rsCust("Trans_Desc") = Me!Text19
        rsCust("Trans_Disp") = Me!Text21
        rsCust("Trans_Recv") = Me!Text23
        rsCust("Trans_Qty") = Me!Text25
        rsCust("Trans_Date") = Me!Text29
        rsCust.Update

        MsgBox "Material transfer information has been updated"

        Call ClearControls

    rsCust.Close
    db.Close
End Sub

このデータは、ある場所から別の場所に移動されたものの単なる記録履歴であるトランザクションと呼ばれるテーブルに格納されます。このフォームを使用してテーブル在庫を更新する必要があるため、PartNo 2288がSAWRH001からSAWRH005に転送されると、テーブル在庫が自動的に更新されます。私が理解している限り、SQLクエリを埋め込む必要がありますが、VBAでそれを行う方法がわかりません。

4

2 に答える 2

4

パラメータ付き:

Dim db As Database
Dim qdf As QueryDef

Set db = CurrentDb
sSQL = "UPDATE Stock SET Stock_Qty = Stock_Qty + [p1] " & _
     " WHERE Stock_PartNo = [p2] AND Stock_Location = [p3]"

''Temporary query
Set qdf = db.CreateQueryDef("", sSQL)
''No need to worry about quotes etc
qdf.Parameters("p2") = Me!Combo52

''Subtract
qdf.Parameters("p1") = Me.Text25 * -1
qdf.Parameters("p3") = Me.From
qdf.Execute dbFailOnError

''Add
qdf.Parameters("p1") = Me.Text25
qdf.Parameters("p3") = Me.To
qdf.Execute dbFailOnError
于 2012-09-21T10:34:11.370 に答える
1
db.Execute "UPDATE Transaction SET Stock_Qty = Stock_Qty - " & Val(Me!Text25) _
& " WHERE Stock_PartNo = '" & Me!Combo52 _
& "' AND Stock_Location = '" & fromLocation & "'", dbFailOnError

db.Execute "UPDATE Transaction SET Stock_Qty = Stock_Qty + " & Val(Me!Text25) _
& " WHERE Stock_PartNo = '" & Me!Combo52 _
& "' AND Stock_Location = '" & toLocation & "'", dbFailOnError

コード例については、こちらのリンクを参照してください。

于 2012-09-21T09:41:38.157 に答える