X



Access総合相談所 28
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001名無しさん@そうだ選挙にいこう
垢版 |
2018/08/30(木) 23:16:08.14
ACCESSに関する質問はこちらへ

▼━ 質問のしかた ━━━━━━━━━━━━━━━━━━━━
★ OS、ACCESSのバージョンを明記してください。
★ 質問内容は具体的に書いてください。
  ・何がしたいのか
  ・どんな処理を試したか
  ・動作状況など駄目な理由
  テーブル/フォームの構成、クエリ、VBAの内容など差し支えない
 範囲で詳しく書くと、早く回答が得られるかもしれません。
  図解があれば尚良し。
  聞き返さなくても詳細が把握できる質問が望ましいです。
★ 事前にヘルプ・Google等で調べられる範囲は調べてください。
  大概の疑問は検索することで解決します。
★ アドバイスを貰ったら、必ず経過・結果の報告をして下さい。
  ギブアンドテイクで情報を共有しましょう。

▼━質問テンプレ ━━━━━━━━━━━━━━━━━
【 システム環境  】 Windows**, Access**
【 VBAが使えるか 】 はい・いいえ
【 VBAでの回答  】 可・否
【 検索キーワード 】 Googleやヘルプでの検索キーワード

前スレ
Access総合相談所 27
http://mevius.5ch.net/test/read.cgi/bsoft/1424828244/
0851821
垢版 |
2019/08/26(月) 01:03:43.74
SQL編 書き込めないので一部カタカナ
1.入力用(WorkQuery)
セレクト M.なんたらID,M.なんたら項目,W.[1月], W.[2月],
....,W.[12月],W.なんたらID
ROM M LEFT JOIN W ON M.なんたらID=S.なんたらID
(なんたら項目で繋いでもいいけど、万が一の重複よけで項目ID指定)

-->これで自動でデータシートビューフォームを作成(F_work)

2.ワークファイルの削除クエリー(DEL_W)
デリート W.* FROM W

3.JとダミーをUNIONで繋ぐ(UN)
セレクト 月 ,なんたらID,Data FROM J
UNION ALL
セレクト 月,ID,Data FROM Dummy;

3.UNをもとにしたクロス(Cross)
TRANSFORM First(UN.Data) AS Data
SELECT UN.ID FROM UN GROUP BY UN.ID PIVOT UN.月

4.Wへの書き込み(INS_W)
インサート INTO W ( ID, 1月, 2月, 3月, 4月, 5月,
6月, 7月, 8月, 9月, 10月, 11月, 12月 )
SELECT Cross.ID, Cross.[1月], Cross.[2月], Cross.[3月],
Cross.[4月], Cross.[5月],Cross.[6月], Cross.[7月],
Cross.[8月], Cross.[9月], Cross.[10月], Cross.[11月],
Cross.[12月] FROM [Cross] WHERE (((Cross.ID) Is Not Null))
0852821
垢版 |
2019/08/26(月) 01:10:30.34
フォーム設計編 
 [M.なんたらID]と[M.なんたら項目]の編集ロックを「はい」に。
>フォームVBA (dao記述で勘弁して)使いまわし用手続き
Private Sub UpdateJ(obj As Object)
Dim dbs As Database
Dim Rst As Recordset
Dim Wherestr As String

