• 締切済み

Accessでデータ追加のクエリについて

「コードNO」(13桁数値)「開始日付」(yyyymmdd形式の数値)「変更日付」(yyyymmdd形式の数値)「終了日付」(yyyymmdd形式の数値)の4つのデータから成るCSVファイルがありまして、そこに毎月同形式の追加のファイルが発生するのです。開始日付はそれぞれで、変更日付・終了日付は初期値が「99991231」です。新規のコードNoについては追加して、重複するものは上書きしていきたいのです。 私はAccess2000を使ってやってみました。テーブルデータにして追加クエリで追加した後、選択クエリでグループ化を使い、「コードNo」をグループ化、「開始日付」はずっと変わらないので取りあえず「最小」、終了は1度しか変わらないのでやはり「最小」、問題は「変更日付」です。度々変わって行くので初期値を除く最大、又は上位2番目の数値というようにしたいのです。そんな設定の仕方が可能でしょうか? まったく別のやり方でも、Accessでなくても(EXCELなら97)良いのでアドバイスをお待ちしてます。

みんなの回答

  • selenity
  • ベストアンサー率41% (324/772)
回答No.1

1.CSVからAcc2kの作業用テーブルへインポート 2.更新クエリーで既存データをアップデート 3.追加クエリーで新規データを追加 という手順で出来るのではないでしょうか? このとき、手順2)では既存のテーブルと一致する 「コードNO」を持つレコードだけを対象にします。 手順3)ではテーブル同士の結合方向を変更する ことにより差分データのみを取得できます。

lemonbalm
質問者

お礼

結局、2の更新クエリー処理の後、不一致クエリーで差分データを抽出し、それを追加クエリーで既存テーブルに追加しました。できればテーブル同士の結合方向を変更することで差分データのみを取得したいんですが、やってみると差分だけでなく全部取得してしまうんです。ともあれ、仕事上は取り合えず解決しました。ありがとうございました。

lemonbalm
質問者

補足

さっそくのアドバイスありがとうございます。さっそくやってみました。2.「更新クエリーで既存データをアップデート」までできてたんですが、3.「追加クエリーで新規データを追加」で「因数が不足です」とエラーメッセージが出るようになり、その後は何をやってもこのメッセージが出てしまいます。テーブルのコピーでもリレーションを保存するにもこれが出て・・・、はまってしまいました。これは別の質問にすべきでしょうか?

