0

主要な在庫データベースに取り組んでいます。誰が部屋の鍵をサインアウトし、いつそれらを戻すかを管理するための何か。私は使用する予定のテーブルを作成し、フォームの作業を開始しました。ただし、フォーム/サブフォームを希望どおりに機能させるのに問題があります。

テーブルの結果であるサブフォームのレコードを追加/編集/削除などするためのボタンを作成しました。DBクラスで行った古いプロジェクトに基づいてボタンをコーディングしました(他の誰かがフォームを作成し、クエリを実行しました)。私はそれらを機能させることができないようです。これまでのところ、「mainKeys」フォームのボタンのみをコーディングしました。

メインフォームには14個のレコードのうち1個が表示されますが、古いプロジェクトのフォームにはサブフォームのすべてのレコードしか表示されないことに気付きました。

アクセスファイルは次のとおりです:http://jumpshare.com/b/W7AKih

これが私の古いプロジェクトです(これは私がコピーしようとしているものです):http://jumpshare.com/b/r7Y6O1

ボタンのコードは次のとおりです。

Option Compare Database

Private Sub cmdAdd_Click()
If Me.keyID.Tag & "" = "" Then
    CurrentDb.Execute "INSERT INTO KEYS(KEY_ID, ROOM, DRAWER)" & _
        " VALUES(" & Me.keyID & ",'" & Me.roomID & "'," & Me.drawerID & ")"
          subKey.Form.Requery
Else
    CurrentDb.Execute "UPDATE KEYS " & _
    " SET KEY_ID=" & Me.keyID & _
    ", ROOM='" & Me.roomID & "'" & _
    ", DRAWER='" & Me.drawerID & "'" & _
    " WHERE KEY_ID=" & Me.keyID.Tag
End If
cmdReset_Click
subKey.Form.Requery
End Sub

Private Sub cmdBack_Click()

End Sub

Private Sub cmdDelete_Click()
If Not (Me.subKey.Form.Recordset.EOF And Me.subKey.Form.Recordset.BOF) Then
    If MsgBox("Confirm Deletion?", vbYesNo) = vbYes Then
        CurrentDb.Execute "DELETE FROM KEYS" & _
            " WHERE KEY_ID=" & Me.subKey.Form.Recordset.Fields("KEY_ID")
                Me.subKey.Form.Requery
    End If
End If
End Sub

Private Sub cmdEdit_Click()
If Not (Me.subKey.Form.Recordset.EOF And Me.subKey.Form.Recordset.BOF) Then
        With Me.subKey.Form.Recordset
            Me.keyID = .Fields("KEY_ID")
            Me.roomID = .Fields("ROOM")
            Me.drawerID = .Fields("DRAWER")
            Me.keyID.Tag = .Fields("KEY_ID")
            Me.cmdAdd.Caption = "Update Record"
            Me.cmdEdit.Enabled = False
        End With
End If
End Sub

Private Sub cmdExit_Click()
 DoCmd.Close
End Sub

Private Sub cmdReset_Click()
    Me.keyID = ""
    Me.roomID = ""
    Me.drawerID = ""

    Me.keyID.SetFocus
    Me.cmdEdit.Enabled = True
    Me.cmdAdd.Caption = "ADD KEY"
    Me.keyID.Tag = ""
End Sub

[リセット]ボタンと[終了]ボタンは正常に機能しますが、レコードの追加/削除/更新は機能しません。また、これは私が学校のオフィスで取り組んでいる小さなプロジェクトです。誰かがファイルに表示されているものからの推奨事項がある場合、それは素晴らしいことです。

4

1 に答える 1

0

何も起こらない理由は、データベースのイベント行が[Embedded Macro]ではなく[Event Procedure]に設定されているため、投稿したコードが実行されないためです。コードに到達したかどうかを確認するのに問題がある場合は、常にブレークポイントを設定することをお勧めします。

その後、私の考えでは、あなたはある意味ではあまりにも多くの問題を抱え、別の意味ではあまりにも少なすぎる. Access がサブフォームへの追加を非常に適切に処理するときに挿入コードをすべて記述する代わりに、データが適切な状態であることを確認するために、より多くのチェック コードを記述します。

于 2013-01-10T12:15:40.843 に答える