2

Access では、テーブル間に 1 対多のリレーションシップを設定できます。

次に、1 つのテーブルに (+) 記号があり、2 番目のテーブルの多くの行にリンクしています。

(+) 記号をクリックすると、表 1 に関連する表 2 のすべての行が表示されます。

SQL Server をデータ ストアとして使用し、リンク テーブルにアクセスする方法はありますか?

SQL Server テーブルにデータをセットアップしており、Access 2010 をフロントエンドとして使用したいと考えていました。

4

2 に答える 2

1

AccessでODBCリンクテーブルのサブデータシート(+)機能を自動的に有効にできるとは思いません。

ネイティブAccessテーブルで機能する方法は、SubdatasheetNameプロパティのデフォルトが[Auto]であるということです。[自動]を使用すると、Accessは定義された関係を確認し、サブデータシートとして関連するテーブルを選択します。

SQL Serverにリンクされたテーブルでは、AccessはSQL Serverで定義された関係を調べず、サブデータシートとして使用するテーブルを選択しません。AccessでSQLServerリンクテーブル間の関係を再度定義することはできますが(参照整合性を強制することはできません)、それでもサブデータシートは適用されません。また、リンクされたテーブルのデザインビューからSubdatasheetNameLinkMasterFields、およびLinkChildFieldsプロパティを手動で設定できますが、それはテーブルを閉じるまで続きます。

あなたが望むものに何かを近づけるために私が知っている唯一の方法は、VBAを使用してを変更することTableDefです。この例では、ProductsCategoriesの両方がSQLServerテーブルへのODBCリンクです。

Dim db As DAO.database
Dim tdf As DAO.TableDef
Dim prp As DAO.Property

Set db = CurrentDb
Set tdf = db.TableDefs("Products")

Set prp = tdf.CreateProperty("SubdatasheetName", dbText, "Categories")
tdf.Properties.Append prp

Set prp = tdf.CreateProperty("LinkMasterFields", dbText, "RefID")
tdf.Properties.Append prp

Set prp = tdf.CreateProperty("LinkChildFields", dbText, "CategoryID")
tdf.Properties.Append prp

Set prp = Nothing
Set tdf = Nothing
Set db = Nothing

最後に、サブデータシートは便利ですが、他の課題ももたらします。問題のプロパティのSubdatasheetNameセクションを参照してください。

于 2013-02-11T18:04:04.153 に答える
0

UI でこれを行う方法もあります。

  • マスター テーブル (テーブル Products in VBA example) のテーブル定義 (デザイン ビュー) を開きます。警告を無視します。
  • テーブルのデザイン ビューでプロパティ ウィンドウを開きます。
  • プロパティSub Datasheet Nameにテキスト Table.Categories (サブデータシート テーブル) を入力します。
  • リンク フィールド (LinkMasterField および LinkChildFields) は、既存のリレーションを使用して自動的に入力される必要があります。そうでない場合は、関係の列名を入力します。つまり、CategoryID (プライマリ + 外部キー)
  • テーブルを閉じて、デザインの変更を保存します

それだ。

于 2014-06-24T08:52:57.963 に答える