• ベストアンサー

ACCESSで必要なデータの抽出について

いつもお世話になっております。よろしく御願いします。 OS→XP バージョン2002 入金リストを作っております。入金済の所は日付が入り入金の所は無記入です。その状態で入金済だけ抽出し、抽出したものだけでオートナンバーを振るっといったことは出来ますか?   どうのような方法で行ったらよいのか教えてください。

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

  • ベストアンサー
  • hi_max
  • ベストアンサー率61% (8/13)
回答No.7

追加説明です。 Nullとは、「空白」ということで、データの入っていないことです。「Is not Null」と書けば、“空白でない”という意味になります。逆に「Is Null」と書けば、検索条件の部分が“空白”のレコードを抽出できます。 クエリーをデザインモードで作ったら、データシートビューで表示させて内容を確認してみてください。 データシートビューで“Error”というセルが表示されているフィールドがあれば、そこが原因と思われますので、どんなフィールドかまた情報をいただければ、お力になれると思います。

nami2002
質問者

お礼

お返事が遅くなり申し訳ありませんでした!やっと出来るようになりましたが、何度も実行するとデータが重複していくようなので、NO4で教えて頂いた続きをがんばっている最中です。SQLの仕組みが分かっていないので本とにらめっこの状態です・・。どうもありがとうございました

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (6)

  • hi_max
  • ベストアンサー率61% (8/13)
回答No.6

>No4です。 多分、追加先のテーブルのフィールドのデータ型があっていないのではないでしょうか?文字列型と数値型が合っているか、そして、数値型の中には「長整数型」、「整数型」、「倍精度浮動少数点型」などがあります。すでに作成してあるテーブルとの整合性があるかどうか確認してみてください。 後は、NULL値を数値型フィールドに追加しようとしてないかってことかなぁ…

全文を見る
すると、全ての回答が全文表示されます。
  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.5

>レコードでキー違反 追加するテーブルに主キーや重複なしのインデックスの設定をしたフィールドはありますか? あれば設定を無くしてください。 もしくは、追加クエリをいったんテーブル作成クエリに変えて一度クエリを起動しテーブルを作りそのテーブルにオートナンバー型のフィールドを追加するようにして下さい。それが出来たらクエリを元の追加クエリに変更して再度試してみてください。 そうすれば大丈夫のはずですが。

nami2002
質問者

お礼

お礼が遅くなってすみません!(休みが続いたもので・・)原因はやはりインデックスの設定が入っていました。本当にどうもありがとうございました。

全文を見る
すると、全ての回答が全文表示されます。
  • hi_max
  • ベストアンサー率61% (8/13)
回答No.4

ACCESSを利用して、こんな風に処理してみるのは、どうでしょうか? 1.最終的に作成したいテーブルを作成する。デザインモードで必要なフィールドを作成します。一番最初のフィールドは“管理連番”等の名前で、オートナンバー型にします。その後、当初入力してあるテーブルのうち必要なフィールドを作成します。 2.次に、入力してあるテーブルに基づくクエリーを作ります。抽出したいフィールド(1で作成したテーブルのフィールドに対応するもの)をいれて、「入金済み」フィールドの抽出条件に“is not null”と入力します。そのクエリーを追加クエリーにします。追加先のテーブルには、1で作成したテーブルを指定します。各フィールドがきちんと割り当てられているか確認して、保存します。 3.2のクエリーを実行すれば多分ご希望のデータが抽出されたテーブルができます。 追伸;もし、この処理を何度もされるようでしたら、1のテーブルの雛型を作っておきます。たとえば、追加先のテーブル名が「T_入金済み確認」だとしたら、「T_入金済確認TMP」といったものを作ります。 クエリーを走らせる前に「_入金済確認TMP」をコピーして、「T_入金済み確認」を作り(以前にあったものは別名にするか削除)、その後クエリーを実行します。 フォームを作ることができ、ボタンイベントでモジュールを記述できるようでしたら、以下のようにするとよいかもしれません。 Private Sub "ボタン名"_Click() Docmd.Setwarnings False Docmd.CopyObject "新しく作るテーブル名" , acTable , "コピー元テーブル名" Docmd.OpenQuery "クエリー名" Docmd.Setwarnings True End Sub

nami2002
質問者

補足

教えて頂いた半分までは・・出来たと思ってますが続きでつまってしまいました。 「追加クエリですべてのレコードを追加できません。 型変換エラーのため0個のフィールドをNullに設定しました。また、5件(今試して5件だけ入力してます)のレコードでキー違反、0個のレコードでロック違反、0件のレコードで入力規則違反が発生しているため、レコードを追加できませんでした。」 との内容です。初めてAccess使って作るのでNull等の言葉で本を見たり検索もしたのですが・・何を指しているのか分かりません。もしよろしければ、続けて教えてください。

