• ベストアンサー

アクセスのクエリの特定のフィールドをテーブルにコピー

アクセスのクエリの特定のフィールドをテーブルにコピー お世話になります。<(_ _)> 仕入管理入力フォームにて「仕入管理テーブル」へデータを入力して 「仕入管理テーブル」を基にクエリにて「管理番号」を作成しています。 入力終了後に、コマンドボタンを押してそのクエリの「管理番号」フィ ールドだけを別の「商品説明テーブル」の「管理番号」フィールドにコピー したいのですが… 参考サイト・参考書等で調べたのですが、クリック時イベントにどのように コードを書けばいいのか解りません。 宜しくお願い致します。 アクセス 超~初心者の質問ですみません<(_ _)>

  • yu_ji
  • お礼率63% (14/22)

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.6

>「Q仕入管理」にて作成した管理番号をまだ「ID・管理番号・商品名・商 >品説明…」等が未入力の「商品説明テーブル」の「管理番号」フィー >ルドにコピーすると云う事です。 >先に「商品説明テーブル」に「管理番号」を登録しておいて後から「商品 >名・商品説明」等を入力します。 ということは、まだ何も入力されていない 「商品説明テーブル」に先に「管理番号」 だけをコピーしておく、ということで いいのでしょうか。それですと、適当な オートナンバーのフィールドを作成 しておいて追加クエリ、 INSERT INTO 商品説明テーブル ( 管理番号 ) SELECT Q仕入管理.管理番号 FROM Q仕入管理; です。オートナンバーは主キーである 必要はありませんが、クエリの実行上 必要になります。特に必要がなければ デザインビューで削除してもかまいません。 何かあれば補足してください。

yu_ji
質問者

お礼

piroin654 様 ありがとうございました。<(_ _)> 説明がうまく伝えられなくお手数をお掛けしましたが、入力フォームにて 入力後「コマンド」クリックで「商品説明テーブル」にコピーが出来る様に なりました。 参考サイト・参考書等を参考にするようにしているのですが、わからない事 だらけです。 またご質問させて戴くと思いますので宜しければまたお願い致します。<(_ _)>

その他の回答 (5)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.5

投稿して気づいたのですが、同じ「仕入管理テーブル」 の「仕入管理_ID」をもつ商品が「商品説明テーブル」 に存在するならば、「仕入管理_ID」のフィールドを 主キーとしてではなく設定する必要があります。 たぶん、こういうことだと思います。

yu_ji
質問者

補足

piroin654 様 ご回答頂きありがとうございます。<(_ _)> 説明がうまく伝えられなくてすみません。 >投稿して気づいたのですが、同じ「仕入管理テーブル」 >の「仕入管理_ID」をもつ商品が「商品説明テーブル」 >に存在するならば、「仕入管理_ID」のフィールドを >主キーとしてではなく設定する必要があります。 >たぶん、こういうことだと思います。 「仕入管理テーブル」に仕入の詳細データを「入力フォーム」より 入力して居ります。 (「仕入管理テーブル」には他に「単価・取引価格…」があります) 「Q仕入管理」にて作成した管理番号をまだ「ID・管理番号・商品名・商 品説明…」等が未入力の「商品説明テーブル」の「管理番号」フィー ルドにコピーすると云う事です。 先に「商品説明テーブル」に「管理番号」を登録しておいて後から「商品 名・商品説明」等を入力します。 うまく説明できなくてすみません。<(_ _)>

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.4

えーっと、あまりあれこれやり過ぎると行き違いが 起こるので、「商品説明テーブル」に「仕入管理_ID」 フィールドを追加してみて、どうなるのか確認してみて ください。 >今現在「商品説明テーブル」にあるデータの件数しか >更新されません。 >どうも「Q仕入管理」のデータは更新されていない様な感じです。 このあたりが、こちらで確認できない状況です。設定した ID(主キー)が「商品説明テーブル」と「仕入管理テーブル」 の各レコードを一意に結びつける「仕入管理_ID」と同等の ものならば、意図したデータがコピーされると思いますが。 一応、「Q仕入管理」のSQL文は以下のようのものとして います。(張り付けたときにSQL文が崩れているかもしれません) SELECT 仕入管理テーブル.仕入管理_ID, 仕入管理テーブル.仕入場所_ID, 仕入管理テーブル.仕入日, 仕入管理テーブル.品名, 仕入管理テーブル.商品数, 仕入管理テーブル.管理番号1, 仕入管理テーブル.管理番号2, 仕入場所テーブル.仕入場所_MAME, 仕入場所テーブル.仕入場所_CD, Format([仕入日],"ddyy") & Chr(Month([仕入日])+64) AS 仕入日_CD, [仕入場所_CD] & [仕入日_CD] & [管理番号1] & "-" & [管理番号2] AS 管理番号 FROM 仕入管理テーブル INNER JOIN 仕入場所テーブル ON 仕入管理テーブル.仕入場所_ID = 仕入場所テーブル.仕入場所_ID;

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

