• ベストアンサー

テーブル作成クエリで主キーを設定

サブフォーム作成のため主キーを設定したいのですが、クエリでグループ化した顧客コードをテーブルとするクエリで主キーを顧客コードに設定したいのですが、クエリ実行で主キー設定方法を教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • bonaron
  • ベストアンサー率64% (482/745)
回答No.1

テーブル作成クエリ実行後、 DAO で CreateIndex ということになると思います。 おそらく、ワークテーブルで編集し、 元のテーブルに書き戻すような処理をお考えだと思いますが、 あらかじめ、主キーを設定したテーブルを作成しておき、 削除クエリで、全レコード削除、 テーブル作成クエリを追加クエリに変更したもので、 新しいレコードを追加する、 という処理で置き換えられませんか? Access であるとして、 テーブルの作成、削除を繰り返すと、 MDB ファイルの破損につながりますので。 見当違いだったら無視してください。

bokujyou
質問者

お礼

ありがとうございます。出来ました。はじめはSQLの書き込みとか、難しいのかなと考えていましたが、マクロで連続で作業を行えばいいのですね。確かに主キーは残っていました。助かりました。また、このような質問の際よろしくお願い致します。

関連するQ&A

  • ACCESSのテーブル作成クエリについて

    お世話になっております。 以下の点について教えてください。 1.テーブル作成クエリで作ったテーブルの書式固定  クエリ実行後、テーブルは作成されるのですが、クエリで設定した書式が  反映されません(例:数値→標準→小数点以下3)。  クエリで設定した書式をテーブルに反映させる方法を教えてください。  現在は、テーブル作成クエリ実行後、いちいち、テーブルの書式を変更しております。 2.ユーザー設定モードでのオブジェクト移動  ・ACCESSをユーザー設定 & グループでフィルターの状態で使っています。  ・この状態でテーブル作成クエリとテーブル作成クエリ実行後に作成されるテーブルを   グループ分けして分類しておりますが、各グループにあるテーブル作成クエリを   実行すると、グループ内にあったテーブルが「割り当てられていないオブジェクト」に   移動してしまいます。  テーブルをグループ内に固定する方法を教えてください。 よろしくお願いします。 

  • テーブル作成クエリで新テーブル作成時に、オートナン

    SELECT Q_ユニオンクエリ.* INTO 新テーブル FROM Q_ユニオンクエリ; テーブル作成クエリで、新テーブルを作成するときに、 元テーブルにはないフィールドを作成することは可能ですか? 元テーブルには主キーがなく、 カテゴリ、品名 というフィールドしかない場合、 テーブル作成クエリで新テーブル作成時に、オートナンバー型の主キーを付ける方法はありますか?

  • Access2000のテーブル作成クエリについて

    テーブル作成クエリを使用し、作成された新しいテーブルを見ると、Yes/No型のフィールドのレコードが 0 や -1 に変換されています。 これを回避、または後からチェックボックスの形式に訂正する方法はないでしょうか? もうひとつ 作成された新しいテーブルでは、コピー元のテーブルで「主キー」となっていたフィールドが「主キー」ではなくなります。どうしてなのでしょうか?

  • 選択クエリを基に不一致クエリを作成したけれど...

    識者の力をお借りしたく質問いたします。 質問ページから不一致クエリに関する内容を参考に、ある不一致クエリを作成しています。 しかし、出来るはずの方法で結果が正しく表示されず途方にくれています。 処理の内容としては、あるクエリのフィールドを参考に不一致クエリで差分レコードを抽出したいというものです。 通常不一致クエリはテーブルの主キーを基に作成するものと私は理解しているのですが、今回の処理では基のテーブルに主キーが無く、(作成できない事情があり)クエリで無理矢理主キーもどきのものを作りました。 クエリで作成したのは、数字6桁(最大で)の後ろにチェックディジットとしてアルファベット1文字を追加した計7文字のフィールドです。 例:131401A 不一致を抽出したい基となる2つのテーブルに対しこのクエリを作成しました。 この2つのクエリから不一致クエリで差分を抽出し、基のテーブルに追加クエリで追加したいのですが、どうやっても不一致項目が表示されません。 根本的にクエリからの不一致クエリは作成できないのでしょうか? よろしくお願いいたします。 ■状況 テーブル1/テーブル2(基となるテーブル、主キー無し) クエリ1/クエリ2(テーブル1/テーブル2のレコードにコードを追加するクエリ) コード1/コード2(クエリ1/クエリ2で作成したコード)例:131401A 不一致クエリ テーブル2 → テーブル1 (リレーションシップ) コード2 条件:Not Null ※テーブル2の方が最新レコードが入っているので、テーブル2の差分レコードをテーブル1に追加したいというのが基本的な内容です。 よろしくお願いいたします。

  • 主キー、インデックスが作成できない

    お世話になります。 SQLserver2000とACCESS(フロント)で使っております。 主キーもインデックスも設定していなかったテーブルに エンタープライズマネージャから主キーを設定しようとしたのですが、保存しようとすると以下のエラーが出てしまいます。 もともと更新クエリを作成したのですが、”更新可能なクエリであることが必要です。”とエラーが出てしまい、いろいろ調べるうちに主キーを設定していないから??と思い、設定しようとしたのですがうまくいきません。。宜しくお願いします。 ■エラー内容 テーブル 'テーブル名 (ユーザー名)' - インデックス 'インデックス名' を作成できません。 ODBC エラー : [Microsoft][ODBC SQL Server Driver][SQL Server]インデックス ID 1 で重複したキーが見つかったので、CREATE UNIQUE INDEX は終了しました。もっとも重要な主キーは 'XXXX-00XXXX-00-A1 ' です。 [Microsoft][ODBC SQL Server Driver][SQL Server]制約を作成できませんでした。以前のエラーを調べてください。 [Microsoft][ODBC SQL Server Driver][SQL Server]ステートメントは終了されました。

  • ACCESS テーブル作成クエリ

    ACCESS2000で、別のデータベースAのテーブルを定期的に最新のものにするために、データベースBにテーブル作成クエリを作成します。Aを開くときにはパスワードが設定されているので、テーブル作成クエリでそのパスワードの入力を求められるため、正しく入力して実行するのですが、パスワードが正しくありませんとエラーになってしまいます。 Aのパスワードを解除して実行すればテーブルが作成できますが、パスワードを解除しないで作成する方法はないでしょうか。

  • クエリ・テーブルについて教えてください。

    access2003です。 作業番号・部コード・課コード・氏名を作業番号をキーに各テーブルから取り出すテーブル作成クエリを作成しました(名称:作業番号クエリ)。 新しく部コード・課コード・フラグ(1~9)のテーブルがあります。 「作業番号クエリ」のテーブルからフラグが3・4・6・7の部コードのみを取り出すテーブル作成クエリをつくりたいのです。 どのようにすればよいのでしょうか?抽出条件は3or4or6or7だと思うのですが、これ以外わかりません。教えてください。 作業番号 部コード 課コード 氏名 100010 001 2001 森田 100012 003 2004 森本 100018 002 2003 山本 100019 001 2002 山田 部コード 課コード フラグ 001 2001 1 001 2002 4 002 2003 3 003 2004 2 004 2005 4 005 2006 5 005 2007 6 005 2008 7 003 2009 8

  • テーブル作成クエリで・・・

    Access2000/Windows2000を使用してます。 抽出条件に[Forms]![受注]![売上年]と入れたテーブル作成クエリを作りました。 クエリのデザインビューで試しに実行したら、パラメーターの入力が表示されるのですが、コマンドボタンを作成しクエリが実行されるように設定しましたが、パラメーター入力が表示されず、勝手に実行されてしまいました。 別のフォームで同じように設定したら、無事出来るのですが・・・・ 何が原因なのかさっぱり分かりません。 アドバイス宜しくお願い致します。

  • Accessのクエリ作成について

    クエリを作成する際の、テーブルの設定の仕方がよくわかりません。 たとえば、「顧客リスト」テーブルと「販売履歴」テーブルに、それぞれ「顧客ID」フィールドがあり、「顧客ID」フィールドがリレーションシップで設定されているとします。 新たに、選択クエリを作成し、そのクエリに、「顧客ID」フィールドを設定するときに、どちらのテーブルの「顧客ID」フィールドを設定するかがわかりません。 ちなみに顧客IDフィールドには、リレーションシップを設定していて、1対多の設定をしています。 「顧客リスト」テーブルの「顧客ID」フィールドが、「1」の側で、 「販売履歴」テーブルの「顧客ID」フィールドが「多」の側です。 どちらのテーブルを使用しても結果は同じなのですが、 選択クエリを作成するときに、上記のように、同じフィールドを持テーブルが2つありリレーションシップを 設定している場合は、どちらのテーブルを使わないといけないというような決まりはあるのでしょうか? どちらを使用しても構わないのでしょうか。 特に、決まりがない場合は、一般的には、どのように設定されているのでしょうか?

  • Access クエリ このレコードセットは・・・

    いつもお世話になります。 Accessで下記の様にクエリを作成しましたが、”このレコードセットは更新できません”と出てしまいます。 ■テーブル1  ・顧客ID(主キー)  ・顧客名  ・住所  ・TEL ■テーブル2  ・顧客ID  ・取引ID(主キー)  ・請求金額 ■クエリ1(集計クエリ)  ・顧客ID グループ  ・請求金額合計: Sum(請求金額) 合計 ■クエリ2(実際に使用するクエリ)  ・顧客ID(テーブル1)  ・顧客名(テーブル1)  ・住所(テーブル1)  ・TEL(テーブル1)  ・請求金額合計(クエリ1) このクエリ2を開いて更新しようとしても、”このレコードセットは更新できません”と左下に表示されて更新できません。 ・請求金額合計(クエリ1)を除けば問題なく更新できます。 ですが1顧客に対して通算で幾ら請求をしたかとその顧客のデータを同一クエリで表示・更新したいので、意味をなさなくなってしまいます。 どなかた良い方法をご教授下さいませ。