• ベストアンサー

ACCESSでの抽出

工事の進捗を管理するにあたってのことでの質問でございます。 まず工事受注(契約)をします。すると、契約時の着工と完工日というのが契約書に書かれます。よって、当初はこの契約書をもとに最終代金の回収日を把握致します。しかし、工事額が大きい現場に関しては、契約後に着工予定日、完工予定日(契約工期)が変更になるケースが度々ございます。よって、社内では、施主様と『着工面談』(着工前最終打合せ)を行った際に施主様と締結する『着工議事録』に記載された工期を最終的な工期として予定を把握することに致しております。 そこで、アクセスで下記のようなテーブルを2つ作りました。 (1)TB_受注    (2)TB_正式工程  ・受注NO     ・正式工程NO  ・契約日      ・受注NO  ・施主名      ・着工日  ・工事場所     ・完工日  ・受注金額  ・着工予定日  ・完工予定日 受注時点では、TB_受注の工程を採用しますが、工程が確定するとTB_正式工程の工期を採用するので、下記のようなクエリーをつくりました。(部分省略します)    着工予定日 完工予定日 着工日     完工日  TB_受注 TB_受注 TB_正式工程 TB_正式工程  着工採用     完工採用  追加フィールド(1) 追加フィールド(2)  追加フィールド(1)には、  IIF(ISNULL([着工日]),[着工予定日],[着工日]) 追加フィールド(2)には、  IIF(ISNULL([完工日]),[完工予定日],[完工日]) とし、クエリーを実行すると「着工採用」「完工採用」には自分が思い描くとおりの日付が表示してくれました。  これをフォーム上でこんなことをしたいのです。  上のクエリーをフォームの表で一覧にすることは可能でした。  そのフォームから、○月の引渡、もしくは○月の着工だけを抽出して一覧にすることがいまいち上手くいかないのです。  フォーム名を「工程管理」とし、・「着工自」・「着工至」・「引渡自」・「引渡至」というテキストボックスを用意し、そこに入力された日付の範囲をフォーム上で抽出したいのです。  クエリーのフィールどに、抽出(1)と追加して、フォームの「着工自」から「着工至」の間の範囲の着工日付の現場を抽出するようにと下記のような式を入力しました。 抽出(1): IIf([forms]![工程管理]![着工自] Is Null, True,[着工採用]>=[forms]![工程管理]![自]) And IIf([forms]![工程管理]![着工至] Is Null, True,[着工採用]<=[forms]![工程管理]![着工至]) この抽出条件を「True」と入れました。 引渡も抽出(2)として同じようにするつもりだったのですが、この(1)の結果が思わしくないので後回しにしてます。 フォームの「着工自」、「着工至」テキストボックスのイベントで、更新後処理をイベントプロシージャーで、ME.REQUERYとして日付が入力されたら更新するようにもしたのです。 それなのに、フォームを開こうとするとパラメーターの入力ダイアログ”着工採用”がポップされ、OKを押してフォームに出てくるデーターは、「着工自」、「着工至」に入力した範囲の工程ではなく全データーが表示されます。自分としては指定した期間の抽出が可能ではないかと思ったのですが、これはいったいどこをどう直したらよいのかアドバイスいただけませんでしょうか。よろしくお願い致します。  

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

  • ベストアンサー
  • CHRONOS_0
  • ベストアンサー率54% (457/838)
回答No.3

