• ベストアンサー

Access2002について

Access2002で次のようなデータがあり、 フィールドA |フィールドB | フィールドC --------------------------------------------  123    |  234   |  456    |  123   |   (1)  789    |  123   |   (1) フィールドBのデータが、フィールドAのデータの中に存在している時は、フィールドCに(1)と表示させる。 ・・・という処理をしたいのですが、どんな方法でやったらいいのでしょうか?レコード数は50万程あります。 よろしくお願いします。

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

  • ベストアンサー
  • snoopy64
  • ベストアンサー率42% (337/793)
回答No.3

テーブル名:t1 フィールド名:f1,f2,f3 クエリ1名:q1 クエリ1内容:SELECT t1.f1 FROM t1; クエリ2名:q2 クエリ2内容:UPDATE t1 INNER JOIN q1 ON t1.f2 = q1.f1 SET t1.f3 = "A"; これでq2を実行したら、ちゃんとできました。 頑張ってください(^o^)丿

shizuponjp
質問者

お礼

おぉ!出来ました。出来ちゃいました。ありがとうございます。いわゆる更新クエリですよね。自分では全然かけません。本当に助かりました。ありがとうございますm(__)m

その他の回答 (2)

  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.2

簡単な方法として フィールドAだけの抽出クエリを作りテーブルにそのクエリをテーブルの全てのレコードとクエリのレコードと同じ結合のリレーションを作ります。 クエリのレコードがNullでないものに(1)をふるようにすれば良いのではないでしょうか。

shizuponjp
質問者

補足

う~ん、似たような処理をしてみたんですが上手くいかないんですよね。 フィールドAとフィールドBでそれぞれクエリを作り、その2つのクエリでリレーション(フィールドAの全データとフィールドCの同じ結合フィールドのレコードだけを含める)を設定し、もう一つクエリを作ってデータを表示させて見るのですが、何か間違ってるのでしょうか?

  • honopy
  • ベストアンサー率0% (0/2)
回答No.1

クエリにて、フィールドCにあたる列に、 フィールドC:IIF(Nz([フィールドA])>=Nz([フィールドB]),"(1)",null) とすると、可能だと思います。お試し下さい。 ※Nz()はカッコ内のフィールドがNULL値の場合に0(ゼロ)に置換する関数です。 ※頭の「フィールドC:」はフィールド名を指定しております。

shizuponjp
質問者

補足

説明不足だったようですみません。データの大小は、決まっているわけではなく、文字で言うと フィールドA | フィールドB | フィールドC ---------------------------------------------    あ   |    い   |         う   |    あ   |   ★    え   |    お   |  --------------------------------------------- という感じです。 フィールドBのデータが、フィールドAのいずれかに存在している際に、フィールドCになにか値を入れるようにしたいと思っています。 どうぞよろしくお願い致します。