全文を見る
すると、全ての回答が全文表示されます。
  • O_cyan
  • ベストアンサー率59% (745/1260)
回答No.3

入金リストのクエリを作り日付のフィールドの抽出条件に Is Not Null で日付が入っているレコードだけ抽出できます。 入金リストと同じテーブルを一つ作っておいてオートナンバー型のフィールドを追加して作ります。そのテーブルに前記のクエリを追加クエリに変えこのテーブル名を指定します。クエリを実行すればテーブルに入金済みの日付が入ったレコードだけ追加されオートナンバーが振られます。

nami2002
質問者

補足

入金済の日付だけの抽出はできるようになりました。 追加クエリを行った後、追加しますか?の表示後エラーがでてしましました・・。続けでですがよろしければ おしえてください。 エラーメッセージ 「追加クエリですべてのレコードを追加できません。 型変換エラーのため0個のフィールドをNullに設定しました。また、5件(今試して5件だけ入力してます)のレコードでキー違反、0個のレコードでロック違反、0件のレコードで入力規則違反が発生しているため、レコードを追加できませんでした。」 との内容です。 もともとIdをふったテーブルを使っていました。消して作り直してもみましたがうまくいきませんでした。

全文を見る
すると、全ての回答が全文表示されます。
  • gadd3
  • ベストアンサー率46% (211/451)
回答No.2

ご質問の具体的な意味がよくわからないので申し訳ないのですが、抽出したものを別のテーブルに書き込んでも良いという状況なのでしたら、以下のようにしてみてはいかがでしょうか? (1)まず日付が存在する(入金済み)レコードを抽出する選択クエリを作る。 (2)それをもとに、オートナンバーフィールドを持つテーブルにレコード追加する、追加クエリを作る。

nami2002
質問者

お礼

ありがとうございます!! 多分・・教えて頂いた所までは進んだようです。

全文を見る
すると、全ての回答が全文表示されます。
  • r-bridge
  • ベストアンサー率35% (6/17)
回答No.1

エクセルに貼り付けて、空白セル表示でコピー&ペースト をしてナンバーをふるっていかがでしょう? 手間ですかね?

nami2002
質問者

補足