>パラメーターの入力ダイアログ”着工採用”がポップされ これは[着工採用]というのはAccessにとっては不明なものだよと聞いてきているのです フィールド名に間違いはありませんか? 前後に余計なスペースが付いていたりしていませんか >抽出(1): IIf([forms]![工程管理]![着工自] Is Null, >True,[着工採用]>=[forms]![工程管理]![自]) >And IIf([forms]![工程管理]![着工至] Is Null, >True,[着工採用]<=[forms]![工程管理]![着工至]) 間違いではありませんが 着工採用フィールドの抽出条件欄に Between Nz([forms]![工程管理]![着工自],#1900/1/1#) and Nz([forms]![工程管理]![着工至],#2900/12/31#) のほうが簡単ですよ > IIF(ISNULL([着工日]),[着工予定日],[着工日]) こっちも(1)TB_受注から(2)TB_正式工程に外部結合させ Nz([着工日]),[着工予定日) とするほうがすっきりしてるかな

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

その他の回答 (2)

  • deecyan
  • ベストアンサー率38% (89/233)
回答No.2

すみません #1のコードがまちがってます 下記に変更してください Private Sub コマンド22_Click() If IsNull(dfr) Then   If IsNull(dto) Then     DoCmd.ShowAllRecords     Exit Sub   Else     apf = "day3 < #" & cdt(dto) & "#"   End If Else   If IsNull(dto) Then     apf = "day3 >= #" & Format(dfr, "YYYY/MM") & "/01#"   Else     apf = "day3 between #" & Format(dfr, "YYYY/MM") & "/01# and #" & cdt(dto) & "#"   End If End If DoCmd.ApplyFilter , apf End Sub Function cdt(dd1 As Date) As String   Dim tdt As Date   tdt = Format(Year(dd1) & "/" & Month(dd1) + 1 & "/01")   cdt = Format(tdt - 1, "yyyy/mm/dd")   MsgBox cdt End Function

全文を見る
すると、全ての回答が全文表示されます。
  • deecyan
  • ベストアンサー率38% (89/233)
回答No.1

フォームを開くときに クエリーは実行されますので パラメーターの入力ダイアログ”着工採用”が出ます  ここに抽出する日をいれろ って聞いてきたのに 何も入れなかったので 全部抽出された。ということです。 さて どうするか  ApplyFilter を使って 抽出されたデータを もう一度抽出すればいいのです >本文中の 上のクエリーをフォームの表で一覧にすることは可能でした。 まではOKですので それ以降 こうしてください 「dfr」・「dto」・というテキストボックスを用意し、(それぞれ 着工自・着工至の意味) プロパティで yyyy/mm とする (○月の着工とゆうのは年がはいってないので 使い物になりません 年月でいれましょう) ボタンを追加します(テキストボックスのイベントで、更新後処理でもいいけど 入れた後フォーカスが移らないと処理されないので また 着工自・着工至 を入れると2回しょりがされるので) ボタンのイベントプロシージャーで If IsNull(dfr) Then   If IsNull(dto) Then     DoCmd.ShowAllRecords     Exit Sub   Else     apf = "day3 <= #" & Format(dto, "YYYY/MM") & "/31#"   End If Else   If IsNull(dto) Then     apf = "day3 >= #" & Format(dfr, "YYYY/MM") & "/01#"   Else     apf = "day3 between #" & Format(dfr, "YYYY/MM") & "/01# and #" & Format(dto, "YYYY/MM") & "/31#"   End If End If    DoCmd.ApplyFilter , apf にする  #day3 は 着工採用に読み替えてください

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

関連するQ&A

  • Access2007初心者です。 データの抽出についてお願いします。

    Access2007初心者です。 データの抽出についてお願いします。 現在、受注フォームを作っています。 受注フォームの中にある作成日を使って月次の集計を行いたいと思っています。 受注フォームの中に期間を設定する枠を作って検索をかけると一定期間のデータを抽出できないでしょうか。また、その抽出されたデータをレポートで印刷することは可能でしょうか? 受注フォームの作成日はテキスト形式です。 よろしくお願いいたします。

  • VBAでサブフォームに自動的にデータを入力したい。

    VBAでサブフォームに自動的にデータを入力したい。 メインフォームに[工期自][工期至]フィールドがあります。 サブフォームに[請求予定日]フィールドがあります。 メインとサブは[管理No.]フィールドで繋がっています。 メインフォームの"請求"テキストをクリックすると、サブフォームが開きます。 そこで[工期至]フォーカス喪失時に、自動で[請求予定日]が入るようにしようと思います。 工期の期間中、毎月月末が請求予定日になります。 [工期自]の入力が無い場合は[工期至]の月の月末のみ請求になります。 下記のようなプロシージャを書いてみましたが、結果、データが全く入りません。 ADO(←まだ全く分かりません)というのを使わないとできないでしょうか? すいませんごちゃごちゃしてますが宜しくお願いします! Private Sub 工期至_Exit(Cancel As Integer) Dim SEIKYU As Date Dim TUKI As Integer Dim SYURYO As Integer DoCmd.OpenForm "サブ", acFormDS, , "管理No.='" & Me!管理No. & "'", acFormEdit If IsNull(Forms!サブ!請求書発行) Then If IsNull(Me.工期自.Value) Then SEIKYU = Me.工期至 TUKI = Month([工期至]) Else SEIKYU = Me.工期自 TUKI = Month([工期自]) End If SYURYO = Month([工期至]) + 1 Do Until TUKI = SYURYO Forms!サブ!管理No. = "[forms]![メイン]![管理No.]" Forms!サブ!請求書発行 = DateSerial(Year(SEIKYU), Month(SEIKYU) + 1, 0) SEIKYU = DateAdd("m", 1, SEIKYU) TUKI = Month(SEIKYU) Loop DoCmd.CLOSE acForm, "サブ" End If End Sub

  • ACCESSの日付入力について

    私は建設会社に勤務していますが、ACCESSのことで困っています。 現在ACCESS2000を使用していますが、どの現場監督がどの工事をしたかをデータベースにしようとしています。その途中、フォームの中のフォームヘッダー欄で現場監督をコンボ入力したら、詳細欄に担当した工事が一覧で表示できるようにはなりましたが、更に日付(工事期間)を入力したら、期間内の工事が出るように設定にしたいのですが、うまくいきません。 現在の設定状況としては、フォームヘッダーのコンボボックス「form監督検索」で指定すると、選択クエリ「qu_監督検索クエリ」からデータがくるようになっていますが、「工期自」と「工期至」を入力すると、その期間内の工事を拾うようにして、もし未入力の場合だったら、全ての工事、「工事自」だけ未入力だったら最初から「工事至」まで、「工事至」だけ未入力の場合は「工事自」から現在までとしたいのです。 複雑な内容で大変申し訳ありませんがよろしくお願いします。

  • accessで空白の時の抽出

    access2000を使っています。まだ初心者なので難しい事はできないのですが、クエリを使って絞り込み検索のフォームを作っています。 テーブル内のデータで空白のデータがあります。その際にクエリの抽出条件にlike iif(is null([forms]![formA]![テキスト100]),"*","*"&[forms]![formA]![テキスト100]&"*")としています。フォームのテキストが空白のときは全て抽出するという条件を満たす予定で設定したのですが、テーブル内のデータが空白の物が抽出できません。データが空白がない様にすればいいのでしょうが、クエリの条件で設定できないものでしょうか?データはテキスト型です。

  • Accessで日付を抽出するパラメータを設定したい

    Accessのクエリで日付に対して与えているパラメータがあります。 パラメータで指定したいデータはフォームのテキストに入力した日の23:59:59 以降の日付を抽出したい。 入力:数値8桁(yyyymmdd)で行う 抽出先テーブルのデータ:yyyy/mm/dd hh:mm:ss 現在以下のパラメータを日付に対して与えると「式が複雑すぎます、、、」と注意されてしまいます。 指定日の23:59:59を抽出範囲として指定するのはどうしたらよいでしょうか? 入力値の変換も含めて、以下のパラメータを入れています。 「+"23:59:59"」をとればエラーは出ません。 <=IIF(Len([Forms]![フォーム名]![日付])=8,CDate(Format([Forms]![フォーム名]![日付],"@@@@/@@/@@")),#9999/1/01#)+"23:59:59" どなたか、お助け下さい。よろしくお願い致します。

  • フォームからクエリの抽出期間を指定するにあたって

    フォームのテキストボックス(開始日付,終了日付)に入力された期間内の レコードをクエリで抽出するために、以下のような抽出条件を設定しています。 Between [Forms]![フォーム1]![from date] And [Forms]![フォーム1]![終了日付] ここまでは問題なく出来ています。 ですが、例えばテキストボックスに何も入力していないときに、 全ての期間から全件表示させるような方法はありませんでしょうか? IIf(IsNull([Forms]![フォーム1]![開始日付]),True,~ というような形で、IIfとIsNullの組み合わせも考えたのですが、 日付は直接フィールドでは無く抽出条件のため、 Trueより後が設定できずに悩んでおります。 出来ればVBAは使いたくないのですが、 何か良い方法はありませんでしょうか?

  • 更新クエリの日付抽出方法について

    Access2003を使用しています。 受注一覧DBを作成しています。 受注入力から請求書発行までを行いたいとおもっています。 テーブル:受注 クエリ:請求書発行検索 フォーム:受注入力,請求書発行検索 テーブル受注には、受注期間(開始日:2006/3/1~終了日:2006/4/30) 請求予定月2006年3月 というフィールドがあります。  請求書発行検索フォームでは、検索テキストボックスに 2006/3 と入力すると対象データがを 抽出するようにしています。 請求書発行は、受注期間中の毎月月末です。 3/1-4/30の契約だと、3/31と4/30の2回発行することになります。現状は月末請求後に 手入力で請求月を入力していますが、更新クエリで自動入力することはできるでしょうか?? 「更新クエリ実行日が受注終了日よりも前ならば、請求予定月に1月足す」 かつ、「請求予定日が今月となっているときはそのままにする」 といったイメージです。。 いろいろと調べたのですが、書き方がわからなかったのです。 どうぞよろしくお願いいたします。

  • Accessの日付で不思議なことが

    Access2003で見積書を作るシステムを作りました。日々、見積書発行し月末に各物件の見積一覧表を作ります。個々の見積データにある、見積日付を範囲指定して、データを抽出します。 その方法としてフォーム上に二つのテキストボックスを配置し、それぞれに「自見積日付」、「至見積日付」という名前をつけ、一覧表印刷クエリーの中の見積日付の抽出条件にBetweenで「自見積日付」~「至見積日付」ををいれ抽出します。これをレポートで見積一覧表を印刷します。この方法で日付が2006年12月31日までは問題なく出来ましたが、日付が2007年1月1日以降になると抽出できなくなってしまいました。 もちろん2007年1月1日以降のデータは存在します。 原因がまったく分りません。どなたか分る方はいませんか。よろしくお願いします。(質問の書き方が苦手で分りにくくて申し訳ありません)

  • Accessのリストボックスを使って抽出

    抽出用のフォームを作成しているのですが、その中にリストボックスがあり、何も選択しなかった場合は、すべての項目が表示される様にしたいと思っております。自分なりに色々と調べたのですが、どうしても希望の動作になりません。どの様にすれば良いのか教えて頂けないでしょうか? Access2003を使用しております。 Form-A(メインフォーム名)←テーブルAを元に作成(項目名同じ) 番号(主キー)、氏名、性別、A1、A2・・・ A1、A2は、する・しないのどちらかを入力。 Form-B(サブフォーム名)←テーブルBを元に作成(項目名同じ) ID(主キー)、番号、担当、訪問日、次回訪問日、期間 担当は、値集合タイプ:テーブル/クエリ、値集合ソース:テーブルあ(フィールドは担当のみ)5名程の名前を登録しし、リストボックスにて選択できる様にしています。 現在、下記の様な抽出用のフォームがあります。 Form-抽出(抽出用フォーム名) A1(チェックボックス) A2(チェックボックス) 担当(リストボックス:値集合タイプ:テーブル/クエリ、値集合ソース:テーブルあを設定) [OK]ボタンを押すと抽出(クエリQにて条件を設定)する様にしています。 クエリQ(テーブルA、テーブルBを元に作成) 番号(主キー)、氏名、性別、A1、A2、ID(主キー)、番号、担当、訪問日、次回訪問日、期間 現在設定しているのは、 A1の抽出条件:IIf([forms]![Form-抽出]![A1]=True,True,False) A2の抽出条件:IIf([forms]![Form-抽出]![A2]=True,True,False) 担当の抽出条件:[Forms]![Form-抽出]![担当リストボックス] 訪問日の抽出条件(複数情報がある為、最近の訪問日のデータのみ対象となる様にしています。):DMax("訪問日","テーブルB","[テーブルB]![番号] ='" & [テーブルB]![番号] & "' And 訪問日 <Date()") 今の設定ですと、担当を選択しなかった場合、何も抽出されてきません。 これを、すべて表示出来る様にしたいのが希望です。 Access初心者の為、説明がわかりづらかったり情報が足りないかもしれませんが、すぐに補足致しますので、どうぞよろしくお願い致します。

  • 2つ質問です  建築図面 業者への対応 

    新築しています。 と言うかいつの間にか着工していたのですが…… 年末に地鎮祭をしました(地鎮祭は早目にと言われたので)。 そのときに、車庫の2階をロフトのような物入れにする予定でいたものを、やっぱり総2階建てにしたいという話をしました。 でも、その後の話を何もないまま着工されていました。 着工後に見積もりを出され「早く決定しないと工期が遅れる」と言われました(勝手に着工したくせに)。 私は「工期も日程もなにも知らないのに『遅れる』と言われたって何がどのくらい遅れるのかもわからない」と返事をしましたが、それに対しての返答はありませんでした。 この話をした日に基礎の立ち上がり部分にコンクリートを流すのを見たのですが、翌日の夕方には型枠が外されていました(早過ぎるんじゃ;) このままではどんな家が建つのかとても不安です。 契約書には工期について具体的なことは記されていません。 図面も簡単な平面図と配置図だけです。 見積もりも大雑把なものだけです。 なので、今頃になってという感じですが、もっと詳しい見積もりと工程表、図面をもらいたいと思いました。 (1)図面というのは、どのようなものをもらえばいいのでしょうか。 (2)この業者に対して今後どのように対応していけばいいのでしょうか。 本当にどうして良いかわかりません。解約したいくらい…… 何かアドバイスをお願いします。

このQ&Aのポイント
  • 初めて使うHDDのchkdsk結果を確認しましょう。
  • Windows10で使われる外付け4TBのトランセンドHDDについて、chkdskでのディスクの状態検査結果を報告しています。
  • chkdskの結果、問題は見つかりませんでした。安心してご使用いただけます。
回答を見る

専門家に質問してみよう