none
デバッグのエラーのことで教えてください RRS feed

  • 質問

  • VB2005とAccessで、ソフトを作っています。

    Form上にいくつかComboBoxを配置しています。

    ComboBoxにはテーブルのデータをバインドしています。表示は名前で値はIDとしています。(Displaymemberが名前、ValueMemberにID)

    このようなタイプのComboBoxが他にもあるんですが、デバッグでデータベースの更新を試したところ「テーブル”テーブル名"にリレーションシップが設定されたレコードが必要なので、レコードの追加や変更を行うことはできません。」という表示が出ました。

    試しに、名前用のComboBoxのTextを名前からValueMemberであるIDに入力しなおしたら、次のComboBoxにも同じエラー表示がされ、また同じようにValueMemberのTextを入れ・・・ということを繰り返して、やっと更新できました。(すべてValueMemberの値を入れたことになります。)

    ユーザーにわかりやすくするためにプロパティで、Displaymemberに名前等を指定しているのですが、何か他にプログラムを入れなくてはならないのでしょうか?

     

    2006年11月9日 10:07

すべての返信

  • 参照整合性が崩れているのでしょう。例えば、リレーションシップで親子の関係がIDで結ばれている時に、親にないIDを使用して子を登録することはできません。どのようにプログラムを組まれているかわかりませんが、その辺りを確認してみて下さい。
    2006年11月9日 10:31
    モデレータ
  • trapemiyaさん、お返事ありがとうございました。

    親にないIDは使用していないです。サンプルデータに5件くらいしか登録していないので入力違いではないと思います。ComboBoxにIDに対応した名前を表示させているのですが、これが問題なのかもしれません。名前でなく、IDをそのまま入れると、更新できます。

    ComboBoxの値の取得の仕方に問題がありそうなので、調べてみます。ありがとうございました。

    2006年11月11日 0:05