Set dbs = CurrentDb: Set Rst = dbs.OpenRecordset("J", dbOpenDynaset)
Wherestr = "月='" & obj.Name & "' AND ID=" & Me![M.ID]: Rst.FindFirst Wherestr
With Rst
If .NoMatch Then
.AddNew
!月 = obj.Name: !ID = Me![M.ID]: !データ = obj.Value
.Update
Else
.Edit
!データ = obj.Value
.Update
End If
End With
Rst.Close
Set Rst = Nothing: Set dbs = Nothing
End Sub
0853821
垢版 |
2019/08/26(月) 01:11:28.16
'1月から12月までの更新後処理イベント
Private Sub Ctl1月_AfterUpdate()
Call UpdateJ(Me.ActiveControl)
End Sub
(自動で作ると、1月のイベントプロシージャ項目名が
Ctl1月になったけど、nameとしては特に問題なく”1月”として動いてた)
これを12月まで貼る
0854821
垢版 |
2019/08/26(月) 01:13:52.66
'JテーブルからWテーブルへの展開用
Private Sub Form_Open(Cancel As Integer)
Dim dbs As Database
Dim qdf As QueryDef
On Error GoTo JP
DoCmd.SetWarnings False
Set dbs = CurrentDb:Set qdf = dbs.QueryDefs("DEL_W"):qdf.Execute:
Set qdf = dbs.QueryDefs("INS_W"):qdf.Execute
DoCmd.SetWarnings True
exit_Here:
If Not (qdf Is Nothing) Then
Set qdf = Nothing: Set dbs = Nothing
End If
Me.Requery
Exit Sub
JP:
MsgBox Err.Number & " " & Err.Description:Resume exit_Here
end sub
0855821
垢版 |
2019/08/26(月) 01:19:42.01
>>851
入力用の記述変だった
1.入力用(WorkQuery)
セレクト M.なんたらID,M.なんたら項目,W.[1月], W.[2月],
....,W.[12月],W.なんたらID
FROM M LEFT JOIN W ON M.なんたらID=W.なんたらID
0857名無しさん@そうだ選挙にいこう
垢版 |
2019/08/26(月) 23:40:46.70
>>856
それかもね
月テーブルと項目テーブルをあらかじめ持ったmdbを起動するとフォームが現れて、項目月毎に数字を打ち込み

項目月テーブル作成

それを統括DB(My SQLやPostgreSQL)に部署コード付きで追加して部署項目月毎テーブル作成

mdbは打ち込みExcelの代わりにmdbに変更しました、と言う感じ

mdbで全て管理出来んでしょ、万単位のレコード有るならね
0859名無しさん@そうだ選挙にいこう
垢版 |
2019/08/27(火) 04:06:43.56
>>858続き
rs2.AddNew
rs2![項目]=rs1![項目]
rs 2![月]="4月"
rs2![数字]=rs1[4月]
rs2.Update
rs2.AddNew
rs2![項目]=rs1![項目]
rs2![月]="5月"
rs2![数字]=rs1![5月]
rs2.Update
これを3月まで繰り返し
0861名無しさん@そうだ選挙にいこう
垢版 |
2019/08/27(火) 15:28:52.48
ヒント:自己満足
0862名無しさん@そうだ選挙にいこう
垢版 |
2019/08/27(火) 18:58:29.03
vbaで書き込むのは古い手法じゃないの
Accessにマクロも変数も無い時代は、vbaで代用してました
今はデータマクロがあるで
0865名無しさん@そうだ選挙にいこう
垢版 |
2019/08/28(水) 08:01:15.37
>>862
マクロだと冗長になってかえって面倒
0866名無しさん@そうだ選挙にいこう
垢版 |
2019/08/28(水) 08:01:51.74
>>864
んじゃ、君が教えてあげなよ
0867名無しさん@そうだ選挙にいこう
垢版 |
2019/08/28(水) 08:05:46.02
>>860
だって、4月から3月まで横並べで入力させたいと
>>818が言うんだもん
こんな設計はどうなんだよと俺も思うけどね
だから横並びにしたテーブルから
縦並びにしたテーブルまで転機するしかないやん
0868名無しさん@そうだ選挙にいこう
垢版 |
2019/08/28(水) 08:08:21.47
>>818が言うにはexcelだとエラー起こすからってことだけど
そもそも設計が悪いからだと思われ
0870名無しさん@そうだ選挙にいこう
垢版 |
2019/08/28(水) 09:42:21.77
>>869
いやそこは最重要だろ
0871名無しさん@そうだ選挙にいこう
垢版 |
2019/08/28(水) 09:58:56.44
最重要というか、それが全て
0872名無しさん@そうだ選挙にいこう
垢版 |
2019/08/28(水) 11:42:54.41
どうせ今一所懸命作っても、寿命十年がせいぜい と思えば
120ヶ月のフィールドで済む  という諦観も大事
十年以内にはもっと優秀な奴がこれに係るだろ