関連するQ&A

  • ACCESS サブフォームのフィールドにカーソルをあてる

    ACCESS2003で、VBAで簡単なプログラムを作っています。 <やっていること> ・フォームAからフォームBを開きます。 ・そのときにフォームAの番号と一致するデータをフォームBに表示します。 ・フォームBにはサブフォームCが埋め込んでいます。 このサブフォームCの中のフィールドDにカーソルが入っているようにしたいのですが、 Forms!サブフォームC!フィールドD.setfocus としたら、「カレントレコードには、フィールドDという名前のフィールドはありません」というエラーがでます。 フィールドDというフィールドは存在しています。 このような場合、どのように記述するのがよろしいのでしょうか。 よろしくお願いします。

  • Access テーブルの変更点を一覧に表示したい。

    お世話になります。 AとBと全く同じ構造のテーブルがあります。 Bにデータを流し入れ、Aとの差分を取得し、アプリケーションの一覧にデータの変更があった箇所を分かるように表示させたいです。AとBとの差分のレコードはAとBを結合したSQLを元に取得できるのですが、レコードのどのフィールドに変更があったのかまでは分かりません。 この場合、対象レコードのフィールド分、ループ処理を行い、データを比較していくしかないのでしょうか?フィールド数が多いため、1レコード、1フィールドづつ比較するのは処理に時間が掛かりそうです・・・。 こういった場合、どうすれば良いのか迷っております。 何卒、アドバイスを宜しくお願いします。

  • ACCESS 以下のようなレコードを抽出するSQL

    ACCESSのデータベースで あるフィールド(フィールドAとします)の値に対して、 別のフィールド(フィールドBとします)の値が1つに決まる データベースがあるとします。 例えば、フィールドAの値が1のレコードは、 どのレコードもフィールドBの値はaである。など このようなデータベースでこのような関係になっていないレコード 例えば、フィールドAの値が1のレコードの中に フィールドBの値がaであるレコードと フィールドBの値がbであるレコードがある。など を抽出するSQLはどのように記述すればよいでしょうか。 テーブル名はTABEL1とします。 次の2つのケースでお願いします。 (1)フィールドAの値が異なればフィールドBの値が異なる場合 例えば、フィールドAの値が1で、フィールドBの値がaであるレコードが ある時、フィールドAの値が1でないレコードの中には、   フィールドBの値がaであるレコードが存在しない場合   (2)フィールドAの値が異なるがフィールドBの値が同じこともある場合 例えば、フィールドAの値が1で、フィールドBの値がaであるレコードが あっても、フィールドAの値が1でないレコードの中にも、   フィールドBの値がaであるレコードが存在する場合 【回答例】(ただし、1,a,bなどの具体的な値は使わないこと) ・フィールドAの値が1のレコードを表示する例 SELECT * FROM TABLE1 WHERE フィールドA=1; ・フィールドAの値が1でフィールドBの値がaのレコードを表示する例 SELECT * FROM TABLE1 WHERE フィールドA=1 AND フィールドB='a'; ・フィールドAの値が1でフィールドBの値がaのレコードと  フィールドAの値が1でフィールドBの値がbのレコードを表示する例 SELECT * FROM TABLE1 WHERE (フィールドA=1 AND フィールドB='a') OR (フィールドA=1 AND フィールドB='b'); この目的は、データベースに問題があり、 問題となっているレコードを見つけて直したいのです。 よろしくお願いします。

  • Access イベント制御

    Access2000+BVのフォームです。 プログラムの中でイベント発生を制御できませんか? 今困っているのは、フォームを開いている時にいろいろな処理をさせてます(処理A)。 その中にフィールドのSetFocusがあります。 すると、「レコード移動時」(処理B)と「フォーカス取得時」(処理C) のイベントが発生してそちらにとんでいきます。 ブレークポイントを置いて調べたら、処理Aの途中で処理Bに行ったり、処理Cに行ったり。 戻ってきたら処理Aの続きをしてくれるといいのですが、特にデータ量が多い時には、処理Aを頭からもう一度はじめたりします。 そしたら、また処理Bと処理Cに行ったりしてしまいます。 処理BとCに「旗」を置いて処理Aの途中だったら、なにもせず戻るようにしてますが、行き来しているうちに「旗」自体も白旗を上げてしまいます。 そこでプログラムのなかで、「 OnCurrent_Event = false 」「OnEnter_Event = true 」なんて感じでイベントが発生してもその処理に行かなくする方法はないですか? 意味が通じたでしょうか?よろしくお願いします。

  • Access97のクエリーについて

    Access97のクエリーで次のようなデータ抽出をしたいのですが、設定方法が良く分かりません。 1.約20000レコードのCSVファイルを外部データ   のインポートでTDLを作成。 2.重複クエリーを走行すると、約10000レコードが   重複していた。 3.作成したTBLから重複者がいないデータを抽出した   い。 イメージ: 処理前  a,2222,111,1,1234567  a,1111,100,1,0001234  b,0001,234,1,5555511  c,0003,001,1,0005555  c,0005,201,1,3345678  ↓(クエリー) 処理後  a,1111,100,1,0001234  b,0001,234,1,5555511  c,0003,001,1,0005555 どのような、関数、クエリーを使えば実現できるのでしょ うか。ご教示の程よろしくお願いします。

  • アクセスのカウント(件数)について。

    アクセスでAフィールドとBフィールドがあり、AフィールドとBフィールドの両方に入力があるレコードと、AフィールドとBフィールドのどちらかに入力があるレコードの合計レコード数を求めたいのですが、どのようにしたらよいのでしょうか?(つまりAフィールドとBフィールドの両方に入力がないレコード以外をカウントしたいのです。)よろしくお願いいたします。

  • アクセスまたは他のオフィスソフトで

    氏名 日付 数量 A 4/01 23 A 4/02 36 A 4/06 10 B 4/03 1 B 4/16 1 C 5/05 6 C 5/10 10 C 5/20 10 C 5/31 3 このようなデータが150万レコードあります。 数量の右側にその行までの累計値「Aの累計」「Bの累計」の列を加えたいのですが どのようにしたらよろしいでしょうか。 レコード数が多くエクセルで処理できないので、アクセスになると思いますが 可能でしょうか。

  • [access]フィールドの中の特定の文字の数を出したい。

    アクセス(Ver.2000)のテーブルの、一つのフィールド内に 色々な文字が並んでおります。 その中の特定の文字の数を数えたいのですが、クエリで数を出す方法は? 例えば 一行目のフィールドに『abc』 二行目のフィールドに『bcc』 という二つのレコードがあったとします。 上記をクエリで、 『a』→ 1 『b』→ 2 『c』→ 3 というように各文字の数を出したいのですが、 どのような方法で出せるでしょうか? 分かる方ご教授よろしくお願いします。

  • Accessでの抽出について

    Accessで下記のようなテーブルがあるとします。 フィールド1  フィールド2  フィールド3 ----------------------- Aさん      20       200 Aさん      10       180 Bさん      10       300 Cさん      10       250 Cさん      30       310 条件1・・・フィールド2が「20」 条件2・・・フィールド3が「200」 この条件が当てはまる、フィールド1のデータはすべて抽出というふうにしたいのですが・・・。 (上記のテーブルでは、1件目と2件目のレコードがあてはまります。) どのようにして抽出したらよいでしょうか?よろしくお願いします。 Access2000を使用します。

  • Accessフォーム/レポートのテキストボックスの表示について

    Access2000で クロスクエリーを元にしたフォームで、フィールドが存在しない場合でも エラーにせずに空白を表示したいのですが、うまくいきません。 なるべくなら複雑なVBAは使わずに作りたいのですが よい方法がありましたら教えてください。 例えば下のようなデータになるクロスクエリーがあります。 (a,b,cは一つのフィールドです)     a b c ----------- 北海道 1 1 0 東北  2 0 1 関東  0 1 1 ・ ・ それを条件をつけて北海道のみにした場合、次のようになります。     a b  北海道 1 1 フォーム上では、全てのとき(a,b,c全てある)と1つを選択したとき(cがない)でも ないフィールドは0として表示したいのです。 わかりにくい説明かもしれませんが、よろしくお願いします。

専門家に質問してみよう