追加ですが、「商品説明テーブル」の管理番号のフィールドの 型はテキスト型にする必要があります。

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.2

捕捉内容から、 「商品説明テーブル」に少なくとも「仕入管理テーブル」 あるいは「Q仕入管理」とを結びつけるフィールド、この場合は 「仕入管理_ID」があれば「Q仕入管理」の「管理番号」を コピーできます。 その場合は、 UPDATE 商品説明テーブル, Q仕入管理 SET 商品説明テーブル.管理番号 = [Q仕入管理]![管理番号] WHERE (((商品説明テーブル.仕入管理_ID)=[Q仕入管理]![仕入管理_ID])); のようになります。 あとは、作成したクエリをクリックするなり、 ボタンクリックを#1での方法でおこなえば いいのでは、と思います。 なお、商品説明テーブルに「仕入管理_ID」がないとなると 少し考えなければなりませんが。

yu_ji
質問者

お礼

ご回答頂きありがとうございます。<(_ _)> >「商品説明テーブル」に少なくとも「仕入管理テーブル」 >あるいは「Q仕入管理」とを結びつけるフィールド、この場合は >「仕入管理_ID」があれば「Q仕入管理」の「管理番号」を >コピーできます。 「商品説明テーブル」と「仕入管理テーブル」両方の主キーを「ID」に 変更致しました。 >追加ですが、「商品説明テーブル」の管理番号のフィールドの >型はテキスト型にする必要があります。 「管理番号」フィールドはテキスト型になっております。 そのうえでクエリのSQLビューに --------------------------------------------------------------- UPDATE 商品説明テーブル, Q仕入管理 SET 商品説明テーブル.管理番号 = [Q仕入管理]![管理番号] WHERE (((商品説明テーブル.ID)=[Q仕入管理]![ID])); --------------------------------------------------------------- と入力いたしまして実行したところ、今現在「商品説明テーブル」にあるデータの 件数しか更新されません。 どうも「Q仕入管理」のデータは更新されていない様な感じです。 「商品説明テーブル」に「仕入管理_ID」フィールドを追加した方がいいでしょうか? 宜しくお願い致します。<(_ _)>

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

勘違いならごめんなさい、ということで、たとえば、 仕入管理テーブル: 管理番号(主キー) 商品名 価格 商品説明テーブル: ID(主キー) 商品名 管理番号 説明 のようになっているとすると、以下の更新クエリ を作成します。ただし、二つのテーブルの商品名が 正確に記述されているものとします。 UPDATE 商品説明テーブル, 仕入管理テーブル SET 商品説明テーブル.管理番号 = [仕入管理テーブル].[管理番号] WHERE (((商品説明テーブル.商品名)=[仕入管理テーブル].[商品名])); このSQL文を新しいクエリのSQLビューに貼り付け「Q更新」 という名前で保存します。 ボタンクリックイベントで、 Private Sub コマンド0_Click() Docmd.Openquery("Q更新") End Sub とします。あるいは、直接このクエリをクリックしても いいです。

yu_ji
質問者

補足

ご回答頂きありがとうございます。<(_ _)> 説明不足ですみません。 -------------------------------- 仕入管理テーブル: ・仕入管理_ID(主キー) ・仕入日 ・品名 ・商品数 ・管理番号1 ・管理番号2 ・仕入場所_ID 仕入場所テーブル: ・仕入場所_ID(主キー) ・仕入場所_MAME ・仕入場所_CD -------------------------------- 上記の二つのテーブルを関連付けています。 -------------------------------- Q仕入管理: ・仕入管理_ID ・仕入日 ・仕入日_CD: Format([仕入日],"ddyy") & Chr(Month([仕入日])+64) ・品名 ・商品数 ・管理番号1 ・管理番号2 ・管理番号: [仕入場所_CD] & [仕入日_CD] & [管理番号1] & "-" & [管理番号2] ・仕入場所_MAME ・仕入場所_CD -------------------------------- 「Q仕入管理」の「管理番号」フィールドのデータだけを「商品説明テーブル」の「管理番号」 フィールドに追加(?)したいのです。 説明が下手ですみません<(_ _)> 宜しくお願い致します。

