0
私はテーブルを3つリンクしたいと思っています。これを行うことは不可能であると認識しましたので、VBAで行う方法を見つけることにしました。私は、私は全く分からないが、何Option Compare Database
手段を持って、私は本当に仕事を願っていますし、それは私が前にVBAでコード化されたことがありませんAccessのフィールドの値に基づいてリレーションシップを変更する
Option Compare Database
Function changeRel()
If Players.Cond = "Quest" Then
Dim dbs As DAO.Database
Dim rel As DAO.Relation
Set dbs = CurrentDb
Set rel = dbs.CreateRelation("QuestRel", "Players", "Player Quests", dbRelationDeleteCascade)
rel.Fields.Append rel.CreateField("PlayerID")
rel.Fields("PlayerID").ForeignName = "PQuestID"
dbs.Relations.Append rel
dbs.Relations.Refresh
ElseIf Players.Cond = "Level" Then
Dim dbs As DAO.Database
Dim rel As DAO.Relation
Set dbs = CurrentDb
Set rel = dbs.CreateRelation("LevelRel", "Players", "Player Levels", dbRelationDeleteCascade)
rel.Fields.Append rel.CreateField("PlayerID")
rel.Fields("PlayerID").ForeignName = "PLevelID"
dbs.Relations.Append rel
dbs.Relations.Refresh
ElseIf Players.Cond = "Stat" Then
Dim dbs As DAO.Database
Dim rel As DAO.Relation
Set dbs = CurrentDb
Set rel = dbs.CreateRelation("StatRel", "Players", "Player Stats", dbRelationDeleteCascade)
rel.Fields.Append rel.CreateField("PlayerID")
rel.Fields("PlayerID").ForeignName = "PStatsID"
dbs.Relations.Append rel
dbs.Relations.Refresh
Else
'Do nothing
End Function
私の特定のニーズに合わせて動作させるために、それを編集してきたいくつかのコードをつかんで、それがでしたちょうどそこに。私はそれが何であるか混乱していますが、私はサブルーチンが必要であると確信しています。
セルPlayers.Cond
の値が変更されるたびにこの機能をどのように実行できるか教えてもらえますか?
[docs.SOのOptionキーワード](http://stackoverflow.com/documentation/vba/3992/vba-option -keyword/13937/option-compare-binary-text-database#t = 20161121223654120041) –
データ値に基づいてDB関係を定期的に変更しないでください。テーブルの関係はデータベースの構造的完全性を維持し、データベース設計期間中に一度だけ調整する必要があります。そうでなければ、アプリケーションロジックとレコード管理を壊すことができます。 – Parfait