Accessでの計算方法と挫折からの救い

このQ&Aのポイント
  • Access2002での計算方法について質問です。クエリに式のフィールドを追加する際、前のレコードの値を引き算する方法を教えてください。
  • レコードの番号、日付、入金額から経過日数を求める例を挙げました。Aは0日、Bは10日、Cは4日、Dは5日となります。
  • Accessは難しいと感じて挫折しかけている状況です。助けをいただけると幸いです。
回答を見る
  • ベストアンサー

Accessでの計算

Access2002の質問です。 クエリに式のフィールドを追加して、そこで計算をさす場合、一つ前のレコードの値から引き算をするには、どうしたらいいのでしょう。 例えば次のような前回の入金日から今回の入金日までに要した 日数を求める場合です。 レコードの番号 フィールド フィールド フィールド(式)    ↓      ↓    ↓     ↓                    日付   入金額   経過日数    1  2002/03/01   1000     A    2  2002/03/11   2000     B    3  2002/03/15   1500     C    4  2002/03/20   3000     D A.B.C.Dを求めたいのです。    Aは当然0日です    Bはレコード番号1からレコード番号2に要した日数です(10日)    Cはレコード番号2からレコード番号3に要した日数です(4日)    Dはレコード番号3からレコード番号4に要した日数です(5日) Accessに挑戦して孤軍奮闘しています。 でも難しくわからない点が多くて挫折しかけています。 どうかお助けください。

  • siba10
  • お礼率66% (800/1201)

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

  • ベストアンサー
回答No.1

元のテーブルがフィールド名として、レコード番号、日付、入金額を持ち、テーブル名はtbl1として、以下で良いと思います。 SELECT T.レコード番号, Max(T.日付) AS 日付, Max(T.入金額) AS 入金額, Max(T.日付-S.日付) AS 経過日数 FROM tbl1 AS T, tbl1 AS S WHERE (((T.レコード番号-1)=S.レコード番号)) or ((T.レコード番号=S.レコード番号)) GROUP BY T.レコード番号;

siba10
質問者

お礼

ご回答のお礼が大変遅くなり申しわけありません。 ご指示の通り記述すると出来ましたが、今の私の知識では理解できないので一生懸命勉強します。