関連するQ&A

  • パラメータクエリを一つにまとめたい

    クエリ1を基にフォーム1を作成、 クエリ2を基にフォーム2を作成、 クエリ1も2もパラメータクエリを使用していて フィールド名は「番号」データ型はテキスト型です。 そして新規にフォーム3を作成しフォーム1とフォーム2をドラッグしました。 この状態でフォーム3をダブルクリックすると パラメータの入力を2回求められますがどちらも同じ番号を入力しています。 (「001」などを2回入力) これを1回にすることは可能でしょうか? ・番号フィールドの基テーブルはクエリ1と2は違うテーブルです。 ・クエリ1と2は一つにまとめたくありません。 フォーム3上に別々に表示させたいです。 ・クエリ1には全ての番号がありますがクエリ2には抜けている番号があります。 「クエリ1の全レコードとクエリ2の同じ結合フィールドのレコードだけを含める。」で全ての番号を表示できる状態です。 説明が下手ですいません。 アドバイスお願い致します。

  • アクセス2003 クエリについて

    いつもお世話になっています。 商品管理用にデータを作っています。 商品マスターテーブルでIDや商品名と共に、わかる範囲で定価と過去の仕入値を入力しています。 クエリで<商品マスター>を下記のようにまとめた<参考仕入価格クエリ>を作りました。 商品ID…商品マスターより 商品名…商品マスターより 参考仕入価格…CCur(IIf([過去の仕入値]>0,[過去の仕入値],[定価]*0.6)) さらに<参考仕入価格クエリ>と<仕入記録クエリ>を使って<仕入価格クエリ>を作ろうとしています。 <仕入記録クエリ>は、<商品マスターテーブル>と<仕入記録テーブル>を組み合わせ、仕入れのなかった商品はNz関数で仕入額が0円になるようにしています。 <仕入価格クエリ>のデザインビューで参考仕入価格をフィールドに入れてみたところ、<参考仕入価格クエリ>では×0.6で表示された定価が、0.6かけない状態で表示されてしまいました。 この場合×0.6の状態で反映させるにはどうしたらよいのでしょうか? よろしくお願いします。

  • Accessでフィールドを追加したい

    Accessであるシステムを作成しているのですが、いくつか不明な点があるのでアドバイスをお願いします。 「社員情報」をいうテーブルがあり、初期の状態で「社員番号」「氏名」「入社年月日」「年齢」とフィールドがあります。 このテーブルを基にフォーム「社員情報入力」も作ってあります。 ここで新たに、社員情報テーブルに「生年月日」「連絡先」など、フィールドを追加したいのですが・・・以下のような条件があるので、どうしていいのかわからず困っています。 【条件】 ・フィールド追加用のフォーム(新規フィールド名を入力させる)を作り、そこからフィールドを追加させる。(直接テーブルはいじらせないため) ・追加したフィールドを社員情報入力フォームに反映(表示)させたい ・追加したフィールドをレポートにも反映(表示)させたい このような条件でフィールドの追加は無理なのでしょうか? アドバイスや参考になるページを教えてください。 よろしくお願いします。

  • Accessで任意のテーブルのフィールド値をクエリの抽出条件にできますか?

    Accessで任意のテーブルのフィールド値をクエリの抽出条件にできますか? 工程管理のAccessDBがあり、毎日更新される工程を管理するため、数種類の選択クエリを作成しています。 そのクエリからExcelのデータベースクエリを使ってExcelシートにクエリ毎に各シートに取り込んでいます。 Accessクエリは不定期で抽出条件を変更しています。 抽出条件はどのクエリでも同時に同じものを使うところが多いため、任意に入力した値を抽出条件に指定できれば、一度で全クエリの抽出条件を変更できるのではないかと考えています。 色々調べてもフォームを使った方法は紹介されていますが、上記の条件下でいい方法はないでしょうか? 抽出条件は『Is Null Or >#2008/06/30#』のような感じです。

  • テーブル・クエリ・フォーム どれがいい?

    アクセス初心者の為、よくわからないので教えてください。 テーブル1があり そこには ID(主キー/オートナンバー型) フィールド1(テキスト型)があります。 そのテーブルを基にクエリ1作成してます。 [SELECT テーブル1.* FROM テーブル1;] です。 また、テーブル1をレコードソースとしたフォーム1も作成しています。 そして図のようにメインメニューフォームを作成し それぞれのコマンドボタンを設置しました。 モジュールには --------------------------------------------------------- Option Compare Database Option Explicit Private Sub コマンド0_Click() DoCmd.OpenTable "テーブル1", acViewPivotTable End Sub Private Sub コマンド1_Click() DoCmd.OpenQuery "クエリ1", acViewPivotTable End Sub Private Sub コマンド2_Click() DoCmd.OpenForm "フォーム1", acFormPivotTable End Sub --------------------------------------------------------- と書いたので どのボタンを押してもピボットテーブルを開けます。 しかしどれか一つにしたいのですが 今後運用するにおいてどれで開けばいいのでしょうか? ピボットテーブルビューで開くならどれも同じでしょうか? 今回はピボットテーブルビューで表示していますが データシートビューでも表示させたい場合があれば 「フォームなら条件付き書式が設定できるからフォームが良いかなー」 と思っています。 確かテーブルやクエリでは条件付き書式はできなかったような・・・ 全てのビューで開くにおいて テーブル・クエリで開くメリットがあれば教えてください。 ご回答よろしくお願いします。

  • アクセスのクエリの組み方を教えてください

    アクセスで、クエリを組みたいのですがうまくできません。 添付画像をご覧ください。 テーブル1の中の「仕入コード1」フィールドと「仕入コード2」フィールドと 仕入コードマスタの「仕入コード」フィールドとの掛け合わせを行いたいです。 その結果、 (1)「仕入コード1」フィールドに存在して、「仕入コード」フィールドに存在しない、 (2)「仕入コード2」フィールドに存在して、「仕入コード」フィールドに存在しない レコードを一度に抽出したいです。 今回の場合であれば、品番222(含むAB)と品番333(含むAD)の2レコードを抽出したいです。 クエリを組みましたが、うまくそのようにできませんでした。 クエリのどこがおかしいのか?ご指摘頂けませんでしょうか。よろしくお願いいたします。

  • Accessのフォームとテーブルについて教えてください。

    Access2003を使用しています。 既存のフォームAにフィールド3個を増やしました。 フォームAはテーブル(1)と連動していました。 追加したフィールドはテーブル(6)のものです。 ところがフォーム上で追加フィールドに入力が出来なくなりました。3フィールドのうち、ひとつはコンボボックスです。表示はされますが確定ができません。 フォームAのSQLステートメントではテーブル(1)・(6)以外にテーブル(2)・(3)・(4)・(5)が結合されています。 フォームAからするとテーブル(2)・(3)・(4)・(5)のデータはIDの名称を見るための参照用です。 テーブル(6)は、追加フィールドのコンボボックスが参照用で、他の2追加フィールドは、フォームから入力してテーブル(6)に反映させたいものです。 テーブル(6)の画面では入力できます。 フォーム上からは入力できません。 設定が何か欠けているからでしょうか? 他の質問では2つのテーブルをひとつのフォームにする場合は、クエリを別に設けた方がいいとなっています。フォームが出来上がっているので、できればクエリを設けずに行いたいのですが、よくない方法でしょうか? 手順なども踏まえて教えていただけると助かります。 よろしくお願いいたします。

  • アクセス2003 クエリの書式

    いつもお世話になっています。 商品テーブルや仕入テーブルなど数種類を作り、それを基にクエリをいくつか作りました。 テーブル[仕入記録]から各商品の直近仕入額を抽出したクエリ[直近仕入額クエリ]とテーブル[商品マスター]を組み合わせ、仕入れのない商品(仕入記録に入力がない商品)はNz関数で0になるようにしました。 そうしたところ商品名や金額はあっているのに、直近仕入額の書式が文字列のような表示になってしまいました。 もちろん[直近仕入額]やその他のテーブルで金額のフィールドは全て書式を通貨にしています。 Nz関数の使い方がおかしいのでしょうか? それとも他に原因があるんでしょうか? よろしくお願いします。

  • access2007 テーブルデータのフィールドの並び替えをしたい

    テーブルを作成し、フィールドを複数作りました。 それを見やすいように任意に並び替えをし、保存してから再度開くと並び替えをする以前の状態に戻っています。 開くたびにフィ-ルドを並び替えをしている状態です。 一度作成した順番は任意に変更して保存できないのでしょうか?

  • アクセス テーブル、クエリーについて

     アクセスでソフト作成中です。そこで教えてほしいことがあります。 たとえば下記のように2つのテーブルがあります。 テーブル1   テーブル2   フィールドA    フィールドB  a1       10  b1       20  c1       30          テーブル1の数値は固定します。そこで下記のようなクエリーを作成したいのです。 クエリー1 フィールドA フィールドB a1 10 b1 20 c1 30 テーブル2に数字を入れていくと テーブル1   テーブル2   フィールドA    フィールドB  a1       10  b1       20  c1       30           40 クエリー1 フィールドA フィールドB a1 40 b1 20 c1 30 このように数字が上書きされていくようなクエリーは作成できないでしょうか。(あくまでテーブル1の数値は固定、フィールドAとフィールドBにリレーションシップは設定されていない。) よろしくおねがいします。