2008年4月1日〜2020年3月31日の日付がテーブルに成ってるブツを見たことある
それ以前はその業務無かったし、期日が満タンに成ったら追加すりゃいい
と、開き直ってたけど、あながち発想は間違って無い  気がする   気がするだけだけど
0873名無しさん@そうだ選挙にいこう
垢版 |
2019/08/28(水) 13:24:07.91
>>872
こういう奴が2000年問題を引き起こしたんだよな
0874名無しさん@そうだ選挙にいこう
垢版 |
2019/08/28(水) 14:19:02.31
12ケ月のテーブルと項目テーブルを作る
その2つのテーブルから項目月毎のテーブルを作る(クエリーでOK)
FORM作って項目月毎の実績値の入力をさせる
それを格納するMDBを各部署に配布する(部署毎に配布するMDBごとに部署コードが違う)
結果を回収して部署コードごと違う実績値をテーブルに作成する(MySQLやPostgreSQLなどに)
これで終わりだと思うが
0875名無しさん@そうだ選挙にいこう
垢版 |
2019/08/28(水) 18:10:28.35
FileMakerユーザーの嘆き
これゆえAccess需要は無くならない

656 名前:名無しさん@そうだ選挙にいこう[sage] 投稿日:2019/08/28(水) 17:27:49.49
値段上げることばっか考えないでユーザー増やす努力してくれればいいのに

潜在的な需要はあるのに高くて諦めてるパターン多いだろ
うちもそうだけど
0876名無しさん@そうだ選挙にいこう
垢版 |
2019/09/01(日) 17:49:42.41
【実体験】ブログを1,000記事ほど書いたら、月300万くらい稼げた話
https://www.youtube.com/watch?v=GmVulh282ps&;t=604s
【報告】ブログで「月収1,000万」を達成できました【方法を解説する】
https://www.youtube.com/watch?v=pgjcuLp8wt0
5年間ほど努力したら「年収3,000万」になったので、経験談を語る
https://www.youtube.com/watch?v=oV_SY-a1lMs
ブログで成果が出るまでの期間は「100記事」です【魔法はありません】
https://www.youtube.com/watch?v=-iVkNRvTuPw&;t=276s
期間工ブログの収入は1500万円でした。【フリーランスの現実&底辺からの復活編】
https://www.youtube.com/watch?v=aijLjFLOuC4
28ヶ月、ブログとアフィリエイトやってみた(給料公開)& 稼ぐための必須ツールも教える
https://www.youtube.com/watch?v=UDptEHhIxf0
年商1300万のプロブロガーの初心者時代から今までの軌跡
https://www.youtube.com/watch?v=UMiF4T2EO9o
【収益報告】実働月10hでも大金稼ぐ方法を解説【年収6,000万】
https://www.youtube.com/watch?v=o2ISWP-VZsw&;t=288s
無料ブログは稼げない。稼ぐならオススメはWordPress一択の理由
https://www.youtube.com/watch?v=o8oUe3JS-lg
0878名無しさん@そうだ選挙にいこう
垢版 |
2019/09/03(火) 17:03:54.08
>>877
https://www.forguncy.com/blog/20170905_indirect_sheet
テーブルの作り方次第だが
この例で言えば事業所テーブルに有る値に紐付く各事業所の月別商品数量を実績テーブルからクエリーで作れば良い
Excelシート名称をAccessテーブル名称と考えるとテーブルの中身の値に一致したテーブル(名称で引っ張る)のは簡単には無理だな
VBAでグリグリやるしか無い
0879877
垢版 |
2019/09/03(火) 19:13:18.20
>>878
ありがとうございました。やはりExcelは使い勝手がいいなあ。ドロップダウンの連動も簡単だったし。
0880名無しさん@そうだ選挙にいこう
垢版 |
2019/09/03(火) 19:32:11.10
>>877
indirect、初めて聞いて使い方を今知ったわ。
シート名引っ張ってくる使い方なんて思いもよらなかった。
この関数が古くからあるのかわからんけど、excelって地味に関数拡充してるよね。

ググった先の用例でいくと、「大島さん」シートのデータは何々を
indirectで呼び出すらしいのだが
データベースの世界では
基本的には

大島さん、なんとか、データ
のように列で格納するんだわ。