すばやいご回答ありがとうございます。 入金に締め切りがありません。またこの後、入金があった所のデータを使って(すでにACCESSでデータを作ってあります。)書類を作る作業をしますので、出来ればACCESSで出来ないかと思ったのですが・・・。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 今日の日付のデータをすばやく抽出するには・・

    売上日報をエクセルで作っています。 A列に1から順にNOを入れています(LOOKUP関数を使うためです) B列に日付を入れています。 C列に社名を入れています。 その他の列にもいろんなデータが入っています。 本日の日付だけをすばやく抽出したいと思うのですが、どうすれいいか分かりません。 オートフィルタで今日の日付を選ぶ方法はやれます。 でも、もっと早く抽出できる方法はないでしょうか? 数ヶ月分のデータが入っているため、オートフィルタの三角をおしたあと、今日の日付を探すのに結構手間取ります。 もっとすばやく抽出したいのです。どんな方法でもいいです。どなたか教えて下さい。

  • アクセスでの抽出方法(日付+時刻)

    こんにちは いつもお世話になってますm(_ _)m アクセスでの抽出方法に悩んでます。 毎日、上司への報告で前日の17:00までに受付た情報を抽出してます。 条件は「<=Date()」です。 この条件だと前日の17:30以降のデータも引っ張ってきてしまいます。 思い切って「<=#2005/07/05 17:30#」のように日付を指定してしまう 方法もあるのですが・・・ 毎日やることなのでできれば関数で抽出できますでしょうか?

  • シート間のデータのやりとり

    当方はエクセル2003 OSはXPです。 シート「記入」とシート「入金記入」の2つのシートがあります。 シート「記入」には  A1 月度 B1 日付 C1 ID・・・・・顧客番号管理です D1 売上金額 I1 入金確認  シート「入金記入」には A1 月度 B1 日付 C1 ID・・・・・顧客番号管理です D1 入金金額 というシートの内容です。 ※この場合のご相談ですが 例えば シート「記入」I1のリストから「入金済」を選択したときに シート「入金記入」の B1 日付    「入金済」を選択したを自動的に日付が記入される C1 ID     はシート「記入」の番号をそのまま D1 入金金額  はシート「記入」の売上金額をそのまま もしこのことが可能ならご指導いただけるとありがたいのですが。 現在はシート「入金記入」手動で入力しています。

  • Excelで合致するデータの抽出について

    初歩的な質問ですが どうしてもうまく抽出できないので教えて下さい。 Excelでシート1のリストの項目は5列で 社員No.社員名・性別・住所・Telが入力されている 全社員データが200件あります。 またシート2のリスト項目は6列あり 社員No.社員名・支店名・性別・住所・Telが入力されており、 支店名にはすべて東京と入力されているリストが50件ほどあります。 シート2の社員データ50件を、 シート1の全社員リストから 抽出する方法を教えていただけないでしょうか。 抽出場所はどこでもかまいません。 申し訳ありませんが、よろしくお願いします。

  • オートナンバー型を抽出条件にするとき

    いつもお世話になります。 VB.NET2003+Access2000環境です。 あるテーブルにはオートナンバー型を使って新規発生データの管理番号を振っていますが、別のテーブルでその番号を見て手入力しているフィールドがあります。 SQLの抽出条件でこのオートナンバーと手入力したデータと一致したデータを抽出しようとやっているのですがうまくいきません。 オートナンバーのデータを参照して入力するほうのフィールドを数値型にしてもテキストにしてもいずれも「型が一致しない」というエラーが起こります。 こういう場合はどういう風な処理をするのが一般的なのでしょうか? よろしくお願いいたします。

  • エクセルでのデータ抽出について

    いつもお世話になっております。 以下の操作についてご教示をお願いいたします。 使用しているエクセルは2007です。 Sheet1 A列:2010年~の日付(昇順に記載し、発生日はランダム)が記載され、 B列以降は日付に対応したデータが記載された表が有ります。 Sheet2に同じ表の形式で2013年以降のデータを抽出したいのですが。 どのような方法がありますでしょうか? INDIRECT関数なんかを使って試行錯誤したのですが・・・わかりません。 どなたかご教示をお願いいたします。

  • アクセスのデータ画面のソートについて

    いつもお世話になっています。 アクセスのデータ画面、エクセルに何となく似ているのですが、 エクセルのように「A列で降順」のような並び替え、 または「オートフィルタ」のような抽出はできるのでしょうか? エクセルにエクスポートするには、データが多すぎてまた頻繁にデータが追加されるので都度エクスポートするのには時間がかかりすぎてしまいます。 また、クエリで上記のようなソートや抽出ができるのなら、 その方法を教えていただけますか? よろしくお願いします。

  • Excel 日付・時刻データの抽出

    こんにちは。 Excelの表の一列に、「2005/12/8 14:45:00」のように、日付と時刻が表示されています。時刻は、0:00:00、0:15:00のように、15分単位です。データは、100~300件ほどあります。 この表から、時刻が「0:00:00」のみを抽出したいのですけれど、文字列でないためか、オートフィルタやVLOOKUPは上手くいきません。 又、同じ表から、「0:00:00, 1:00:00」のように、1時間単位で、抽出したいのです。 何か、よい方法があれば、教えて下さい。 宜しくお願いします。

  • 二つのデーターをつき合わせて、どちらかに無い値を抽出

    いつもお世話になっています。 シート1とシート2にデーターがそれぞれあり、 重複していないデーターがどれかを抽出したいのですが 方法があれば教えて下さい。 よろしくお願い致します。

  • データ表より抽出・集計について

    いつもお世話になります。先日、質問した内容ですがわからないなどの指摘を頂きましたので反省して再質問いたします。 ・元データ表:概略 WORK2.XLS   A     B     C     D 1 日付    2      不良1  不良2  不良3 3       15     60     25      4       0.15    0.6    0.25     5 12/1    5       25      5 6 12/2    3       15      3 7 12/3    2      15       5 8 12/4    5       5      2 1行:日付名称 2行:不良項目 3行:不良項目合計数 4行:不良項目発生率 5行以下:日付別発生数 を表しています。 ・抽出 上記表よりワースト不良発生率を抽出 不良2   0.6%  → LARGE・INDEX関数により:完了 ・日付別の発生数を表にしたい     A       B 1  12/1      25 2  12/2      15  3  12/3      15 4  12/4      5 B1=SUMIF('WORK2.xls]sheet1'!$A:$A,A1,'[WORK2.xls]sheet1'!$C:$C) 下へオートフィルで完成しますが、式の$C:$C(不良項目)は抽出した不良項目により変わるので上の式で固定はできません。(そのたびに変えるのは避けたい) 抽出した不良項目に対応出来るようにするにはどうすればよいのでしょうか? 教えてください。 

このQ&Aのポイント
  • LAVIE NS150/Kの起動後、パスワードを入力する前の背景画面を消す方法について教えてください。
  • LAVIE NS150/Kの背景画面の変更方法を教えてください。パスワードを入力後の画面は変更できることはわかっています。
  • LAVIE NS150/Kの起動時に表示されるパスワード入力前の背景画面を非表示にする方法を教えてください。
回答を見る

専門家に質問してみよう