2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

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/

130 :名無しさん@そうだ選挙にいこう:2019/11/02(土) 23:27:31.57 .net
>>129
どういうことでしょう。
単純には担当マスターにそのまま開始日から終了日を付け足すだけですが。
おそらく、担当id1 の名前がどんどん変わっていく運用をしてるなら
それは間違いで
idは退職しようが異動しようが永久符番です。
売上に(一般的な設計では売上伝票の親情報テーブル)に永久の担当idを埋めるだけです

131 :名無しさん@そうだ選挙にいこう:2019/11/02(土) 23:29:47.89 .net
売上にもたせて、当時の担当と、引き継いだ担当が出るようにしたほうが良い
ってか当時の担当分からないと面倒じゃないか

132 :名無しさん@そうだ選挙にいこう:2019/11/03(日) 12:01:02.36 .net
>>131
スレチかもだけど、私の前任者は津波の犠牲になったので頼れないんですが

133 :名無しさん@そうだ選挙にいこう:2019/11/03(日) 12:36:08.29 .net
横からだけど、文脈から「当時の担当」ってのは、データ上で売上を担当した人のことだよ
生死すらどうでもいい

134 :名無しさん@そうだ選挙にいこう:2019/11/03(日) 12:41:06.60 .net
>>129
>>130の指摘された通りですね
売上つまり商取引の1件毎に担当者IDを売上明細テーブルに入れるだけですね
またトラブル対応を含むアフタサービスでは、担当者IDで特定される担当者が対応し、担当者が退職なら、後任となる担当者が対応するという事でしょう
前任と後任の関係は別テーブルで記録すれば良いかと

この洗い替えが如何なるものか不明ですが
一定期間毎に担当を変える事と売上明細とは直接の関係は有りません

135 :名無しさん@そうだ選挙にいこう:2019/11/03(日) 12:50:40.16 .net
過去の取引も今の担当で対応するから過去の担当情報は要らないので全部塗り替えたいって事なのかな

136 :名無しさん@そうだ選挙にいこう:2019/11/03(日) 13:40:22.92 .net
質問者は要件を明確に書いてちょうだい。

137 :名無しさん@そうだ選挙にいこう:2019/11/03(日) 16:34:58.17 .net
>>135
そうだとしても、それは売上明細には無関係だと思います。
過去の商取引という確定したことを変更することに意味は見いだせません。

売上明細に担当者IDを添えない方針の、特定の販売先に特定の担当を付けるなら

例えば
I社の担当がAさんからBさんに変更になったことは

販売先ID,担当者ID,就任日,離任日
I社のID,AさんのID,2019/04/01,2019/10/31
I社のID,BさんのID,201911/01,9999/03/31
とかいう風にテーブルに記録しておけば良いかと。

ただ、実際の商取引では担当が必ずしも応じられるとは限りませんので
やはり売上明細の一部に担当者IDを入れる方が実態を表す気がします。

138 :名無しさん@そうだ選挙にいこう:2019/11/03(日) 18:46:58.40 .net
>>130
idの担当者名を変えない運用にする場合、
転勤などでエリア担当者情報が管理不能になってしまい、
エリア別の過去データ集計に難儀することになります

要するにidはエリア担当者idとして機能しているのですが、
名前には担当者名を入れていて、その管理も必要といえば必要

となると、システム外で別途担当者の在任期間やエリア担当マスタみたいなのを用意するしかなく、
なんでこんな運用なのかは俺がやったんじゃないからしらねーよってなもんです

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

絞り込み機能付きの帳票フォームはサブフォームでないといけないの?

絞り込みということであれば、メインフォームのフォームヘッダに選択条件を設定するコントロールを置いて
その値で絞り込むことも可能です。
なお、絞り込みは、フィルターで設定するのが確実です。

総レス数 1015
360 KB
新着レスの表示

掲示板に戻る 全部 前100 次100 最新50
read.cgi ver.24052200