関連するQ&A

  • アクセスのクエリについて教えてください

    契約日付が数値になっているテーブルを更新クエリで日付形式にし、契約期間が1年未満のデータは削除したいと思っています。 例) (1)20110401 → 2011/04/01 Left(元データ,4)&"/"&Mid(元データ,2)&"/"&Right(元データ,2) という式で更新クエリを作り、契約開始日、終了日とも日付形式にしました。 (2)契約期間1年以上のデータを特定する 契約開始日<="2011/03/31"で契約終了日>="2012/03/31" というテーブル作成クエリを作りました。 しかし、契約終了日がブランクのデータがあり、そのデータも(2)に含めたいと思っています。 ただのブランクであれば、契約終了日の条件式にor Null でいいのかなと思ったのですが、 (1)で更新クエリを実行しているため、ブランクではなく「//」が入っています。 どのような式にすれば、「//」データも含むことができますか? アクセスに詳しくなく、わかりにくい説明で申し訳ありませんが、助けてください。

  • アクセスの追加クエリで教えてください。

    非連結のフォームから、追加クエリを使ってテーブルにデータを追加したいのですが、 どうもうまくいきません。 具体的には、 履歴フォーム、というフォームで、 日付 施設名 内容 という項目があります。 追加クエリで、 [Forms]![履歴フォーム]![日付] のようにほかの項目も入力し、 その保存先は、 履歴テーブル、で、 項目は、履歴フォームと同じです。 履歴フォームにデータがまったく入っていない状態ですと、 追加クエリを実行した際、 0件のデータを追加します。となります。 自分でテーブルに直接データを何か入力すると、 次に追加クエリを実行した際、 1件のデータを追加します。となります。 続いて追加クエリ実行の際には2件、 その次は4件追加と、 テーブルに入っているデータの件数だけ、 そのときにフォームに入力されている情報が、追加されてしまいます。 どのような原因が考えられますでしょうか? お知恵を貸していただけたらと思います。 情報が不十分でしたらご指摘願います。 補足いたしますので。 それでは、よろしくお願いいたします。

  • Access クエリのデータ型について

    AccessでPablic変数を日付範囲指定、クエリの抽出条件に指定したのですが、「抽出条件でデータ型が一致しません。」とのエラーメッセージで抽出出来ません。 【処理フロー】 1.フォームで、開始日と終了日をPublic変数へ格納 2.データ抽出クエリの日付条件に"GetData()"Public Functin VBAで変数を格納した値をクエリの抽出条件に返す。 《変数》 '開始日の宣言 Public sDate As Date '終了日の宣言 Public eDate As Date 《GetData()》 Public Function GetDate() MsgBox "開始日は、" & sDate & vbCrLf & "終了日は、" & eDate GetDate = ">=#" & sDate & "# And <=#" & eDate & "#" MsgBox ("Where文は、" & GetDate) End Function デバッグの為、"GetDate()"の戻り値を、メッセージボックスで表示してますが、戻り値は正常とおもわれますが、「抽出条件でデータ型が一致しません。」でクエリが実行できません。 ここを参考に、上記仕様にしました。 http://www.tsware.jp/tips/tips_369.htm どうすれば、日付範囲をPablic変数から指定出来るか、お教え頂けましたら幸いです。 ちなみに、Pablic変数にしているのは、他のクエリでもこの日付範囲を使いたい為です。 もし、ほかに良い処理方法が有れば、ご教授ください。

  • Access2000の追加クエリについて教えてください

    元Excelのデータをインポートして、Accessのテーブルデータに追加クエリで追加するとき、型変換エラーとなります。 このときテーブルのデザインで一つずつ数値型とテキスト型をあわせています。ただフィールド数が多いとかなり不便です。 何かよい方法はありますか?

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

    1.以下の二つのテーブルを作成しました。 ・テーブル1  case_no:数値型  ap_no:テキスト型  ap_date:日付型  kanriID:数値型 ・テーブル2  kanriID:数値型  F_name:テキスト型 2.上記した二つのテーブルの「KanriID」をリレーションシップして、 さらに、下記の項目をピックアップした選択クエリを作成しました。  case_no ap_no ap_date kanriID(テーブル1)  F_name 3.上記のクエリを基に、ウィザードを利用して単票フォームを作成したのですが、データの更新ができないフォームが出来上がってしまいました。  どうしたら、データの更新ができるようになるのでしょうか?

  • アクセス2000でクエリにデータ追加ができる表示がでません

    アクセス2000で、氏名と性別コード(1or2)のあるテーブルを作りました。 性別を漢字で表示したいので、1=男、2=女というべつのテーブルを作って リレーションシップを設定しようとして、氏名と性別コードのあるテーブルを もとにクエリを作成して、1=男、2=女というテーブルを表示したところ、 クエリにデータ追加ができる表示がでなくなりました。 また、そのクエリをもとに、フォームを作ったら、性別コードの部分が「この データは更新できません」というようなメッセージが出て、データの修正も、 できません。 どうしてでしょう? どうしたら、解決するでしょうか?

  • アクセス2000です。クエリについて教えて下さい!!

    アクセス初心者です。クエリについて教えて下さい!! 注文書を作成できるものを作りたいのですが、 テーブルで M商品 ・グループコード(テキスト型) 主キー ・品番(数値型) 主キー ・サイズ(テキスト型) 主キー ・品名(テキスト型) ・単位コード(数値型) ・現在庫数(テキスト型) ・下限在庫数(テキスト型) T注文 ・伝票No.(テキスト型) 主キー ・日付(日付/時刻型) ・注文状況(数値型) ・希望納期(日付/時刻型) ・仕入先コード(テキスト型) ・納入場所コード(数値型) ・担当者コード(テキスト型) ・備考(メモ型) WT明細 ・伝票No.(テキスト型) 主キー ・行番号(数値型) 主キー ・グループコード(テキスト型) ・品番(数値型) ・サイズ(テキスト型) ・数量(テキスト型) ・単位(テキスト型) ・備考(テキスト型) T単位 ・単位コード(数値型) 主キー ・単位(テキスト型) があって クエリで WT明細とM商品とT単位を結合して ・伝票No. ・行番号 ・グループコード ・品番 ・サイズ ・品名 ・数量 ・単位コード ・単位 ・備考 としているのですが、フォームで入力する時に グループ、品番、サイズに値を入力したときはちゃんと品名がでるのですが、サイズに何も記入しないときは空白になるんです。 説明すると M商品 グループコード 品番 サイズ 品名 15 、3、 25.5bl、 靴黒25.5 の時は「靴黒25.5」が品名にでてくるのですが グループコード 品番 サイズ 品名 99、 999、(サイズ空白)、 その他 の時に「その他」が品名にでてきません。 どうしたらいいですか? ちなみに「その他」と出てきても名前を変更する場合がありますが そのときにその場では「その他」を「靴エナメル」も変更しても M商品の「その他」は「その他」のままにしておきたいです。 分かりづらい説明ですが、どなたかご教授下さい。

  • Accessのクエリでフィールド名を追加

    Accessでマスタのテーブル1があります。 その中には ID   名前  グループ 1   Aさん   555 2   Bさん   555 3   Cさん   666 4   Dさん   666 IDはオートナンバーで主キーにしています。 ただ単純に上記のテーブル1に下記のようにチェックボックスを追加したいと思っています。 ID   名前  グループ  チェック 1   Aさん   555      □ 2   Bさん   555      □ 3   Cさん   666      □ 4   Dさん   666      □ チェックはYES/NO型 仕様としてテーブル1がマスタなので変更できない事が条件。 本題ですが、上記の状態でグループCさんにチェックを入れ、コンボボックスでグループが666 and チェックが付いているデータのみ表示するように出来ないでしょうか? クエリで簡単に出来ると思ったのですが、チェックを追加するところでつまづいています・・・。 クエリの抽出条件でグループを666にし、グループの絞込みは出来ると思うのですが・・・。 わかりにくいかと思いますが、よろしくお願いします。

  • ACCESSの追加クエリーについて

    お世話になっております。 以下の点について教えてください。 1.対象データー例 月度 商品 単価 2009/07 A 1 2009/07 B 1.5 2009/07 C 2 2.追加クエリーで実行したい内容 上記データを8月度にも使用したいことから、月度を2009/08に変更後 追加クエリーを実行し(2009/07のデータは残したい)、テーブルに追加 したい。 3.お願い 上記No.2の方法を教えてください。 よろしくお願いします。

  • accessで重複を排除してデータ追加したい

    access2000使っています。 EXCELからリンクしたテーブルAのデータをテーブルB追加しています。テーブルBには累計というか履歴のようにデータを蓄積させています。 今は追加クエリでA→Bにデータ入れていますが、どうしても重複するものがあると警告メッセージが出てしまいます。フィールドは、日付*、コード*、金額、で*のものをキーにしています。 警告メッセージを出さず追加する方法、もしくは現在Bにある日付移行のものだけ追加する方法はないでしょうか?