毎回「大島さん」を打たなくていい仕組みについては割愛するけど。
0882名無しさん@そうだ選挙にいこう
垢版 |
2019/09/04(水) 12:04:20.75
後accessでは同じことやろうと思ったらリレーションシップ使ったクリエ作るんじゃないかなあ
0883名無しさん@そうだ選挙にいこう
垢版 |
2019/09/04(水) 12:29:11.70
Accessの勉強法で質問です。全くの素人で試行錯誤をしながら操作をしています。
具体的にはFOM出版のよくわかるAccess2019基礎を使って勉強しています。操作方法はとてもわかりやすく順に操作を出来るのですが、正直中身の用語の意味などが分からず宙に浮いている状態です。
独学で習得された方でうまい方法がありましたら教えてください。よろしくお願いします。
0885名無しさん@そうだ選挙にいこう
垢版 |
2019/09/04(水) 13:24:27.98
分からん、の内容によるとしか。具体的に、「説明されてない用語」でどんなものがわからなかったのでしょう?
説明内でつかわれた用語も含みます。

できるとかよくわかるシリーズなんて、とりあえず誰でも読めるように書かれてるわけで、用語がわからなく
なることはないと思うんだけど。

最近の本は全く知らないけど、その基礎と応用で最終的に作る総合問題のデータベース
見る限り、応用まで読み終わってもあまり役に立たないと思う。
大きな書店にいって、その本で作る最終的なデータベースに興味を持てる、かつ、
最終的な目標が複雑そうなものを選ぶのがいいと思う。
写真が多いのは実際の情報量を少ないので避けたほうがいいです。
0886名無しさん@そうだ選挙にいこう
垢版 |
2019/09/04(水) 13:36:18.20
MOS試験対策の参考書を一通りこなして満点で受かったのに正直チンプンカンプンだった
その後業務で必要なこんなもんも作りたいってビジョンを持って本を読んだら理解が深まった
0887名無しさん@そうだ選挙にいこう
垢版 |
2019/09/04(水) 13:50:59.52
自分で作ったものを使いながらこんな機能ほしいと思った物を追加して行くのが一番じゃないかなあ
acceessの本じゃなくて運用関係の入門書を読んで行くのもいいよ
0888名無しさん@そうだ選挙にいこう
垢版 |
2019/09/04(水) 14:49:42.69
アクセス特有の用語なんてそんなにないから。
最初の言葉はテーブルとクエリーとフォームとレポートとリレーションシップ
だけ覚えておけばいい。
そのあとは、ベースとなってるSQLの機能をわかりすく言い換えた各種のアクションクエリーの名前と組み立て方を覚えるくらいで

ざっくりとしたシステムは作れる。
0889883
垢版 |
2019/09/04(水) 18:31:00.75
返事をくれた皆さんありがとうございます。
今はクエリ、リレーションシップ、フォームなどの言葉が全く繋がっていない状態です。しばらくは今の使っているテキストをしばらく使って、用語の繋がりが見えて来たら応用に移りたいと思います。
挙げてもらった書籍は探してみたいと思います。
0890名無しさん@そうだ選挙にいこう
垢版 |
2019/09/07(土) 08:56:43.43
オンメモリDBでリアルタイムデータ
を表示し続けるIoT監視ツール作れますか?
定期的にリクエリかけまくるフォーム作るしかないですか?

C#だと非同期マルチスレッドでtimerとかやればできてた気がします
0891名無しさん@そうだ選挙にいこう
垢版 |
2019/09/07(土) 13:17:40.29
>>890
access限定であれば、フォームにタイマーイベントがあるので
それでリアルタイム表示してください。
記録しないならたぶんデータベース(テーブル)すらつかいません。
ただ、IoTがrestAPIとか実装してなくて、昔ながらの
RS232Cとかだたと、もはやこのスレの範疇を越えた記述が必要になるので、
ちょっと大変ですよ。
0894名無しさん@そうだ選挙にいこう
垢版 |
2019/09/11(水) 18:48:42.16
演算のタイミングを教えて下さい
税込価格から税抜価格で集計を行います
フィルタなどが間に入るのですが、この場合は最初に税抜価格を出した方が良いのでしょうか?
それとも最後の方が良いでしょうか
0895名無しさん@そうだ選挙にいこう
垢版 |
2019/09/11(水) 18:50:06.29
日本語変でした、すいません
税込価格での販売リストからフィルタして税抜価格で集計になります
0896名無しさん@そうだ選挙にいこう
垢版 |
2019/09/11(水) 20:37:55.57
>>894
丸め誤差を最小にするには割り算は1回で済ます。
というのが原則