関連するQ&A

  • Microsoft Access2003での印刷

    使用するAccess ( 2003 ) 下記のようなCSVがあります。        Field_A ,Field_B ,Field_C ,Field_D 1レコード目: A    ,B    ,     , 2レコード目: A    ,     ,C    , 3レコード目: A    ,     ,C    , 4レコード目: A    ,     ,     ,D 5レコード目: A    ,     ,     ,D 6レコード目: A    ,     ,     ,D 7レコード目: A    ,     ,     ,D Field_A は必ず埋まっていて、Field_Bは最初の1レコード目だけ。 Field_CとField_Dはレコードは可変で、Cが終了したらDになります。 この構成は他所から貰ってるだけなので、こちらでは変更したりできません。 この状態でMicrosoft Access を用いて下記のような印刷フォームを作成することは、可能でしょうか? Access 自体は使用した事はありますが、複雑なフォームを作成した事はありません。 色々事例を調べてセクションという機能がある事は分かりました。 ------------------------------------- | | A | | B | | C | C | 行が続くかぎり | |  D | D | 行が続くかぎり | | | | 締めの文言 -------------------------------------  改頁したらAは必ず出力して続きから ------------------------------------- | | A | | D | 行が続くかぎり | | | | 締めの文言 ------------------------------------- 質問したい事 1、Accessで、このような事は可能でしょうか? 2、可能な場合、セクションを上手く活用するのでしょうか、   それとも、何か異なる機能を使用するのでしょうか   比較的簡単に実現できる方を教えて頂きたいです。 3、Accessでは難しい場合、なにか印刷できるようなソフトをご存知でしょうか?   excelやwordの差込印刷では、無理かと思いました。

  • ACCESS フィールドをまとめたい

    ACCESS2007で同じレコードにある複数のフィールドを   レコード1:番号A  名前A  番号B  名前C  番号C  名前C   レコード2:番号A  名前A  番号B  名前C  番号C  名前C こんな感じに、新規のテーブルやクエリーで「番号」と「名前」にまとめたいのですが      レコード1:番号A 名前A   レコード2:番号B 名前B   レコード3:番号C 名前C   レコード4:番号A 名前A   レコード5:番号B 名前B   レコード6:番号C 名前C    お手数ですがご教示ください。  よろしくお願いいたします。

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

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

  • アクセスのフォームでのレコード移動ができません。

    アクセスのフォームでのレコード移動ができません。A(管理番号)B(会社ID)C(部品ID)D(担当者ID)のフィールドがあるのですが、A~Dの全てに入力した場合はレコード移動ができます。でもCとDを空欄にしたままでは移動できません。リレーションシップをCとDともはずしても変わりませんでした。どこがおかしいのか良きアドバイスをよろしくお願いいたします。

  • ACCESS 以下のように変更するSQL式を教えて

    Microsoft Accessで以下のように変更するSQL式を教えてください。 (Windows10 , Access2016) 以下のようにテーブル(TABLE1)には、 A,B,Cの3つのフィールドがあり Aには番号が入っています。重複した番号もあります。 Bには0~9までのいずれか1つの数字が入っています。 Cにはa,b,cのいずれか1つの文字が入っています。 Aの各値に対してBの値が0のレコードは1個だけです。 (例)TABLE1   A  B  C   1  0  a   1  9  b   1  2  c   2  1  b   2  3  a   2  0  c   2  7  c   3  1  a   3  0  b    :   :   :  999  0  a    :   :   : このようなテーブル(TABLE1)に対して、 Aの各値毎に、 Bの値が0以外のレコードのCの値を Bの値が0のレコードのCの値に変更する SQL式 (ACCESSのクエリデザインのSQLレビューのSELECT;の所に入力する UPDATE TABLE1 SET C=…;のような式) を教えてください。 (例) 変更後のTABLE1   A  B  C   1  0  a   1  9  a   1  2  a   2  1  c   2  3  c   2  0  c   2  7  c   3  1  b   3  0  b    :   :   :  999  0  a    :   :   :

  • Accessで2つのテーブルのデータの整合性を確認したい

    Accessで2つのテーブルのデータの整合性を確認したいのですが、よい方法を教えていただけませんか? 状況は以下のとおりです。 Aテーブル    a   b    c   d   e       1  111  222  333  444  555 2  666   777 888 999 100 3   110 112 113 114 115 Bテーブル    a   b    c   d   e       1  111 222 333 444 555 2  666 777 000 999 100 3   110 112 300 400 500 ・AテーブルとBテーブルがあり、それぞれのテーブルのa、b、dフィールドのみを対象に、その値がAテーブルとBテーブルとで等しいかどうか調べたい。 (c、eフィールドの値が異なっていても、a、b、dフィールドの値が同じであればそのレコードはOKとし、a、b、dフィールドで1つでも異なる値があればNGとし、抽出したい。 例えば、Bテーブルの1、2レコードはOKだが、3レコードはNG) ・それぞれのテーブルのaフィールドが主キーになっている。 うまく説明できず、わかりにくいかもしれませんが、よろしくお願いします。

  • Access2002について

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

  • Accessで経過日数を求める関数を教えていただけないでしょうか。

    アクセスで経過日数を求めたいのですが、次のような場合はどのような式を組めばよいのでしょうか? フィールド: 請求日 支払日 支払確認日 新たに設ける関数式フィールド:経過日数 請求日から20日過ぎて、なおかつ支払確定日が空白のレコードを「経過日数」フィールドに経過日数の数値で返したい。 どなたかおわかりになる方がいらっしゃいましたら、教えていただけないでしょうか。 よろしくお願いいたします。

  • アクセスで同一番号は1件と数える

    アクセスを使って、入金データを作ってます。 フィールド → 入金日(半年分)、金額、伝票番号 月別の 金額と件数を纏めたいのですが、伝票番号フィールドに 同じ番号があった場合、それを一件と数えたいのです どのような式を組めばいいのか、教えていただきたく アクセス初心者です よろしくお願いします。

  • アクセスの更新クエリの質問です。

    ちなみにAccess2007を使用しています。 A,B,C,Dというフィールドが有り、AフィールドにはCodeが入っています。 Bフィールドには"bb"という言葉、Cフィールドには"cc"という言葉にそれぞれ書き換え、Aフィールドには、今から更新する1レコードを抽出するため、更新クエリ実行時に、パラメーターを入力するように設定しました。 しかし、更新するレコードは、全45000件中、6000件くらいあり、いちいちコードを入れるのが大変です。 もともと、書き換えるためのコードリストがエクセルデータとして有り、Accessにインポートすれば、コードリストをAccessのテーブルにする事も出来ます。このテーブルを使って簡単に、書き換えることは出来ないものなのでしょうか?

専門家に質問してみよう