■ このスレッドは過去ログ倉庫に格納されています
Access総合相談所 29
- 1 :名無しさん@そうだ選挙にいこう:2019/09/23(月) 20:02:25.84 .net
- ACCESSに関する質問はこちらへ
▼━ 質問のしかた ━━━━━━━━━━━━━━━━━━━━
★ 質問内容は具体的に書いてください。
業務上の守秘義務も大事ですが、貴方の所属組織を特定できるほど、特異な業務・システムは滅多にありません。
作りたいものの内容を隠しすぎないようにし、列名、データ値を適当に変更して例示するなどしましょう。
★ 事前にGoogle等で調べられる範囲は調べてください。
★ 完全初心者はまず、新規作成テンプレから「NorthWind」を開いて、一通り触ってみてください。ACCESSの概念を理解する
もっとも簡単な方法です。
★ お金の管理でシステム設計ミスが会社経営に重大な支障が予見される場合は、パッケージソフトに誘導する場合があります。
格安なソフトもあるので設計に取りかかってから悩む前に、市場調査も行なってください。
★ アドバイスを貰ったら、必ず経過・結果の報告をして下さい。
ギブアンドテイクで情報を共有しましょう。
▼━初心者用質問テンプレ ━━━━━━━━━━━━━━━━━
【Windows】 7, 8,10 【Access】 365,2013,2016,2019
【作りたいものの業務分野】
販売管理,買掛管理,営業予算管理,営業実績管理,生産管理,
財務管理,労務管理,学術研究統計,文字格納を主体としたDB,その他()
【あなたのスキル】
LV1:完全初心者,
LV2:ACCESSの基本要素(テーブルやクエリーなど)の役割を知っている
LV3:VBAが打てる
【どのオブジェクトに関する質問か】
テーブル,クエリー,フォーム,レポート,サブフォーム(サブレポート),リレーション,VBA
【やりたいこと】
(質問によっては各テーブル名と列名を例示)
(クエリーの場合は、左上の「表示」を押し”SQLビュー”に変更して表示される”SQL文”を貼り付けると回答者がわかりやすい)
(得たい出力結果や挙動)
【エラーメッセージに関する質問】
・エラーメッセージの内容 ・windowsは32bit版か64bit版か
前スレ
Access総合相談所 28
https://mevius.5ch.net/test/read.cgi/bsoft/1535638568/
- 139 :名無しさん@そうだ選挙にいこう:2019/11/03(日) 18:50:58.57 .net
- >>135
管理の上では洗い替えでOK過去の情報はいらないけれど、
数字を管理する上では、担当者自身の数字とエリア別の数字は過去に遡って変化をみる必要がある
単純にid増やすと1idが百万とかだから上に言えなかったんでしょうね
- 140 :名無しさん@そうだ選挙にいこう:2019/11/03(日) 19:57:39.66 .net
- >>138
そういうコンセプトでいいんじゃないですか。
売上管理じたいは、いじりようのないパッケージを使ってるんだろうし。
たぶんプロが作ったものって必ずしもマスターとのリレーションシップだけに頼ってなくて
記録系は得意先名とか、担当者名まで保存してることが多いので、
もう一度、大元のデータを精査したほうが
無駄な開発をしなくても良いと思う。
- 141 :名無しさん@そうだ選挙にいこう:2019/11/04(月) 09:43:28.00 .net
- >>138
酷いシステムに関わって、ご愁傷様です
よく今まで問題が表面化しませんでしたね
- 142 :名無しさん@そうだ選挙にいこう:2019/11/04(月) 10:46:32.72 .net
- これって担当者として使ってなくて、主語がエリアでオマケで担当者名が付いてるだけみたいな
- 143 :名無しさん@そうだ選挙にいこう:2019/11/04(月) 11:05:21.60 .net
- 担当課と担当者のデータを別に持たせるのは普通にあるかたちだし、
項目追加するだけだから修正も容易なんだけどね
- 144 :名無しさん@そうだ選挙にいこう:2019/11/06(水) 12:54:07.13 .net
- >>142
売上明細テーブルにエリアや担当者の氏名なんかを同時に記録するシステム
正規化を知らない新人がエクセルで組んだのに
似たのあったなあ
- 145 :名無しさん@そうだ選挙にいこう:2019/11/06(水) 12:58:04.93 .net
- その新人の作ったエクセルのシートでは
担当者を毎回手入力するんですよwwww
そんで氏名の入力間違いがあって大慌てwwwww
- 146 :名無しさん@そうだ選挙にいこう:2019/11/06(水) 12:59:14.09 .net
- そんなに著しく間違った運用ではないけど、補助的な集計ツール作るなら
1 佐藤、1 鈴木、2 田中があるとして
access側には
1 東京、2 神奈川のテーブルだけ持たせて、idで結合して
あとexcelに流してピボットかけるかな。
accessのクロスより使い勝手がいいので。
- 147 :名無しさん@そうだ選挙にいこう:2019/11/13(水) 17:33:38.50 .net
- ちょっと皆に聞きたいです
環境
windows10 1903 64bit 更新プログラム最新適用済み
access2016 32bit 更新プログラム最新適用済み
で、テーブルに対して更新をかけると
「sqlが破損しています」とエラーが出ます
新規でmdbファイルを作成し、
簡単なテーブルを作り、
updateクエリにて実行すると、
where句が入っている場合のみ上記エラーが発生しています
officeの再インストールすると問題は出ません
更新プログラムだと疑っています
同じ状況の方はおられますか?
- 148 :名無しさん@そうだ選挙にいこう:2019/11/13(水) 18:00:05.30 .net
- 初心者です
データをファイルから参照してエクスポートしようとすると開くという表示ではなく保存になってしまってエクスポート出来ません
何故でしょう
- 149 :名無しさん@そうだ選挙にいこう:2019/11/13(水) 18:11:20.23 .net
- エクスポートすると、対象データが外部ファイルに保存されます
- 150 :名無しさん@そうだ選挙にいこう:2019/11/13(水) 18:51:07.66 .net
- 今日のWindowsUpdateで不具合
Where条件付きの更新クエリまたはUpdate構文のSQL動かすとクエリ破損エラー出る
- 151 :名無しさん@そうだ選挙にいこう:2019/11/13(水) 19:07:04.96 .net
- >>150
やはりですか
検証してました
クエリ ' ' は破損しています
ってメッセージですね
https://i.imgur.com/yNI8ejo.jpg
- 152 :名無しさん@そうだ選挙にいこう:2019/11/13(水) 20:36:01.00 .net
- >>148
エクスポートはAccess的には
外部ファイルに保存、です。
インポートは、外からaccess内のテーブルにコピー、です。
エクスポートでaccess上で表示動作が起きないのは、いちおう仕様どおりの挙動です。
さらに質問があれば何がしたいのか、無理に用語にせず、説明してください。
- 153 :名無しさん@そうだ選挙にいこう:2019/11/13(水) 20:38:48.50 .net
- >>150
windows10限定ですか。
今日、シフト休だったから
私の作ったツールが動かないことで業務混乱してなきゃいいけど。
(会社の環境はwindows7 access2013か2016)
- 154 :名無しさん@そうだ選挙にいこう:2019/11/13(水) 21:03:50.89 .net
- Win10だと単独除外がしにくいから入りやすいのはあるけどOS関係なしの模様
MSIインストーラーなら
Access2016→KB4484113
Access2013→KB4484119
Access2010→KB4484127 を削除してWindowsUpdateで再度入らないように設定
C2Rインストーラーなら
https://blogs.technet.microsoft.com/outlooksupportjp/2016/03/20/c2rclick-to-run-outlook-20132016/ を参考にバージョンを戻す
- 155 :名無しさん@そうだ選挙にいこう:2019/11/13(水) 21:16:04.51 .net
- >>152
すみません、したいのはエクスポートじゃなくてインポートでした
解決しました
クエリに変更を加えたらその後実行するのは鉄則でしょうか
- 156 :名無しさん@そうだ選挙にいこう:2019/11/13(水) 21:32:20.14 .net
- >>155
期待どおりの動作しなくて困るなら、動作確認はしますでしょうね。
それを鉄則というかは分かりません。
- 157 :名無しさん@そうだ選挙にいこう:2019/11/15(金) 12:39:47.29 .net
- 前回の、VBAでテーブル名に日本語使っていた場合とかの大規模なエラーは、
office insiderは英語圏しか参加者いないのか程度にしか思ってなかったけど、
今回のを見ると、office insider自体あまり機能してないのかもしれない
Access目当てでinsiderチェックしてる人なんて何人いるのか
- 158 :名無しさん@そうだ選挙にいこう:2019/11/15(金) 16:24:53.55 .net
- Critical: Office Update breaks Access ? Query is corrupt
We’ve gotten reports from our clients, our colleagues and other posters that there is a huge problem with the Office 365 update that was released yesterday (November 12, 2019). The update causes an error where it may say:
- 159 :名無しさん@そうだ選挙にいこう:2019/11/17(日) 12:19:42.60 .net
- >>158
MSの劣化止まらない
昔方がまともな動作してたよ
たいして機能増えてないのに
- 160 :名無しさん@そうだ選挙にいこう:2019/11/17(日) 15:05:27.27 .net
- Access結構デカイバグが起きてるのね
https://answers.microsoft.com/ja-jp/msoffice/forum/all/2019%E5%B9%B411%E6%9C%88%E3%82%A2%E3%83%83/4ac3fbfd-3010-4541-a5dc-f0c8a3adf8e3
マイナーな条件ならまだしも、誰もが使うような条件だった
- 161 :名無しさん@そうだ選挙にいこう:2019/11/17(日) 16:28:39.06 .net
- 桐にしとけ
- 162 :名無しさん@そうだ選挙にいこう:2019/11/17(日) 20:13:48.56 .net
- >>クエリー破損
VBAだと影響無し、か
VBプログラマ上がりが作ったAccessならアレだがクエリー使ってるヤツは終わり、とな
- 163 :名無しさん@そうだ選挙にいこう:2019/11/17(日) 20:23:11.35 .net
- 残念ながらVBAどころか他のプログラムから接続して同じような操作してもアウトなんだわ
- 164 :名無しさん@そうだ選挙にいこう:2019/11/17(日) 20:46:21.95 .net
- >>162>>163
そう
俺も自作した、vbaのopenqueryがautoになった
幸いあまり使わないものだから良かったけど、
これ毎日使う物だったら地獄だろうな
- 165 :名無しさん@そうだ選挙にいこう:2019/11/17(日) 22:56:45.52 .net
- autoになったなら楽ちんじゃん
- 166 :名無しさん@そうだ選挙にいこう:2019/11/18(月) 07:23:57.51 .net
- >>161
シンプルで心に沁みる言葉だな
- 167 :名無しさん@そうだ選挙にいこう:2019/11/18(月) 07:27:39.29 .net
- >>164
このスレでautoはアウトじゃなくてautoexecだから
- 168 :名無しさん@そうだ選挙にいこう:2019/11/18(月) 13:54:09.49 .net
- 先週まで大丈夫だったけど
ついにやられた。
office365だけど、修正手順が複雑すぎてあきらめた。
どうしよ、結構、重要な業務に使ってるんだけど。
- 169 :名無しさん@そうだ選挙にいこう:2019/11/18(月) 15:33:17.67 .net
- 【 システム環境 】 Windows10, Access2016
【 VBAが使えるか 】 否(excelでは経験あり)
【 VBAでの回答 】 可
ACCESSに挑戦してます
社員テーブルに社員NO・氏名・課があります
メインの数値テーブルに共通の項目と課毎に入力するフィールドを作成予定で
フォームには共通項目とその課に該当するフィールドだけを表示させて
打ち込むようにしたい、と考えています
┏━━┓
┃氏名┃
┗━━┛
↓T_社員から自動取得
┏━━┓
┃課一┃
┗━━┛
↓課に該当する項目を表示し、数値を入力
┏━━━━━━━┓
┃共通打込項目一┃←表示
┗━━━━━━━┛
┏━━━━━━━┓
┃共通打込項目二┃←表示
┗━━━━━━━┛
┏━━━━━━━┓
┃課一打込項目一┃←表示
┗━━━━━━━┛
┏━━━━━━━┓
┃課二打込項目一┃←表示されない
┗━━━━━━━┛
上記みたいなイメージですが可能でしょうか
- 170 :名無しさん@そうだ選挙にいこう:2019/11/18(月) 18:27:17.92 .net
- >>169
課によって入力項目変わるんですね。
課マスターに
打たせる項目をboolean(yes no)か
1 0で入れときましょう。
フォーム用のクエリーは従業員のidをもとに従業員マスター経由で課マスターから課の名前、
打たせる項目の制御値を出しましょう。
フォームでは打たせる項目制御値を配置して非表示にしましょう。
実際に打たせる項目の表示非表示は
どこで発火させるか、私も常々トライアンドエラーなので
オブジェクトのイベント(更新後処理など)で試してください
- 171 :名無しさん@そうだ選挙にいこう:2019/11/18(月) 23:33:38.38 .net
- >>169
可能でしょう。いくつかヒントをお伝えします。
ヒント1
社員NO(主キー),氏名,課
↓
T_課
課ID(主キー),課名
T_社員
社員NO(主キー),氏名,課ID
課名の入力間違いがあるといけません、二つのテーブルに分けましょう。そして、その両者を課IDでリレーションシップしてください。
ヒント2
コンボボックスのプロパティの
データタブにある値集合ソースをT_社員にして
連結列を1に
書式タブの列数を2、列幅を、0cm;(コンボボックスの幅)cmに
こうすると、見かけ上は氏名を選択して、実質は社員NOを選択することができます。
ヒント3
フォーム上で課毎の打込項目コントロ-ルは重ねることができます。
とはいえ、フォームを開いたとき全部を表示されると
みっともないので、まず、フォームの「開く時」イベントで課毎の打込項目全てを.Visible=falseにします。
社員NOを選択すれば課は特定できますから、そのコンボボックスの「更新後処理」イベントで
dim 課ID as long
課ID=Dlookup("課ID","T_社員","社員NO ="&Me.[社員NO])
とかで課IDを取得し、それをselect case文で使って、それぞれのCASEに該当するものだけ.Visible=trueにし、それ以外は.Visible=falseにします。
不明な点があれば、追加で聞いてください。
- 172 :名無しさん@そうだ選挙にいこう:2019/11/19(火) 01:15:40.60 .net
- 不具合関連
https://support.office.com/en-us/article/access-error-query-is-corrupt-fad205a5-9fd4-49f1-be83-f21636caedec
このドキュメントが言ってるのは
update系のクエリーで
テーブルの対象レコードを直接的にフィルターして
update sqlをかけるとコケるから
一回、テーブルを単にセレクト * from tableとしたクエリー
作って、対象をそのクエリーに置き換えろ、
ってことなのかね。
エライこと面倒くさい。
- 173 :名無しさん@そうだ選挙にいこう:2019/11/19(火) 11:50:28.54 .net
- >>170-171
ありがとうございます!
非表示にするということは非表示項目は歯抜けになっていくイメージですよね
非表示は詰められるといいなぁと思ってましたので考えます
また別件ですが売上を記録していくDBで売と買で売上が発生して
更に複数人に売上がつくケースもあるのですが
その場合、売と買で別々の売上テーブルを設計したほうがいいでしょうか
項目は同じだから同じテーブルにまとめたほうが良いですか?
- 174 :名無しさん@そうだ選挙にいこう:2019/11/19(火) 12:38:42.34 .net
- >>173
一緒でいいです
売買は買が発生して完結します
売の個数>買の個数なら、売状態が継続ですね
- 175 :名無しさん@そうだ選挙にいこう:2019/11/19(火) 13:04:00.23 .net
- とりあえず、テーブルの名前を集めて一時ファイルに保管し
片っ端から頭に"t_"をつけてリネームし、
単なる"SEELECT * FROM t_なんちゃら"
をSQLとするクエリー(クエリー名を元のテーブル名)を保存する
module 作ってみた。
単なるテキストファイルなので参考まで。
https://thuploader.orz.hm/miniup/?mode=edit&id=5699
危ない場所があったら、ご教示ください。
戻すときは、sub modosu です。
- 176 :名無しさん@そうだ選挙にいこう:2019/11/19(火) 14:39:20.02 .net
- >>174
ありがとうございます
更に質問なんですが、売上種別みたいなものをもって
支払いも売上テーブルの中に入れてよいですかね
また直接的な商品・エンド顧客がない売上(紹介料など)を
その売上テーブルに入れるか分けるか悩んでいるのですが
どちらが良いですか?
今イメージしているテーブルを貼ってみます
アドバイスいただければ幸いです
https://imgur.com/Wy0P12k.jpg
- 177 :名無しさん@そうだ選挙にいこう:2019/11/19(火) 14:56:13.78 .net
- >>176
横からだけど売上テーブルに商品名入れといたほうがいいよ。
一年も他の人に打たせてたら、
商品番号1 みかんを
りんごに変えるアホンダラが発生するのでこれまでの売上が全部、りんごになる。
商品名欄を儲けることで商品番号999 販売促進費としておいて、
売上のときに(広告協賛費)みたいに自由に書くことができる。
得意先ってあれやこれやの意味不明な逆請求を頻繁にかけるから。
- 178 :名無しさん@そうだ選挙にいこう:2019/11/19(火) 15:26:10.43 .net
- >>177
ありがとうございます!
ボカしたせいですね、申し訳ないです
商品は不動産なんですよね
なので、他業者が買い取りして、それをウチで再販することがあったり
購入者が事情があってすぐ売り出すことはあっても基本同じ商品が
売に出ることはないないんですよね
なので上記のような設計になりました!
- 179 :名無しさん@そうだ選挙にいこう:2019/11/19(火) 23:15:50.44 .net
- >>176
対価を受け取る行為も商品として扱って良いと思います。
それを決算時に会計処理上分ける予定なら、それだけを取り出す
選択クエリを作ればよいのです。
>>177
売上テーブルには商品コードだけで十分ではないですか?
ただし、フォーム上では商品名として表示させる工夫は必要でしょう。
テキストボックスのコントロールソースに商品コードから
商品名を導き出すdlookup関数を使ったコードを置くとか
>>171のヒント2の様な方法で表示は可能でしょう。
コードは裏方です、商品名のフリをした商品コードにするだけで
かなり使い勝手は良くなります。
また、フォーム上に非表示のコントロールを置いてそれで制御するとかも
売上フォームでは、備考フィールド以外はコードと数値の羅列のテーブルをレコードソースにすれば足りますし、徒にファイルサイズを大きくしません。
- 180 :165:2019/11/20(水) 09:01:22.33 .net
- >>179
実績系はこーどだけ保持していればよいかの話。
業態による。
質問者の例は、商品は使い回さないので、コードだけで可。
この場合の商品マスターは実は売上明細そのものだったりする。
利用可能な業態としては労務提供、受託開発、建築工事不動産など。
いっぽうプロパー商品(決まったものを何回も仕入れて売る)は、マスターに動きがある可能性を
考えるべき。
売上明細をコードと個数だけ、あとは参照としましょうよ。
165で書いた「みかん」を「りんご」に上書きするバカがいると
過去のみかんの売上がすべて、りんごの売上になりますよね?
これを内部統制で禁止しましょう。
じゃあ「みかん」の仕入値は刻々と変わるので建値も変えます。特売もあるかもしれません。
参照だと、過去のすべての売上が
「最新の単価」で実績化されます。
さらにマスターの単価などの編集を内部統制で禁止しましょう。
商品1 みかん100円、2 みかん103円 3みかん95円 というマスターができて「マスター」の役割がやや揺らぎます。
リレーショナルデータベース開発で、最初に失敗しやすい事象です。
- 181 :名無しさん@そうだ選挙にいこう:2019/11/20(水) 09:37:00.18 .net
- >>180
上書きするのは、それが出来てしまうからなんですよね。
内部統制という運用でなんとかするのは、無理なこともあるのでは?
>>177の事例はまさにそれです。
商品名に変化が無いなら、その商品名を商品マスター以外に置くのが良いと考えます。
仕入値や個数などはマスターに置くべきですが
- 182 :名無しさん@そうだ選挙にいこう:2019/11/20(水) 13:14:10.98 .net
- 今、Officeの更新したらバージョンが20390に上がってて
クエリは破損していますの不具合出なかった。
Offcie365です。
- 183 :名無しさん@そうだ選挙にいこう:2019/11/20(水) 16:29:41.20 .net
- >>182
同じく
- 184 :名無しさん@そうだ選挙にいこう:2019/11/20(水) 19:16:24.88 .net
- 2016のC2Rだけど、メッセージ出たからアプデ止めた
KB探したけど無かったから(探せなかっただけ?)
Accessだけ起動してアカウントの Office 更新プログラムやったら
なんか入ってきて、「クエリ”は破損・・」のメッセージ出なくなった めでたし?
- 185 :名無しさん@そうだ選挙にいこう:2019/11/20(水) 21:07:10.33 .net
- ページ更新されてた 修正予定が前倒しになった模様
https://support.office.com/en-us/article/access-error-query-is-corrupt-fad205a5-9fd4-49f1-be83-f21636caedec
11/20の現状対策済なのは
Access2016 MSI版・C2R版
Access2019 (ボリュームライセンス版除く)
Office365
これらは今最新版に更新もしくは対応のKBインストールすれば直る
あとは11/23頃にAccess2010・Access2013
12/10頃にAccess2019ボリュームライセンス版の更新で修正される模様
>>184
C2RにはKBのアップデート無いよ Office単体の更新プログラムだけしか来ない
- 186 :名無しさん@そうだ選挙にいこう:2019/11/20(水) 21:25:33.21 .net
- じゃあ、なんでメッセージ出なくなった? 更新試したの昨日の朝イチだけど?
前倒しが来てくれたのかな? とりま、めでたし?
- 187 :名無しさん@そうだ選挙にいこう:2019/11/20(水) 23:36:57.18 .net
- >>185
2016だけど、該当KBが無いということは、
Office comからのインストール版だから?
手動更新して治ったけどやれやれだわ
- 188 :名無しさん@そうだ選挙にいこう:2019/11/21(木) 00:38:07.32 .net
- 2013だけど4484119が見つからない…
会社のだからよく知らないけどC2R版ってことですかね?
- 189 :名無しさん@そうだ選挙にいこう:2019/11/21(木) 00:39:17.12 .net
- C2Rで更新振ってくきたのっていつからだったんだろう
- 190 :名無しさん@そうだ選挙にいこう:2019/11/21(木) 12:11:40.89 .net
- C2R版がどういうものかくらい調べましょう
パッチがないことも、見分け方もわかるでしょう
- 191 :名無しさん@そうだ選挙にいこう:2019/11/21(木) 12:23:58.46 .net
- Acだけで起動して右画面に『Office 更新プログラム』と『バージョン情報』の
二つが縦に並んでるのが C2R
RuntimeはKB入る そんな感じ?
- 192 :名無しさん@そうだ選挙にいこう:2019/11/21(木) 17:39:10.91 .net
- >>169です
おかげさまで個人の月毎売上合計クエリまでは作成できました
次に課毎の売上を出そうと思ったのですが詰まってます
https://www.accessdbstudy.net/entry/20080419/p1
上記URLを参考にもとになる社員一覧テーブルと異動があった場合に記録していく異動テーブルを作りました
過去の売上を出す場合、その契約日当時の課を出したいのですが
売上が同一な移動前と異動後の課が表示されてしまいます
https://imgur.com/YTKof4Y.jpg
とても初歩的なことで申し訳ないですがよろしくお願いいたします…。
- 193 :名無しさん@そうだ選挙にいこう:2019/11/21(木) 21:35:45.02 .net
- >>192
配属日が契約日より前という条件だけでは足りません。
"where条件"ではなく"最大"にしてみてください。
そうすれば契約日の直前の配属日の配属先だけに絞り込まれるはずです。
なお、配属日と契約日が同日でも(つまり配属直後に契約でも)良いのですから
抽出条件は<=[契約日]が良いと思います。
- 194 :名無しさん@そうだ選挙にいこう:2019/11/22(金) 00:15:43.07 .net
- windows updateでc2r版も更新されたとは思うけど、
いつ更新されたか、履歴とかあるのかな?どこで確認したら良い?
- 195 :名無しさん@そうだ選挙にいこう:2019/11/22(金) 04:11:57 .net
- c2rならインストール日が更新される
いいかげんPCの使い方みたいな話やめよう
- 196 :名無しさん@そうだ選挙にいこう:2019/11/22(金) 10:50:33.83 .net
- >>193
ありがとうございます
早速試してみました!
ですが、最大にしても異動テーブルで複数記載している社員は
課が二つ出てきてしまいました…
ここがクリア出来たら、あとは入力値を詰めていって
フォームに取り掛かれると思ってたんですが…
https://imgur.com/RaTQZyV.jpg
- 197 :名無しさん@そうだ選挙にいこう:2019/11/22(金) 11:10:05.82 .net
- ちなみにSQL文は以下のようになってました
SELECT T_配属.社員名, T_売上.契約日, Max(T_配属.配属日) AS 配属日の最大, T_配属.配属先, T_売上.仲介手数料, T_売上.仲介消費税
FROM T_配属 INNER JOIN T_売上 ON T_配属.社員名 = T_売上.社員
GROUP BY T_配属.社員名, T_売上.契約日, T_配属.配属先, T_売上.仲介手数料, T_売上.仲介消費税
HAVING (((Max(T_配属.配属日))<=[契約日]));
- 198 :名無しさん@そうだ選挙にいこう:2019/11/22(金) 21:23:16.71 .net
- ACCESSのアプデーと来ました!!
- 199 :名無しさん@そうだ選挙にいこう:2019/11/22(金) 22:09:13.13 .net
- まじか!
- 200 :名無しさん@そうだ選挙にいこう:2019/11/24(日) 11:28:19.17 .net
- 何度も申し訳ございません
>>196-197で解決策がわかる方、どなたかいらっしゃいませんか…
異動問題がここを解決したいのですが、2日間自分で考えたり調べたりしても無理でした
最悪、月毎に全社員の所属情報を記録するテーブルでも作ろうとも考えましたが…
- 201 :名無しさん@そうだ選挙にいこう:2019/11/24(日) 11:34:26.04 .net
- 12月っていってたアップデート、365で来てたのね
早速適用して治ったわ。末までに来なかったらテーブル手作業更新の地獄が待ってた
- 202 :名無しさん@そうだ選挙にいこう:2019/11/24(日) 16:49:15.51 .net
- 帳票ツールとして使ってるユーザー多いのに、こういうバグが発生するとな
いくらマイクロソフトが力入れてないとしても
- 203 :名無しさん@そうだ選挙にいこう:2019/11/24(日) 20:15:58.26 .net
- ゆうパックで業務止まってたらしいし
月末系だとタイムカード集計で発生したら給与出せなく成るし TimeP@ckだっけ
月一しか使わない機能だと周知されてないと悲劇起きるな
- 204 :名無しさん@そうだ選挙にいこう:2019/11/24(日) 23:57:14.71 .net
- 他のバージョン使ってなんとかなったけど、2013 C2Rの修正12/10とか殺す気かよw
- 205 :名無しさん@そうだ選挙にいこう:2019/11/25(月) 00:11:55.32 .net
- >>204
他のバージョンも最初は全部その日だったんだぜ…?
- 206 :名無しさん@そうだ選挙にいこう:2019/11/25(月) 07:11:17.94 .net
- さすがに前倒しにはなると思ったけど予想以上に早かったな
- 207 :165:2019/11/25(月) 08:24:02.84 .net
- >>200
インスタントに答え求めるんじゃないよ。
だいたい皆さん、余裕があるときに書いてるんだから。
まずさ、その配属テーブルだけじーっと見てみ。
一行で「いつから」『いつまで』の配属か分かればもっと楽だよね。こっちも考えるけどおまいも
真剣に考えろ。
- 208 :195:2019/11/25(月) 10:29:41.11 .net
- >>200
===Q_配属M===
"セレクト” TBL_配属M.RECID, TBL_配属M.社員番号, TBL_配属M.配属,
TBL_配属M.配属日,
DCount("配属日","TBL_配属M",[WHERE句])+1 AS インデックス,
"社員番号=" & [社員番号] & " AND 配属日<#" & [配属日] & "#" AS WHERE句,
[インデックス]+1 AS インデックス2 FROM TBL_配属M;
===Q_配属M2===
SELECT Q_配属M.RECID, Q_配属M.社員番号, Q_配属M.配属, Q_配属M.配属日,
Q_配属M.[インデックス], [Q_配属M_1].[配属日]-1 AS 転属1,
IIf(IsNull([転属1]),DateAdd("yyyy",100,[Q_配属M].[配属日]),[転属1]) AS 転属日
FROM Q_配属M LEFT JOIN Q_配属M AS Q_配属M_1
ON (Q_配属M.[インデックス2] = Q_配属M_1.[インデックス])
AND (Q_配属M.社員番号 = Q_配属M_1.社員番号);
- 209 :196:2019/11/25(月) 10:39:39.19 .net
- 続き
===売り上げとの紐付け
SELECT T_URI.RECID, T_URI.売上日, T_URI.売上,
T_URI.社員番号, Q_配属M2.配属, Q_配属M2.配属日, Q_配属M2.転属日
FROM T_URI LEFT JOIN Q_配属M2 ON T_URI.社員番号 = Q_配属M2.社員番号
WHERE (((T_URI.売上日)>=[配属日] And (T_URI.売上日)<=[転属日]));
やってること
クエリー1つめ、社員番号の配属先の古い順にインデックス番号を生成する
ついでに次のインデックスも+1で埋めて置く
クエリー2つめ、Q_配属Mを2つ並べる。1つめの「Q_配属M」の
「社員」および「インデックス2」と2つめの「Q_配属M」の「社員および」「インデックス」
を紐づける。尚、当然、空値もあるので、紐付けはLEFT JOINとする。
そのうえで、転属1: [Q_配属M_1].[配属日]-1(次の配属日の1日前)
さらに最後の所属の空値対策で、
転属日: IIf(IsNull([転属1]),DateAdd("yyyy",100,[Q_配属M].[配属日]),[転属1])
(最後の所属は、配属日の100年後)とする。
最後に、売り上げとQ_所属M2をつなげる。
Q_所属M2からは、(T_URI.売上日>=[配属日]) And (T_URI.売上日)<=[転属日])
を条件とする。
https://i.imgur.com/6WtnoHn.jpg
- 210 :名無しさん@そうだ選挙にいこう:2019/11/25(月) 18:32:36.20 .net
- >>196
上手くいきませんでしたか、それは失礼しました。
既に他の方が回答されているようですが、これが私の回答になります。改めて以下の手順でやってみてください。
選択クエリを作成
T_売上とT_配属を表示させ
社員と社員名で結合
フィールドは以下の3つ
T_売上.*,配属日、配属先
配属日の抽出条件に
<=[契約日]
を入れます。
これをQ_売上+配属という名前で保存
これでそれぞれの契約日以前の配属日と配属先がT_売上に付加されます。
ただ、これには過去の複数の配属日が含まれます。
次に、別のクエリを作成
Q_売上+配属だけを表示させ
フィールドは以下の2つ
Q_売上+配属.*,配属日
配属日の表示のチェックを消して、抽出条件に
DMAX("配属日","Q_売上+配属","[社員]=" & [社員] & "AND [契約日]=#" & [契約日] &"#")
を入れます。
これにより、[社員]毎に[契約日]直前の配属日と配属先が特定されます。
このクエリとT_売上のレコード数は一致するはずです。
どうですかね?
- 211 :名無しさん@そうだ選挙にいこう:2019/11/26(火) 10:12:50 .net
- レスが遅くなってしまい申し訳ございません
>>208さん、>>210さんお二人ともありがとうございます!
昨日は体調不良で何も出来てないので今日頑張ってみます!!
また催促するような真似をしてしまい申し訳ございません
以後気を付けます
- 212 :198:2019/11/26(火) 12:55:46.92 .net
- >>211
一部訂正です
二つ目の抽出条件のANDの前後には半角スペース入れて下さい
ちなみにDMAXのような定義域集計関数は処理に時間が掛かる事があります
その場合はサブクエリに置き換える方法もあるのですが、エラーになることもあり
こちらをオススメします
- 213 :名無しさん@そうだ選挙にいこう:2019/11/26(火) 19:56:35.44 .net
- >>200です
>>208さん、>>210さんのおかげで求めたいものが出せました!
ただご指摘にもあった通り、DMAXで計算時、重たいものとなってしまいました。
調べてみた限りだとVBAのほうが軽くなるみたいなので
やっぱりそっちも勉強していかないとダメですね
難しいと思って今まで逃げてきた道だけど、やっぱり難しい…
- 214 :名無しさん@そうだ選挙にいこう:2019/11/30(土) 15:51:56.92 .net
- 【 システム環境 】 Windows10, Access2010
【 VBAでの回答 】 可 SQLでも可
教えてください。
[日付] [店舗名] [購入品] [購入金額]
というフィールド構成のテーブルがあります。
このテーブルから、それぞれの店舗ごと、一番最初に買物をした日付と
その時の購入品、購入金額を抽出したいのですが、どうやればいいのでしょうか?
店舗ごとの一番最初の日付というだけならクエリを作れるのですが、
その最初の日付のときの購入品や購入金額も同時に取得することができません。
よろしくお願いいたします。
- 215 :165:2019/11/30(土) 19:42:07.98 .net
- >>214
あえて一つのqueryに詰め込まないよ。
日付と商店だけ選択して
集計クエリーに変更
日付を最小値
これで一旦保存 q1
q1と元のテーブルを並べて日付と商店を線で結ぶ。
なお、同じ日に2アイテム買ったら
2アイテム出てくるのは、そういうもんだと思ってくれ。
- 216 :名無しさん@そうだ選挙にいこう:2019/11/30(土) 22:22:37.06 .net
- >>214-215
集計クエリにして、
[日付] =最小値
[店舗名] =グループ化
[購入品] =先頭
[購入金額] =先頭
これでダメ?
- 217 :名無しさん@そうだ選挙にいこう:2019/12/01(日) 09:21:16.30 .net
- >>216
先頭や最後は使わないです
https://www.feedsoft.net/access/sql/sql54.html
にもあるように望みのレコードを得られないことがあるのです
これはデータベースというのがハッシュテーブルというレコードの順序をあえてランダムに記録するテーブルだからでしょう
- 218 :名無しさん@そうだ選挙にいこう:2019/12/01(日) 10:56:55.24 .net
- >>214
そのテーブルをT_購入履歴とするなら
そのテーブルの選択クエリ作って
日付フィールドの抽出条件に
=DMin(“日付”,”T_購入履歴”,”[店舗名]=“&[店舗名])
を入れる
当然だけど、一番最初の日付で複数の商品を購入してたら、クエリの結果もそれが反映されて
1店舗で複数のレコードが表示されるけどね
それから更に絞り込むかどうかは別の問題
- 219 :名無しさん@そうだ選挙にいこう:2019/12/01(日) 11:37:47.12 .net
- >>218
自己レス訂正
抽出条件は
=DMin(“日付”,”T_購入履歴”,”[店舗名]=‘“&[店舗名]&”’”)
だった。
Criteriaでフィールド値を指定する場合
数値はそのまま
文字列はアポストロフィ'で挟む
日付は#で挟むんだったわ
これは定義域集計関数だけじゃなくて
フィルターでも同じ
- 220 :名無しさん@そうだ選挙にいこう:2019/12/02(月) 21:34:29.00 .net
- 【 システム環境 】 Windows10, Access2010
VBAのイミディエイトウィンドウにて
?30.76666666666667-29
↓
1.76666666666667
でOK、しかし
?30.76666666666667-30
↓
0.766666666666669
と結果がおかしい
どうしてでしょうか?
- 221 :名無しさん@そうだ選挙にいこう:2019/12/02(月) 23:06:48.64 .net
- ヒント:有効数字、2進数の丸め
- 222 :名無しさん@そうだ選挙にいこう:2019/12/02(月) 23:07:23.34 .net
- 通貨型でやってみ
- 223 :名無しさん@そうだ選挙にいこう:2019/12/03(火) 07:09:04 .net
- >>220
1.まずは、浮動小数点数というものを理解して、コンピュータでは実数を正確に
表せないので近似を使っていることを理解する
さらに、significant digitというものについて調べておく
2.現在使われている標準的な倍精度浮動小数点数の規格に準拠すると、「普通は」それぞれ
1.7666666666666693
0.7666666666666693
を返すことを認めましょう(ブラウザのjavascript consoleで試せます)
3. で、VBA独自の仕様として、「signiifcant digitは15を超えない」という規則があるため、
前者は、16番目の数の9を切り上げて
1.76666666666667
後者は、(0.xxxの0はsignificant digitではないので)17番目の3を切り捨てて
0.766666666666669
となります。
- 224 :名無しさん@そうだ選挙にいこう:2019/12/03(火) 13:41:16.83 .net
- すげ。2ヶ月くらい前にも
この話題、出てたよね。
小数点4桁以下を扱う仕事を
したことないから、型の仕様の違いに気づくことなかったわ。
- 225 :名無しさん@そうだ選挙にいこう:2019/12/03(火) 14:29:16.92 .net
- 現在、毎日社員が件数を打ち込む日報なようなものを作成しています
EXCELでVBAを触っていたのでVBAの知識はそれなりにあると思います
課毎で項目が変わるのでフォームで課を入力すると、テーブルに保存してある
「課に適した項目・表示する箇所」をもとに抽出して、それをテキストボックスに項目を表示させます
また件数用のテキストボックスを作成して、そこに打ち込んだあと
登録ボタンを押すとテーブルに保存させるようにしました(ここまでは完成済み)
更に件数を打ち込んだ時点で自動的にテーブルに保存させれないかなと考えてハマりました
・テキストボックスの合計を保持するテキストボックスを使用してその値が更新されたらテーブルに保存
→テキストボックスが60個あるので、似たような処理を全てに入れるのは大変
→classを作成して、読み込もうとしてもエラーになって上手くいかない
(classの冒頭で行うテキストボックスの宣言でエラーになる)
・サブフォームでフィールドを読み込んで出来ないか?更新を自動的に行えないか?
→調べても出来ない状態
何か良い案あるでしょうか?
- 226 :名無しさん@そうだ選挙にいこう:2019/12/03(火) 21:15:24.87 .net
- >>225
Access特有の仕様で、フォームにテーブルなとをレコードソースにしている限りは
入力後にそのコントロールを外れた瞬間に値の仮確定、
レコード移動ボタンやフォームを閉じるだけでレコードの保存が完了します。
レコードを移動しないで保存を完了するには、me.requeryや
>108さんご教示のme.dirty=falseなど。
課ごとの入力項目は、そういったテーブルを用意してテーブルのフィールド名を1レコード1フィールド名で保存、
フォームのコントロール名はテーブルのフィールド名と一致させておきます。
課選択後に入力項目テーブルを読みにいかせて、ぶん回して
me.controls(value).visible=true
enabled(入力可 不可選択)でもいい。
じゃあ、入力項目以外をどうロックするかだけど
入力項目のテーブルからいわゆる60項目を並べたものをクエリーにして
レコード移動時イベントプロシージャに入ったときに
このクエリーを読みにいかせ、
dbo方式なら
rst.fields.countでループ回数を取得、
ループに入ってから
rst.fields(変数).nameで名前を拾って
上記のような手法で全部、非表示にしてはどうでしょうか。
- 227 :名無しさん@そうだ選挙にいこう:2019/12/03(火) 21:16:31.24 .net
- スマホで打ったら、
改行入らなかった。
すまん。
- 228 :名無しさん@そうだ選挙にいこう:2019/12/04(水) 21:41:14.67 .net
- フォームあれこれ1
レコードソースにレコードが無いとフォームビューでコントロールすら表示されない。
レコードソースがテーブルで、レコードセットがDynasetなら新規レコードが常にありますからそんなことにならないのですが
選択クエリだと、選択の結果が0レコードってこともあるので、その場合はコントロールすら表示されず、背景がただ表示されるだけになります。
解決方法
選択クエリで対象となるテーブルどうしのリレーションシップを設定します。
リレーションシップで選択クエリと同じ結合をします。
主キー側が1、そうでない側が∞の表示になります。
フィールドの連鎖更新等のチェックは全部いれてかまいません。
これを1:多の結合といいます。
フォームビューを見る前に、選択クエリのテーブルビューで*が最後のレコードの次に表示されているか確認しましょう。
- 229 :名無しさん@そうだ選挙にいこう:2019/12/04(水) 21:43:17.13 .net
- フォームあれこれ2
サブフォームとの連携はどうする?
メインフォームで選んでいるコントロールの値を選択条件の設定には
1 サブフォームのプロパティでリンク親フィールド(メインフォームのコントロール名)と
対応するリンク子フィールド(サブフォームのコントロール名)をそれぞれ指定する方法
2 サブフォームのレコードソースをメインフォームのコントロールの値で選択する設定をした選択クエリにする方法
があります。やりやすい方で良いかと
- 230 :名無しさん@そうだ選挙にいこう:2019/12/04(水) 21:44:54.04 .net
- フォームあれこれ3
絞り込み機能付きの帳票フォームはサブフォームでないといけないの?
絞り込みということであれば、メインフォームのフォームヘッダに選択条件を設定するコントロールを置いて
その値で絞り込むことも可能です。
なお、絞り込みは、フィルターで設定するのが確実です。
- 231 :名無しさん@そうだ選挙にいこう:2019/12/05(木) 18:59:41.03 .net
- 今日は設計の失敗発覚。
サブフォームのフッターに合計式入れて、親フォーム(親テーブル)の同項目フィールドに代入するやり方、
あんましやらないほうがいいね。
あちこちのイベントにrecalc仕込んで置かないと、合計ゼロになったりサブの最後の入力レコードが
算入されなかったりする。
たぶん、親フォームのボタンアクションで、サブフォームのクローン取ってきてネストで合計作ったほうが確実なような気がする。
- 232 :名無しさん@そうだ選挙にいこう:2019/12/06(金) 18:03:01 .net
- >>231
自分はフォームのコントロール同士で計算させるってのが考えるに面倒なので
レコードソースのクエリで計算させて
フォームはただそれを表示するだけにしてる
まあ合計や平均とかの集計値をフッタで表示させても良いんだけど、表示させるだけで
それを別のコントロールで参照してとか面倒に感じるのです
コントロールの表示って泡沫のようなもので
実態はテーブルにのみあるわけですからね
- 233 :名無しさん@そうだ選挙にいこう:2019/12/07(土) 19:09:02.22 .net
- PCリカバリしたいんだけど
サポート終了したOffice再インストールすると
サポート期間中にリリースされたアップデートも
OfficeUpdateで取得できなくなっちゃうんろうか?
- 234 :名無しさん@そうだ選挙にいこう:2019/12/07(土) 20:07:44.65 .net
- 認証でハネられる インストール完了しない
- 235 :221:2019/12/07(土) 22:23:44.54 .net
- ごめん見つけた
Windows XP/Office 2003サポート終了後の「世界」:「XPサポート終了」の具体的影響 - @IT
https://www.atmarkit.co.jp/ait/articles/1402/19/news116.html
> ●サポート終了日以前にリリースされたパッチは引き続き適用できる
> ●アクティベーション(ライセンス認証)も引き続き実行できる
- 236 :名無しさん@そうだ選挙にいこう:2019/12/10(火) 08:14:02.92 .net
- >>233
アップデートファイルのダウンロードページが消える事もあるので
それらもバックアップしてるよ
>>235
はダウンロードページの閉鎖はしないとは言ってない
- 237 :名無しさん@そうだ選挙にいこう:2019/12/12(木) 08:56:52.28 .net
- リンクテーブルで
「テーブルのみデータファイル:accdb、プログラファイル:accdb」
の組み合わせより
「テーブルのみデータファイル:mdb、プログラファイル:accdb」
の組み合わせのほうが処理速度が断然早いね
少量規模(数百件)のデータでもすごい体感できるくらいに早い
テーブルのみだったらmdbでも十分ですね
- 238 :名無しさん@そうだ選挙にいこう:2019/12/12(木) 09:25:32.22 .net
- Win10Pro 64bit Access2016 32bit
リンク元のファイル形式で処理時間を比較
◆10個のテーブルをADOXでリンクする時間
・accdb: 0.644秒
・mdb: 0.031秒
◆数百件のデータをADOでテーブルに追加しレコードソース付きのフォームを開くまで
・accdb: 0.625秒
・mdb: 0.109秒
総レス数 1015
360 KB
新着レスの表示
掲示板に戻る
全部
前100
次100
最新50
read.cgi ver.24052200