ちなみに、税込価格を求める際に1円未満の端数を切り捨て、切り上げ、四捨五入
のいずれかでもやってると
税抜価格<>本体価格
になる。
つまりこの時点で丸め誤差が発生している。
なので、それでも構わないというならOKかと

本体価格で集計したいなら、本体価格で記録すべき
税込価格は、それを購入・販売した時点での税率を本体価格に掛ければ求められるので
記録する必要は無い。
0897名無しさん@そうだ選挙にいこう
垢版 |
2019/09/11(水) 20:47:49.73
>>896
ありがとうございます
最初に計算してしまいます

>税抜価格<>本体価格
はい、こちらは問題ありません
主に成績を見るための資料作成なので、少々の端数は良いみたいです

>本体価格で集計したいなら、本体価格で記録すべき
本体価格もデータ上はあるのですが、
業者間の場合に価格が交渉で決まるため、この方法が出来なくなってしまいました

以前は業者間取引が少なかったので気にせずに全て本体価格にしていたのですが、
今は取引が大きくなってきたので計算方法に困った、という次第です
0898名無しさん@そうだ選挙にいこう
垢版 |
2019/09/11(水) 20:48:31.80
フィルタしてから割り算した方が計算量少ないからそっちの方がいいんじゃないの?
個人的には生に近いデータはできるだけ保持したい。最初に触ると後で面倒になる
0899名無しさん@そうだ選挙にいこう
垢版 |
2019/09/11(水) 21:15:44.13
計算結果の列に対して、データ型を指定することは出来ますか?

売上税抜: [売上金額]/1.08
の結果を全て整数にしたいのです
int()などを使うしかないでしょうか?
売上税抜: Int([売上金額]/1.08)
0900名無しさん@そうだ選挙にいこう
垢版 |
2019/09/11(水) 21:36:36.52
>>894

ID、品目、単価、単価有効期限
という品目テーブル(IDは主キー)

税率、有効期限
という税率テーブル

品目ID、個数、販売日(購入日)
という販売(あるいは購入)テーブル

を用意しておいて

