- ベストアンサー
製品名毎に判定を集計する方法
- Win2000、Access2000での集計方法について助言をお願いします。
- テーブルデータから製品名毎に前回の判定と今回のデータを比較し、NG→OK, OK→OK, NG→NGという3つ分類に分けて集計する方法を教えてください。
- レコード数が1つの場合は前回はNGとみなします。どのような方法でも構いませんので、この集計を実現する方法を助言してください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 クエリーで何とかしようと思ったのですが、うまく出来ないのでモジュール化しました。 これで何とかなると思います。 ---------------------------------------------------------------------- テーブル構成 元テーブル テーブル名:製品工程テーブル 項目名 製品名 :テキスト型 工程名 :テキスト型 処理日付:日付/時刻型 判定 :テキスト型 集約テーブル テーブル名:製品工程判テーブル 項目名 製品名 :テキスト型 工程名 :テキスト型 処理日付:日付/時刻型 前回判定:テキスト型 今回判定:テキスト型 ---------------------------------------------------------------------- モジュール ---------------------------------------------------------------------- Public Function Make_Shukei() ' ' 変数定義 Dim DBN As Database Dim SNAP As Recordset Dim DYNA As Recordset Dim SQLSTR As String Dim WK_SEIHIN As String Dim WK_CNT As Integer ' ' データベース定義 Set DBN = DBEngine.Workspaces(0).Databases(0) ' ' 格納先レコード削除 DoCmd.SetWarnings False DoCmd.Echo False ' DoCmd.RunSQL "DELETE FROM 製品工程判定テーブル" ' ' 初期値設定 WK_SEIHIN = "**********" WK_CNT = 0 ' ' 抽出用SQL作成 SQLSTR = "" SQLSTR = SQLSTR & "SELECT 製品名,工程名,処理日付,判定 FROM 製品工程テーブル " SQLSTR = SQLSTR & " ORDER BY 製品名, 処理日付;" ' ' レコードセット定義 Set SNAP = DBN.OpenRecordset(SQLSTR, DB_OPEN_SNAPSHOT) Set DYNA = DBN.OpenRecordset("製品工程判定テーブル", DB_OPEN_DYNASET) ' If SNAP.BOF = False Then SNAP.MoveFirst Do Until SNAP.EOF ' If WK_SEIHIN <> SNAP("製品名") Then If WK_SEIHIN <> "**********" Then If WK_CNT = 1 Then DYNA("今回判定") = DYNA("前回判定") DYNA("前回判定") = "NG" End If DYNA.Update End If ' DYNA.AddNew DYNA("製品名") = SNAP("製品名") DYNA("工程名") = SNAP("工程名") DYNA("処理日付") = SNAP("処理日付") DYNA("前回判定") = SNAP("判定") WK_SEIHIN = SNAP("製品名") WK_CNT = 1 Else DYNA("今回判定") = SNAP("判定") WK_CNT = 2 End If ' SNAP.MoveNext Loop End If ' If WK_SEIHIN <> "**********" Then If WK_CNT = 1 Then DYNA("今回判定") = DYNA("前回判定") DYNA("前回判定") = "NG" End If DYNA.Update End If ' SNAP.Close DYNA.Close ' DoCmd.SetWarnings True DoCmd.Echo True ' End Function ---------------------------------------------------------------------- [ツール]-[参照設定]で以下のライブラリのみにチェックを入れて下さい。 ■Visual Basic for Application ■Microsoft Access 9.0 Object Library ■OLE Automation ■Microsoft DAO 3.6 Object Library ■Microsoft Visual Basic for Application Extensibulity 5.3 ---------------------------------------------------------------------- 何か不明な点があれば補足してください。 ではでは・・・
お礼
paz777様ありがとうございました。 モジュールまで作成していただきましてありがとうございました。 VBAは全く使った事がなく分からないながらも何とか動作させる事が出来ました。 本当にありがとうございました。 なんとお礼を言って良いものか本当にありがとうございました。