
No.9
- 回答日時:
>この部分で、出庫テーブルには、厚生省コード, 薬品名, 日付以外のデータは
>ついていないほうがいいのでしょうか?
必要なのは厚生省コードだけなので他はなくてもかまいません
はずしても処理時間に差は出ないでしょうね
>4ヶ月連続クエリはかなりの時間がかかるようなかんじです。
非常に負荷のかかる処理です
>抽出条件欄になにもいれなければ、察するように、回数が1,3,4,とかいうように表示が数秒できますが、
ということならこのクエリをテーブル作成クエリに変えて
結果をワークテーブルとして固定してやればその後の処理が早くなるでしょうね
その場合は集計クエリを次のように変えます
TRANSFORM Sum(テーブル名.数量) AS 数量の合計
SELECT テーブル名.厚生省コード, テーブル名.薬品名
FROM テーブル名
WHERE (((テーブル名.厚生省コード) In (select 厚生省コード from ワークテーブル where 連続出庫回数="4")))
GROUP BY テーブル名.厚生省コード, テーブル名.薬品名
ORDER BY テーブル名.厚生省コード, DateSerial(Year([日付]),Month([日付]),1)
PIVOT DateSerial(Year([日付]),Month([日付]),1);
この回答への補足
>結果をワークテーブル
というのは、4ヶ月連続クエリでテーブル作成したのをワークテーブルということですよね。集計クエリにでてくる、テーブル名というのは出庫テーブル?なのでしょうか?
すいません、ほとんど理解がおいついていかなくて。
No.8
- 回答日時:
>クロス集計からそういうのを導くことができるということでしょうか?
できません
>全部目視でしていくのが大変なので、
ということだと
クロス集計から4ヶ月以上続く薬品だけを抽出という2段構えでの処理になりますね
一度薬品をグループに指定して月ごとの集計を行い
前回の回答のやり方で4ヶ月以上連続するもののみ抽出します
月ごとの集計
年月: DateSerial(Year([日付]),Month([日付]),1)
というフィールドを作りコード、薬品名、年月をグループに指定して
数値を集計します
SELECT 出庫テーブル.厚生省コード, 出庫テーブル.薬品名, DateSerial(Year([日付]),Month([日付]),1) AS 年月, Sum(出庫テーブル.数量) AS 数量の合計
FROM 出庫テーブル
GROUP BY 出庫テーブル.厚生省コード, 出庫テーブル.薬品名, DateSerial(Year([日付]),Month([日付]),1)
ORDER BY 出庫テーブル.厚生省コード, DateSerial(Year([日付]),Month([日付]),1);
このクエリから前回の解答のクエリを作ります
連続出庫回数: DCount("*","月集計クエリ","年月 between #" & DateAdd("m",-3,[年月]) & "# and #" & [年月] & "# and 薬品名='" & [薬品名] & "'")
このフィールドの抽出条件欄に
=4
で、4件以上連続している部分のあるものが抽出されます
このクエリを最初のテーブルから作ったクロス集計クエリの抽出条件に使用します
クロス集計クエリに直に条件を書くよりクロス集計からの抽出クエリに
条件を書くほうが処理が早いみたいです
SELECT クロス集計クエリ.*
FROM クロス集計クエリ
WHERE (((クロス集計クエリ.厚生省コード) In (SELECT 4ヶ月連続クエリ.厚生省コード
FROM 4ヶ月連続クエリ)));
この回答への補足
CHRONOS_0さん、(1)から丁寧にありがとうございました。
ちょっと補足で質問があります。
>4件以上連続している部分のあるものが抽出されます。
この部分で、出庫テーブルには、厚生省コード, 薬品名, 日付以外のデータはついていないほうがいいのでしょうか?月集計クエリはある程度、数秒で表示しますが、4ヶ月連続クエリはかなりの時間がかかるようなかんじです。アクセスが固まってしまう感じ。PCはXPでペンチアム3Gの512MBなので、そんなに負担かかるとは思わないのですが。。。
抽出条件欄になにもいれなければ、察するように、回数が1,3,4,とかいうように表示が数秒できますが、=4をいれるとかなりの時間がかかる感じです。(かなりといってもどれくらいかわかりません、固まるかんじなので、強制で、アクセス落としています)
No.7
- 回答日時:
>できればどの期間が、4ヶ月以上でているか表示できれば。
と思っています。こういうことがしたいということなら
単にクロス集計するだけで十分なのでは
厚生省コード薬品名 1月 2月 3月 4月 5月 6月 7月
2149032F1021アーチスト錠10mg 168 168 77 273.5 42
2344002X1276「重質」カマグG「ヒシヤマ」 7 392 466 105
2399710E1020SPトローチ明治 88
2649843S1039MS温シップ「タイホウ」 1500
2652701M202110%サリチル酸ワセリン軟膏東豊 10
3122007F203925mgアリナミンF糖衣錠 112
この回答への補足
クロス集計だと、たくさんの薬品がある場合、全部目視でしていくのが大変なので、該当薬品を、リストアップしたいのです。
例えば、1月から4月の薬品もあれば3月から6月の薬品もあるので。
クロス集計からそういうのを導くことができるということでしょうか?
No.6
- 回答日時:
>うまく伝わりますでしょうか?
やりたいことはわかりましたが最初の質問とはずいぶんとかけ離れていますね
質問したときにはどうしたいかが決まっていなかったのでは・・・
>クロス集計をかけて、月ごとのテーブルを作ってからしないといけないものなのでしょうか?
月ごとの集計結果からでなきゃ連続しているかどうかは分からないですね
それに、クロス集計クエリでは連続は検出できません
普通の集計クエリを作ってからということになりますね
>連続で数量としてでれば、○○○○と表示して、
連続したものだけを抽出するのであれば
>○○○○
こんな表示は要らないのでは(全てに付くことになるだけですよ)
>酸化マグネシウムが
酸化マグネシウムって何?
今ままでの説明にそんなものでてきていませんよ
あと、テーブルにはすべての月が含まれているのでしょうか
(抜けはないの?)
このまま進めても、また追加でああしたい、こうしたいが出てきそうですね
サンプルのテーブルと欲しい結果をきちんとアップしていただけますか
この回答への補足
CHRONOS_0さんの指摘されたのはそのとおりかもしれません。
○という表示はいらないのかもしれません。
クロス集計で、数字がたくさんあるのをパッと見わかりやすくしようとおもってそう思ったのだろうと思います。
酸化マグネシウムは「重質」カマグGのことでした、すみません略してしまいました。
★欲しい結果は、薬品が4ヶ月以上連続ででていればリストアップして、できればどの期間が、4ヶ月以上でているか表示できれば。と思っています。データとしては2007年1月からとっているので、まだ1年たってはいませんが、1年あったほうがういいのならば、去年のデータを引っ張ることも可能です。
テーブルをここに書くのはどの程度書けばいいのかわからなかったので
鯖にアップしてみました。
http://9nainai9.purplenova.net/b900kf0hlvtfa2li/ …
No.5
- 回答日時:
やっとテーぶるが出て来ましたね
最初からこれを出していればもっと話は早く進んだのですよ
で、これがどうなれば○が4つ続いたことになるのですか?
人にものを頼もうと思ったら、どうして欲しいのかを相手にわかる様に伝えなきゃ
この回答への補足
クロス集計をかけて、月ごとのテーブルを作ってからしないといけないものなのでしょうか?
今のテーブルのままで、
酸化マグネシウムが1月、2月、3月、4月と連続で数量として
でれば、○○○○と表示して、リストアップしたいのです。
イメージとしては 横に月、縦に薬品名のような
表みたいな感じであらわしたいのですが。
うまく伝わりますでしょうか?
No.4
- 回答日時:
>○は記号です。
数量が1以上あれば記号の○という風に表示したいのです。???
最初の質問は
>○が4つ連続で続いたら、その商品はリストアップする。
でしたよ、変わったのですか
1以上が4つ連続ということなら
連続出庫回数: DCount("*","数量","日付 between #" & DateAdd("m",-3,[日付]) & "# and #" & [日付] & "# and 数量>0" & " and 薬品名称='" & [薬品名称] & "'")
この回答への補足
CHRONOS_0さん、再度のレスありがとうございます。
○が4つ連続で続いたら、その商品はリストアップするそれで
あっています。記載方法が誤解されたらごめんなさい。
抽出条件に=4をいれて
いろいろ考えてやってみたのですが、どうもうまくいきません
数量のクエリまたはテーブルがないという感じのメッセがきます。
データーとしては 日付,薬品名称,数量
2007/04/16,「重質」カマグG「ヒシヤマ」,21
2007/05/28,「重質」カマグG「ヒシヤマ」,28
2007/06/25,「重質」カマグG「ヒシヤマ」,28
2007/06/25,「重質」カマグG「ヒシヤマ」,14
2007/7/25「重質」カマグG「ヒシヤマ」,21
2007/8/11「重質」カマグG「ヒシヤマ」,21
2007/9/11「重質」カマグG「ヒシヤマ」,14
....といったかんじなのですが。。。どこがいけないんでしょうか?
No.2
- 回答日時:
元のテーブルの情報がないので回答しにくいのですが
仮に
[出庫]
月 商品 出庫
のようなものだとして
連続出庫回数:DCount("*","出庫","月 between #" & DateAdd("m",-3,[月]) & "# and #" & [月] & "# and 出庫='" & "○" & "' and 商品='" & [商品] & "'")
このフィールドの抽出条件欄に
=4
CHRONOS_0さん、回答ありがとうございました。
テーブルデータとしては、日付(1/1,1/2,,,)薬品名称(△△△,,,,)
数量(7,12,10,,,)ですので、連続出庫回数: DCount("*","数量","日付 between #" & DateAdd("m",-3,[日付]) & "# and #" & [日付] & "# and 数量='" & "○" & "' and 薬品名称='" & [薬品名称] & "'")としてみたのですが、、、まずいとこありますか?
構文がまだいまいち理解できてなくて、、すみません。
No.1
- 回答日時:
ややこしいクエリなど作成しようと思わないことです。
私は、プログラマではなく一介のデザイナですので、どうも、難しいやり方は好みません。
私ならば、出荷状況を調べて一時テーブルにでもリストアップします。
が、これでは回答になりませんので・・・。
<出庫履歴>
ID___日付___________商品マスター_ID__数量
1____2007/01/01__1_____________________10.1
2____2007/01/01__1_____________________10.1
3____2007/03/03__1_____________________10.1
4____2007/04/04__2_____________________20.1
5____2007/05/05__2_____________________20.1
[イミディエイトウインドウ]
? XferCircle("SELECT MONTH(日付) FROM 出庫履歴 WHERE 商品マスター_ID=1 GROUP BY MONTH(日付)")
○×○
? XferCircle("SELECT MONTH(日付) FROM 出庫履歴 WHERE 商品マスター_ID=2 GROUP BY MONTH(日付)")
○○
このように、関数を利用して、出庫履歴を○×とに翻訳することはさほど難しいことではないです。
また、次のように Access のクエリには関数も組み込めるので出荷状況も○×で表示することも可能。
[クエリ1]
ID____日付___________商品マスター_ID___数量__出荷状況
1_____2007/01/01___1______________________10.1___○×○
2_____2007/01/01___1______________________10.1___○×○
3_____2007/03/03___1______________________10.1___○×○
4_____2007/04/04___2______________________20.1___○○
5_____2007/05/05___2______________________20.1___○○
このクエリを[SQL ビュー]で表示すると次のようです。
SELECT 出庫履歴.ID, 出庫履歴.日付, 出庫履歴.商品マスター_ID, 出庫履歴.数量,
XferCircle("SELECT MONTH(日付) FROM 出庫履歴 WHERE 商品マスター_ID=" & [商品マスター_ID] & " GROUP BY MONTH(日付)") AS 出荷状況, *
FROM 出庫履歴;
Public Function XferCircle(ByVal strQuerySQL As String) As String
On Error GoTo Err_XferCircle
Dim I As Integer
Dim J As Integer
Dim K As Integer
Dim R As Integer
Dim M As Integer
Dim N As Integer
Dim rst As ADODB.Recordset
Dim fld As ADODB.Field
Dim Datas As String
Dim nowMonth As Integer
Dim newMonth As Integer
Set rst = New ADODB.Recordset
' =================
' Begin With: rst
' -----------------
With rst
.Open strQuerySQL, _
CurrentProject.Connection, _
adOpenStatic, _
adLockReadOnly
If Not .BOF Then
M = .RecordCount - 1
N = .Fields.Count - 1
If N = 0 Then
.MoveFirst
For R = 0 To M
newMonth = .Fields(0)
K = IIf(nowMonth <> 0, newMonth - nowMonth - 1, 0)
Datas = Datas & String$(K, "×") & "○"
nowMonth = newMonth
.MoveNext
Next R
Else
Datas = ""
End If
End If
End With
' ---------------
' End With: rst
' ===============
Exit_XferCircle:
XferCircle = Datas
Exit Function
Err_XferCircle:
MsgBox "SELECT 文の実行時にエラーが発生しました。(XferCircle)" & Chr$(13) & Chr$(13) & _
"・Err.Description=" & Err.Description & Chr$(13) & _
"・SQL Text=" & strQuerySQL, _
vbExclamation, " 関数エラーメッセージ"
Resume Exit_XferCircle
End Function
なお、日付の範囲指定の問題が残されているかと思います。
この回答への補足
Husky2007さん、丁寧な回答ありがとうございました。
まだ自分のレベル的にそこまで達していないのでまだ未知なのですが、
少しづつ、理解できるようにがんばってみます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(データベース) pythonでsqlight勉強中、クエリー結果の利用法教えて下さい 1 2022/04/28 20:38
- Excel(エクセル) Excelで在庫表(クエリ、ピボット) 2 2022/04/11 17:11
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- ヤフオク! 関税 詐欺でしょうか?ヤフオク 3 2023/06/25 11:22
- Visual Basic(VBA) VBA 連続する名前ごとに集計 3 2022/05/21 18:24
- Excel(エクセル) 荷捌作業効率をあげるためのエクセル関数を教えてください。 8 2022/10/07 08:17
- その他(Microsoft Office) Excelで総数量を変動させたい 2 2022/11/04 23:49
- メルカリ メルカリShopsを作るとメルカリで販売は楽になりますか メルカリとまったく変わりませんか? 2 2022/10/11 19:22
- Visual Basic(VBA) 【ExcelVBA】Powerクエリーでいうピボット解除と同じ処理をVBAで 4 2022/07/06 17:09
- Excel(エクセル) 非表示にしたい行をグループ化して折り畳み 4 2022/09/17 20:17
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
日付型のフィールドに空白を入...
-
Excleピボットでデータのない部...
-
SQL文で パラメータが少なすぎ...
-
データベースで新規作成で日付...
-
VBA 別シートの同じ日付の欄に...
-
BCPでCSV内の文字列をテーブル...
-
アクセスで日付を入力すると曜...
-
【Accessで困っています...
-
アクセスで月単位の抽出
-
グループ化した個別の件数の取...
-
指定日付を起点にして最新日付...
-
【エクセル】指定した日付に一...
-
エクセル-過去6カ月分の合計を...
-
Accessのデータ型の日付/時刻型...
-
Accessの日付時刻型から日付、...
-
ピボットテーブルの日付を週ご...
-
アクセスのクエリー作成
-
DSumの計算式の入れ方
-
accessで日付をMM/DDのように出...
-
SQL Server2005のクエリで「今...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
日付型のフィールドに空白を入...
-
SQL文で パラメータが少なすぎ...
-
Excleピボットでデータのない部...
-
VBA 別シートの同じ日付の欄に...
-
アクセスで日付を入力すると曜...
-
Excel→Accessへの日付データの...
-
Accessの日付時刻型から日付、...
-
指定日付を起点にして最新日付...
-
【vba】日付の形式が勝手に変わ...
-
BCPでCSV内の文字列をテーブル...
-
【エクセル】指定した日付に一...
-
アクセスで月単位の抽出
-
Accessのデータ型の日付/時刻型...
-
アクセス:既定値に土日含まず...
-
ACCESSの空白をカウントする
-
エクセル-過去6カ月分の合計を...
-
Accessで日付の比較がうまくい...
-
ビュー定義をプログラムで動的...
-
Access クエリで、レコードの無...
-
アクセス97のVBAで日付項目をヌ...
おすすめ情報