品目テーブルと販売テーブルの品目_IDと品目IDを1:多のリレーションシップして、必要なクエリも作って集計
0901名無しさん@そうだ選挙にいこう
垢版 |
2019/09/11(水) 21:52:06.16
今、買掛台帳の軽減税率対応の
修繕やってるけど
結局、明細単位(1品目単位)の課税対象計算にするしかなかったな。
実際に請求書届いたときに数円程度のズレが生じるのは
会計士も税務署も特に指摘しないようだし。
0902名無しさん@そうだ選挙にいこう
垢版 |
2019/09/11(水) 22:06:29.14
税務署も消費税の端数に関してはなにも言わない
個々に消費税切り捨てても大丈夫
この辺はDB・経理間に温度差があるかなとは思う
0903名無しさん@そうだ選挙にいこう
垢版 |
2019/09/12(木) 00:03:40.03
客毎の売上明細毎に計算した消費税を積み上げるのと、日次ないしは月次の売上合計から消費税計算するのでは誤差が出る
もちろん日次に計算した消費税を積み上げて月次売上から計算した消費税も誤差が出る
さらに月次で出した消費税を積み上げて年間合計出したのと年次売上合計から(ry

税務署的にはどっちでもいいみたいだけど、敵は身内や客
0908名無しさん@そうだ選挙にいこう
垢版 |
2019/09/12(木) 08:17:53.85
>>898
統計学的に言うと
自由度を下げない処理ということだね
0909名無しさん@そうだ選挙にいこう
垢版 |
2019/09/12(木) 08:19:57.04
>>905
印刷時拡張でググって
0910名無しさん@そうだ選挙にいこう
垢版 |
2019/09/12(木) 08:59:38.84
【 システム環境  】 Windows10, Access(office365)
【 VBAが使えるか 】 はい
【 VBAでの回答  】 否
【 検索キーワード 】 access 一部だけ分岐・・・など

以下のような、営業部ごとの売上データがあります

営業部,性別,売上
1,0,100
1,0,80
1,1,150
1,1,70
2,0,10
2,0,30
2,0,10
2,1,70
3,1,70

これを営業1部のみ、性別ごとに分けたいのですが良い方法はありますか?
2,3部での性別の表記は何でも良いです(とりあえずハイフンとしています)

営業部
1,男,売上合計
1,女,売上合計
2,-,売上合計
3,-,売上合計

1部以外に分けてunionで合体させる方法は思いついたのですが、
なんとなく手間な気がしています
他に方法はありますか?
0913名無しさん@そうだ選挙にいこう
垢版 |
2019/09/12(木) 12:11:17.38
>>905
ちなみに印刷時拡張では罫線まで拡張されなかったかも
印刷時のイベントでlineメソッドで引いて代用してた
0914名無しさん@そうだ選挙にいこう
垢版 |
2019/09/12(木) 12:32:45.57
>>910
選択クエリで営業部と性別のフィールド値を条件とした新たなフィールドを追加して
それを元に集計
0915名無しさん@そうだ選挙にいこう
垢版 |
2019/09/12(木) 12:49:01.79
>>910
売上データテーブルの全フィールドを選択したクエリを作り

性別_:Iif([営業部]<>1,”-“,iif([性別]=0,”男”,“女”)
というフィールドを追加
(フィールド名はなんでいいけど)

このクエリを元に集計
でいいんじゃね
0916名無しさん@そうだ選挙にいこう
垢版 |
2019/09/12(木) 12:51:26.57
>>913
印刷時じゃなくてページフォーマット時だったかも
0919名無しさん@そうだ選挙にいこう
垢版 |
2019/09/12(木) 21:40:55.34
>>910です。仕様変更になりました。

【 システム環境  】 Windows10, Access(office365)
【 VBAが使えるか 】 はい
【 VBAでの回答  】 否
【 検索キーワード 】 access 一部だけ分岐・・・など

以下のような、営業部ごとの売上データがあります

営業部,性別,年齢,カテゴリ,売上

営業部1は性別ごとに集計
営業部2は年齢30未満、30以上で集計
営業部3はカテゴリ(A・B・C)で集計

完成形は

営業部,属性,売上
営業部1 男 100
営業部1 女 100
営業部1 合計 200
営業部2 ~29 10
営業部2 30~ 10
営業部2 合計 20
営業部3 A 1
営業部3 B 1
営業部3 C 1
営業部3 合計 3
総合計 - 223

こういうレポートを作成する場合、みなさんならどう作成しますか?Excelでマクロでも組んだ方が楽でしょうか・・・
0921名無しさん@そうだ選挙にいこう
垢版 |
2019/09/12(木) 22:07:41.22
そもそも、属性フィールドにいろんなのをまとめるのがまちがいでは?

性別、年齢(層)、カテゴリの3つのフィールドに分ければ簡単になるのに

すでに属性フィールドにひとまとめに入力されているのであれば、新たに3つフィールド作って、更新クエリかければいい
0922名無しさん@そうだ選挙にいこう
垢版 |
2019/09/12(木) 22:09:59.74
>>921
いえ、データ自体は
営業部,性別,年齢,カテゴリ,売上
この形です

営業部ごとの特性をみたいようで、属性を1カラムにして用意してほしいとのことです
0923名無しさん@そうだ選挙にいこう
垢版 |
2019/09/13(金) 07:30:28.84
>>922
>属性を1カラム
となると営業部毎に選択クエリ作って
それぞれの属性のフィールドを追加して
(フィールド名は“属性”とかで統一)
それらをSQL文にして
Unionクエリにまとめて
営業部と属性でグループ化して集計
0924名無しさん@そうだ選挙にいこう
垢版 |
2019/09/13(金) 08:07:14.62
>>922
統計情報で軸が違うのを一つにまとめるのは
やや心地悪い。レポートにするなら3つのサブフォームを張り付けるか
915の技を応用すれば良いのではないかと。
あるいはデータベースの基本ルールは1列に格納するものは同じ属性の情報、であるので
accessのテーブルからexcelにリンクしてピボットテーブルで軸を変えればいいのではないかと。
また、人属性情報は改変性低いのでマスターテーブル化してリレーションシップ作れるよね。
それはもうやってる?
0925名無しさん@そうだ選挙にいこう
垢版 |
2019/09/13(金) 08:24:56.92
>>921
属性:Switch([営業部]=1,iif([性別]=0,”男”,”女”),[営業部]=2,iif([年齢]<30,”-29”,”30-“),[営業部]=3,[カテゴリ])
でもええか
ただ、もっと複数になると営業部毎に属性設定してunionクエリでまとめる方が楽かと思われ
0926名無しさん@そうだ選挙にいこう
垢版 |
2019/09/13(金) 12:05:41.03
>>924
気持ち悪いといえば、年齢
年齢はテーブルに記録しない
生年月日を記録して演算で出す
まあ、そこら辺は説明で省略してるのだろうけどね
0927名無しさん@そうだ選挙にいこう
垢版 |
2019/09/13(金) 12:53:23.51
>>922
>営業部ごとの特性をみたい
のなら様々な属性でグループ化して集計
更にグラフ化すべきかと

あと年齢は生年月日と販売日のDateDiffで求めてるよね?
0928名無しさん@そうだ選挙にいこう
垢版 |
2019/09/14(土) 16:26:42.01
【 システム環境  】 Windows10, Access(office365)
【 VBAが使えるか 】 はい
【 VBAでの回答  】 否
【 検索キーワード 】 access 一部だけ分岐・・・など

顧客のユニークIDの数を調べたいと思っています
グループ化してすぐにカウント、のような事は出来ますか?
クエリテーブルを二重にすれば出来ますが、なんか間違ってる気がします
0929名無しさん@そうだ選挙にいこう
垢版 |
2019/09/14(土) 16:31:52.60
すいません、返答を送信していませんでした

>>923
了解です!uniion使っていきます

>>924
試してみましたが、サブフォームだと高さがに困ってしまいました
vbaを使えれば可変の高さ調整ができそうな感じはしているのですが、なかなかそっちまで勉強している時間が無いです・・・

>>925
恐らく複雑になると思います。昨今の流れで、性別とか増えそうで戦々恐々としています

>>926>>927
入っているのは生年月日です
販売した時の年齢ではなく、現時点での年齢になりますが、そこは問題ないとします。
>>927さんの指摘には僕も上司も気づいていませんが、気づかないフリをします。
0930名無しさん@そうだ選挙にいこう
垢版 |
2019/09/14(土) 16:44:51.09
>>928
少なくとも昔は、AccessのSQL規格が古くて、他のデータベースで
SELECT COUNT(DISTINCT customer_id) FROM order_table
と書けるものも、
SELECT COUNT(customer_id) FROM (SELECT DISTINCT custoemr_id FROM order_table)
とサブクエリみたいにして呼ぶ必要があった。
いまも変わってないなら、二重にするのは変じゃないです。現状は未確認ですが。
0932名無しさん@そうだ選挙にいこう
垢版 |
2019/09/14(土) 19:09:28.19
【 システム環境  】 Windows10, Access(office365)
【 VBAが使えるか 】 はい
【 VBAでの回答  】 否
【 検索キーワード 】 access プロンプト 初期値 など

プロンプトの初期値は設定できないでしょうか

Between [開始日を入力してください:] And [終了日を入力してください:]
としているのですが、
予め前月を入れたいのです
具体的には
#2019/8/1#

#2019/8/31#
が最初から入るようにしたいのですが、vbaじゃないと無理ですか?
他にも楽に入力できそうな方法があれば教えて下さい
0933名無しさん@そうだ選挙にいこう
垢版 |
2019/09/14(土) 20:15:21.47
>>932
それはプロンプトじゃなくて既定値では?

既定値なら
テーブルのフィールドやフォームのテキストボックス等のコントロールで既定値を設定することができるので
そこに入れる。

なお、先月1日は
=DateSerial(year(Date),Month(Date)-1,1)
Dateとはシステムの日付を取得する関数で()付けても付けなくても同じ
DateAdd関数使わなくてもきちんと年またぎ出来るよ。

また先月末日は
=DateSerial(Year(Date), Month(Date), 1)-1
今月1日の前日ということ
0936名無しさん@そうだ選挙にいこう
垢版 |
2019/09/15(日) 00:02:15.91
>>934
クエリでも>>933の式を入れるだけやろ
抽出条件に
>=DateSerial(year(Date),Month(Date)-1,1) AND <=DateSerial(Year(Date), Month(Date), 1)-1
とな

それにしても、既定値のことでないとすると、プロンプトとは何だろなと
通常、プロンプトってCUIで入力可の状態を示すサインやろ
それ以外に解釈できんのだが?
DBMS用語ではないし
0937名無しさん@そうだ選挙にいこう
垢版 |
2019/09/15(日) 00:35:58.12
>>934
抽出条件は
Between DateSerial(year(Date),Month(Date)-1,1) And DateSerial(Year(Date), Month(Date), 1)-1
でも可
また
Like Format(DateAdd("m", -1, Date),"yyyy/mm") & "*"
でも可
0938名無しさん@そうだ選挙にいこう
垢版 |
2019/09/15(日) 09:13:02.77
>>936
>>通常、プロンプトってCUIで入力可の状態を示すサインやろ

CUI限定じゃなくて、GUIでウィンドウを開いて入力を促す文字もプロンプトでいいと思う
VBAのInputBox関数の引数名もPromptだし
ただ、この質問での話だと既定値の間違いだと思う
0939名無しさん@そうだ選挙にいこう
垢版 |
2019/09/15(日) 12:34:52.11
DBサーバー立てたくない時、
mdbまたはsqliteかなと思うけど、
みなさんならどうしますか
さらにいえばVBA古臭いし冗長なのでC#で+mdbが最適解なのかなと
0942名無しさん@そうだ選挙にいこう
垢版 |
2019/09/15(日) 15:02:35.32
>>941
ランタイム入れればインストールしてなくても
Accde動かせるけどね
0944名無しさん@そうだ選挙にいこう
垢版 |
2019/09/15(日) 19:21:43.16
>>939
sqliteという選択肢を持ってくるのは、単にAndroidアプリの開発手法に似せたいから?
それであれば、環境設定も含めたインストールパッケージを作成する必要があるから
無理にAccessで作る必要はないとおもうけど。
0945名無しさん@そうだ選挙にいこう
垢版 |
2019/09/15(日) 20:40:46.98
>>944
VBAは要らない、Pythonで組むということではないかと
VBA抜いてもAccessはクエリの組み易さ,フォームやレポートの作り易さの利点があるから
それも活かしたいんだろうな
でもいっそDelphi上で全部設計した方が見通し良くなると思われ
0946名無しさん@そうだ選挙にいこう
垢版 |
2019/09/16(月) 09:11:31.13
【 システム環境  】 Windows10, Access(office365)
【 VBAが使えるか 】 はい
【 VBAでの回答  】 否
【 検索キーワード 】 access フォーム テキスト 取得 クエリ など

フォームに配置したテキストボックスの情報をクエリに含めたいのですが、どのように記述すれば良いでしょうか?

抽出条件に
[フォーム1].[テキスト4]

[フォーム1]![テキスト4]
としてみましたが、駄目でした
※パラメータの入力 [フォーム1]![テキスト4] と出ます

https://imgur.com/a/4KiWTxY
0949名無しさん@そうだ選挙にいこう
垢版 |
2019/09/16(月) 09:36:50.33
>>933
さんの
=DateSerial(year(Date),Month(Date)-1,1)


規定値に入れると
DateSerial(Year([Date]),Month([Date])-1,1)

抽出条件に入れると
DateSerial(Year("Date"),Month("Date")-1,1)

と変換されてしまい、うまく動きませんでした
date()にすると解決しました

ご報告まで
0950名無しさん@そうだ選挙にいこう
垢版 |
2019/09/16(月) 12:21:29.79
【 システム環境  】 Windows10, Access(office365)
【 VBAが使えるか 】 はい
【 VBAでの回答  】 否
【 検索キーワード 】 access 式が正しく入力されていないか、複雑すぎるために評価できません エラー

フォームを作っていてエラーが発生し、解決しました

サブフォームを作成し、クエリを表示させ、更新を行うとエラーになりました
https://i.imgur.com/Njzkz8f.png

その下にも別のクエリがあり、こちらはエラーになりません
https://i.imgur.com/9nxg60w.png

なんとなく位置を変えた所、エラーにならなくなりました
https://i.imgur.com/6tDDSb3.png

また、再度元の位置に戻してもエラーにならなくなりました
原因は何だったのでしょうか?
0951名無しさん@そうだ選挙にいこう
垢版 |
2019/09/16(月) 14:59:19.57
>>949
参照設定に依るかもね
Date()は関数、Dateはシステム変数だったかな
レス数が950を超えています。1000を超えると書き込みができなくなります。

ニューススポーツなんでも実況