2012-01-25 6 views
4

私は、リンクされたSQL Server(2008)からのデータを含む分割フォームビューを持っています。access 2010 with linked sql tables

レコードを更新するにはどうすればよいですか?

現在、テキストボックス内で何も変更できません。これは、データがリンクテーブルから取得されているためです。

更新するには、コマンドとcoonnオブジェクトを作成し、通常のVB方式でプログラムする必要がありますか?

もしそうなら、更新クエリを作成するときにリンクテーブルを参照する構文は何ですか?

私の分割フォームでは、そこにボタンをドロップし、マクロ、実行コードなどを実行するためのオプションが表示されています。どれが適していますか?

多くのおかげで、

KS

答えて

3

まずテーブルは読み取り専用でリンクされていなかったことを確認してください。

リモートテーブルにリンクすると、各行を一意に識別するプライマリキーまたは別のフィールドの組み合わせを識別できない場合、Accessは読み取り専用にします。場合によっては、必ずしもそうとは限りませんが、不明な場合はプライマリキーとして使用するフィールドを指定するよう依頼することがあります。

しかし、この問題は簡単に確認できます。データシートビューで直接リンクテーブルを開き、値を編集できるかどうかを確認します。そうでない場合は、表を再リンクし、Accessに主キーについて通知するオプションを探します。

リンクが読み取り専用でない場合は、フォームの[編集を許可]プロパティが[はい]に設定されていることを確認してください。

また、スプリットフォームについて何か問題が発生しているかどうかを判断するために、スプリットフォームではなく単純なフォームを試すこともできます。

+0

ありがとう、私は試してみましょう - 私はプライマリキーのために私に促すアクセスを呼び出すが、私はテーブルが主キーを持っていないとしてキャンセルした。 テーブルを変更してプライマリキーをIDシードとして入れることができるかどうかを確認する必要があります。これにより、Accessは自動的にアップデートを追加し、機能を追加できますか?これはジョイントクエリなどでも機能しますか?再度、感謝します。 – Perplexed

+0

これは最初の犯人のようですが、まだ確認していない問題が他にもあるかもしれません。構造を変更した後にテーブルを再リンクし(既存のリンクを削除して新たに追加する)、アクセスリンクから直接開いたときにテーブルのデータを編集できることを確認します。 – HansUp

+0

クエリが編集可能かどうかは、クエリの性質によって異なります。常にそうとは限りませんが、1対多結合を使用するクエリの「多数」側のフィールドは編集できますが、「1」側のフィールドは編集できません。私が今言うことのできる最高のものはあなたの質問を試みることです。編集可能ではないが、それが必要な場合は、新しい質問にSQLを投稿し、適切な代替案を見つける手助けをすることができます。 – HansUp

3

対処:

MSのアクセスが8バイトであるタイプのBigIntの主キーを持つテーブルを登録しようとすると、アクセスのみ4バイトのint値を扱うことができるbarfs。回避策は以下の通りです:

  1. ドロップ制約(BIGINTのPK)SQLテーブルに
  2. アイデンティティシード
  3. リンクでMS Accessのテーブル
  4. ドロップ新しい制約を(新しい主キー(int)を作成します。 int PK)& MS SQLで以前の制約(bigint PK)を再追加します

Voila!