X



Access総合相談所 28
■ このスレッドは過去ログ倉庫に格納されています
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/
0750名無しさん@そうだ選挙にいこう
垢版 |
2019/08/07(水) 20:23:19.57
>>746
資格は持っていなくても税金の申告は出来ます。
法人ならば会計責任者の申告として社員が申告書を作成するし、
個人事業主なら、本人の申告として納税する。
どっちにしても税務署はいつでも相談に乗ってはくれる。
0754名無しさん@そうだ選挙にいこう
垢版 |
2019/08/17(土) 02:04:39.74
9 名前:デフォルトの名無しさん[sage] 投稿日:2019/08/17(土) 00:54:25.40 ID:lGsYaY1B
マイクロソフトのScotBrenさんによると
昨日リリースされた更新プログラムには、
特定のセキュリティの悪用を軽減する oleaut32.dll の変更が含まれていました。
残念ながら、この緩和策により、
空の ParamArray を渡していたすべての VBA および VB6 アプリが、
内部関数呼び出しからの返りとして
E_INVALIDARG を取得し始めるという予期せず発生しました。
とのこと
tps://answers.microsoft.com/en-us/msoffice/forum/all/windows-update-2019-08-cumulative-update-has/baeea089-9bba-4a2a-9660-0a220f1656e9
0756名無しさん@そうだ選挙にいこう
垢版 |
2019/08/17(土) 12:43:05.53
リンク先のスレでは、中の人が直すっていってる
ダミーでいいからParamArrayにパラメータ渡せば回避できるし
うちではやらないコーディングなので問題なかった

devsによる半年前からのレビューは今回も役に立ってないんだな
0757名無しさん@そうだ選挙にいこう
垢版 |
2019/08/17(土) 17:08:30.16
しょぼい質問ですいませんが、ウインドウズ上でうごいてるDBMSってなんなのでしょうか?
オラクルとかSQL?
アクセスというのは、単なるアプリケーションでDBMSではないの?
0763名無しさん@そうだ選挙にいこう
垢版 |
2019/08/17(土) 21:29:48.10
Accesは ACEデータベースエンジンに、連結フォームと連結レポートとマクロとVBAが付属しています
0764名無しさん@そうだ選挙にいこう
垢版 |
2019/08/18(日) 08:32:00.04
たとえば商品マスターテーブルに100件以上ある場合
明細フォーム入力時にコンボボックスから商品コードを選んで入力するのに探すのが大変

Excelのフィルタだと検索ボックスが用意されてるけどAccessにはないですよね?
みんなどうやって解決してるんでしょうか?
0769名無しさん@そうだ選挙にいこう
垢版 |
2019/08/18(日) 09:33:49.02
そんなの創意工夫やで
コンボ2個構成でもいいし、マスターの構造上面倒くさけりゃ
検索ボックスとコンボならべて検索ボックスに入力された文字列と一致するのをコンボに表示するでもよし
運用上面倒くさけりゃもっと考えて(続きを読むには月額購読)
0771名無しさん@そうだ選挙にいこう
垢版 |
2019/08/18(日) 09:48:15.30
C#がAccess VBAより高等なことが出来るということは全くないぞ
SQL Server使うならライセンス料などコストも余計にかかる
0772名無しさん@そうだ選挙にいこう
垢版 |
2019/08/18(日) 10:13:45.38
Access97あたりから入門したけど(今は使っていない)、
当時の入門書では、割と必須項目だったような。

参照される既存の商品マスタを
別途、Excelで予め階層構造に作り直しておいて、
大・中・小項目から順次クエリで絞り込むコンボボックスって、
VBA使わなくても、クエリのウィザードで作ってた。
商品マスタに新レコードを階層的に追加することも出来た。
0773名無しさん@そうだ選挙にいこう
垢版 |
2019/08/18(日) 10:25:30.33
>>772
記憶があやふやだけど、コンボボックスのレコードソースを変更するのにVBAが必要じゃなかったけ?
0774名無しさん@そうだ選挙にいこう
垢版 |
2019/08/18(日) 10:30:40.89
実現するのにVBAを1〜2行書くだけで済むが
それが嫌なら別の手段を取るのも自由だ
好きにしたまえ

この話はそれで終了だろ
0775名無しさん@そうだ選挙にいこう
垢版 |
2019/08/18(日) 10:32:39.12
>>773
大項目のコンボボックスの選択内容が変更されたときに、
中項目のコンボボックス用クエリを更新する
というようなことは、VBAを使わなくてもウィザードで出来たかと。
0776名無しさん@そうだ選挙にいこう
垢版 |
2019/08/18(日) 11:20:21.28
コンボ2の値ソースに

SELECT 大項目,小項目 FROM 商品マスタ WHERE (((大項目)="コンボ1"));

とすればいけるが、コンボ1を変えたときにリクエリしないといけないんでそこはVBAでやるしかない
0777名無しさん@そうだ選挙にいこう
垢版 |
2019/08/18(日) 14:13:00.08
再クエリはマクロで出来るんだけど
accessは、かつては超貧弱でマクロも変数も無かったので、それぞれVBAのを使ってた
今は、マクロも変数も有るでよ
0780名無しさん@そうだ選挙にいこう
垢版 |
2019/08/18(日) 21:05:47.70
>>770
C#でデータベースサーバ繋げてバリバリとビルド、コンパイル、パッケージできるなら
それでいいじゃん。
うちら、本業が事務とか、売り物の製造とか、販売営業で
ビルドはサボりと同義で、
コソコソやってるんだから。

ところで私は、コード検索はモーダルウィンドウにして、例えば
商品名をキーにして
google検索ライクにキーワードをスペース区切りで打たせて、
リストを見せ、
okボタンでコードを埋め込むのを
どの管理ツールにも使い回してる。
この形式だと、一般従業員があまり迷わない。
0781名無しさん@そうだ選挙にいこう
垢版 |
2019/08/18(日) 22:02:23.17
>>764がやりたいのは多段コンボボックスとかじゃなくてこれじゃろ

入力するデータを選択する検索フォームの作成
http://gyoumuka.work/?p=528
0782名無しさん@そうだ選挙にいこう
垢版 |
2019/08/18(日) 23:03:51.42
教えてください。
エクセルの表をアクセスのテーブルにインストールしたところ、
「すべてのデータをテーブルに追加できませんでした」と出てきますが、その下に
「キー違反のため、0件のレコードが失われ、0件のレコードがが削除されました」とあります。
中をみたら、とくに問題なくインポートできているようです。

これ、気にする必要あるでしょうか?
0783名無しさん@そうだ選挙にいこう
垢版 |
2019/08/19(月) 08:09:21.43
>>782
たぶん欠落は生じてない。
エラーで除外したデータがあるときは別に自動でテーブルを生成する仕様だったと思うので、
それが存在するかチェック。
0784名無しさん@そうだ選挙にいこう
垢版 |
2019/08/19(月) 08:13:10.06
> これ、気にする必要あるでしょうか?

気になっちゃうだろ
レコード数を比較すれば安心できるだろ
0785名無しさん@そうだ選挙にいこう
垢版 |
2019/08/19(月) 08:24:39.23
気にする必要があるか?への答えなら、気にするべきだと思うわ
自分の作業中にそんなんでたら、たとえデータ数があっていても、
そのメッセージがなくなるまでデータをチェックして、原因を特定する

100万件のデータでも分割していけば20回で少なくとも1つの
原因データを特定できるんだし
0788名無しさん@そうだ選挙にいこう
垢版 |
2019/08/19(月) 16:33:49.18
良く有る話
そもそもExcelで二重データのチェックなんてVBAでチェックルーチン作っておかないと、こういう間違いが発生する
ゆえにExcelをデータベースの代わりに使うって間違いって事
0790名無しさん@そうだ選挙にいこう
垢版 |
2019/08/19(月) 21:19:25.53
テーブルに通貨型でフィールド作って「単価×数量×1.08」で結果を帳票出力してる
この場合、書式を「通貨」にしとけば四捨五入されてるみたいだけどこれって偶数丸めなのかな?

そもそも消費税の計算で偶数丸めってありなの?
0796名無しさん@そうだ選挙にいこう
垢版 |
2019/08/22(木) 20:11:05.74
>>773
レコードソースをイジるのメンテナンス性おちるからやらない
それよりフィルタで絞り込むクエリをソースにする
0797名無しさん@そうだ選挙にいこう
垢版 |
2019/08/22(木) 20:21:20.71
>>787
主キーはオートナンバー一択
そう考えていた時期が俺にもありました
0798名無しさん@そうだ選挙にいこう
垢版 |
2019/08/22(木) 20:30:39.34
主キー(main key)っていうのは、文字列フィールドでも、複数のフィールドの組み合わせでも構わないと
知ったときの驚き

初心者がやらかすのはテーブル同士の関連を示すリレーションシップを設定し忘れること
これやらないと想定したとおりのデータベース構造が出来なくなって詰まる
0799名無しさん@そうだ選挙にいこう
垢版 |
2019/08/22(木) 20:47:18.95
>>798
用途にもよる。大手ベンダーが作ったERPのsqlserver覗いてみたら
リレーションマップは一つも作ってなかった。
伝票は商品名も含めて、わざと冗長的な記録をするので
参照整合性はむしろ邪魔になるのかもしれない。
0800名無しさん@そうだ選挙にいこう
垢版 |
2019/08/22(木) 21:12:50.71
>>782
Excelの表は正規化されてたのか?
正規化されてない表をテーブルに入れるとそういうエラーを出すことがあるな。
セル結合してるとか、表の題名をセルに入れているとか、同じフィールド名が複数あるとか
0803名無しさん@そうだ選挙にいこう
垢版 |
2019/08/22(木) 22:44:05.76
参照整合性ないとリレーショナルデータベースにならないよ
エクセルみたいなフラットベースの2次元データで良ければ、エクセルで良いじゃん
データの3次元構造を支えるのが参照整合性
0804名無しさん@そうだ選挙にいこう
垢版 |
2019/08/22(木) 22:44:25.74
>>799
>伝票は商品名も含めて、わざと冗長的な記録をするので
データファイルが無駄に大きくなりそうな気がする。
機能拡張やメンテナンスを含めて考えると、参照整合性を設定しておくべきかと
各テーブルに主キーを設定して、
各主キーに対応するフィールドにもつテーブルを用意してリレーションシップしとけば
後々面倒ないやん。
0805名無しさん@そうだ選挙にいこう
垢版 |
2019/08/22(木) 23:01:12.57
>>801
商品名がマスターに無いものでも扱うって状況が意味不明
0806名無しさん@そうだ選挙にいこう
垢版 |
2019/08/22(木) 23:07:29.47
1対多対応のリレーションシップでは
多になる方のが運用でレコードが追加されていくテーブルで、そこには1になる方の主キーだけが記録される。
だからレコード数が増えてもデータファイルの大きさは必要最小限になる。

商品コードと商品名では商品コードの方がデータ量は少ない
それがコード化の意義の一つなんだがなあ。
これ基礎だと思ってたんだが、そこからなのか?
0807名無しさん@そうだ選挙にいこう
垢版 |
2019/08/23(金) 01:16:41.64
>>806
だから用途による、と言ってるでしょう。
商品番号1 商品名A
で、リレーショナルデータベースの基本通りに
明細テーブルに 商品番号1、20個 だけ保管して
あとはマスターから引っ張り
商品番号1、商品マスタ.商品名”A”、20個、
商品マスタ.単価¥100、 金額=商品マスタ.単価×20個
なんて作ってごらんなさい。
単価は永久ですか? 全オペレーターが商品番号1の
内容・商品名をBに変えないと言い切れますか。
税法上も取引履歴の長期保管は義務なのに
参照表示により、記録が変わってしまっては役に立ちません。
伝票系で私が参照整合張るのは、
ヘッダー項目と明細項目で伝票番号をキーに親子関係を
結ぶときくらいですね。
0808名無しさん@そうだ選挙にいこう
垢版 |
2019/08/23(金) 05:50:56.56
>>807
単価は商品テーブルじゃなくて単価テーブルに置くやろ
んで単価テーブルには単価と有効期限を設定しとく
処理日と有効期限を比較して単価を特定
0809名無しさん@そうだ選挙にいこう
垢版 |
2019/08/23(金) 07:54:22.21
リレーションシップはテーブルだけじゃなくて
選択クエリとテーブル、選択クエリ同士でも可能
0810名無しさん@そうだ選挙にいこう
垢版 |
2019/08/23(金) 08:22:14.77
>>808
企業間取引だと得意先別単価、
見積単価は存在するので、そうですね、
別個テーブルが必要です。このテーブルとマスターの参照整合は必要でしょう。
ただ、実績系には売上額の直接埋め込みも必要です。
企業間取引だと、条件値引きが頻繁に発生するので
履歴を見るたびに複雑なクエリーやvbaを回すのは処理のリソースを食うからです。
0811名無しさん@そうだ選挙にいこう
垢版 |
2019/08/23(金) 18:24:35.49
Accessの主キー項目を文字列で指定出来るのはアレとして

*得意先マスター
*商品マスター
*納入単価は得意先、商品毎に違うので納入価マスター

ぐらいは必要でしょうな

で、売上トランザクションは得意先、商品、納入日、納入伝票番号毎に発生と

こんな感じ
0812名無しさん@そうだ選挙にいこう
垢版 |
2019/08/23(金) 18:30:56.86
単価テーブルを商品マスターに含める設計は難しいので商品コードと日付をキーに単価保持

条件等で値引きした結果はトランザクションとして売上計上されて実納入価は納入価マスターも作られる

値引き条件等はまた別のマスターとして値引きマスター、とかで保持する
0815名無しさん@そうだ選挙にいこう
垢版 |
2019/08/25(日) 14:58:34.32
>>813 リンクしか使わない。
本物のデータベースサーバーなら
blob格納でもいいけど
Accessファイルに入れると異様にファイルサイズでかくなるので。
Accessってファイルサイズに制限あったっけ?
0816名無しさん@そうだ選挙にいこう
垢版 |
2019/08/25(日) 15:54:30.20
>>815
確か2GB
大きくなったらMySQLとかにデータ移して
access はフロントエンドだけにするのが妥当
複数のaccdbにテーブル分けて保管してリンクでまとめたりunionしたりで当座しのぐのも有りか?
0817名無しさん@そうだ選挙にいこう
垢版 |
2019/08/25(日) 16:00:41.12
知子の情報っていう最適な文書DBがありましてね
かなり歴史のあるソフトです
0818名無しさん@そうだ選挙にいこう
垢版 |
2019/08/25(日) 17:55:43.30
2次元配列型の入力フォームを作成しようとしていますが困ってます。

作りたいフォーム

項目 4月 5月 … 3月 ←ヘッダー
あれ 10  8 … 9
それ 15  12 … 7



テーブルへの格納結果

項目 月 数字
あれ 4月 10
あれ 5月 8
あれ …  …
あれ 3月 9
それ 4月 15
それ 5月 12
それ …  …
それ 3月 7

わかる方いらっしゃいましたら教えて下さい。よろしくお願いします。。
0820名無しさん@そうだ選挙にいこう
垢版 |
2019/08/25(日) 18:10:50.48
主キーを2つにしましたが、伝票型やリスト型の入力方式しか出てこなくて…

4月とかの月情報は、入力フォーム上に先に出しといて、項目と数字だけを入力させたいんですが、なかなか…
0821名無しさん@そうだ選挙にいこう
垢版 |
2019/08/25(日) 20:23:39.70
>>818
excel漬けの人が陥りやすい罠なんだよね。
書いてくれた通り、格納するテーブルの形式がデータベースの正しい在り方で
入力フォームを作ろうとしている形式は本来、ピボットとかtransformと言われる結果の「見せ方」なんですね。
テーブルの形式でそのまま打たせるのが正しい。
フォームの見本通り、
どーしてもどーしても作りたいですか?
月には年は関係ないのですか?
それ次第で答えを考えるか決める。たぶんvba使うことになります。
0827名無しさん@そうだ選挙にいこう
垢版 |
2019/08/25(日) 21:20:13.79
私は経理担当で、予算を人に入力させたいんですが、「あれ」「それ」みたいな項目が100近くあるので、100だと12ヶ月で1200行近くになります。

エクセルの2次元→1次元化は実際運用しているんですが、壊れやすいからアクセスで試すとのことでして。
0831名無しさん@そうだ選挙にいこう
垢版 |
2019/08/25(日) 21:42:26.02
>>825
ありがとうございます。
これと同じことはEXCELでやってまして。今回はアクセスのフォーム→DB格納で、同様の結果を求めたいのです。
0832名無しさん@そうだ選挙にいこう
垢版 |
2019/08/25(日) 21:44:51.70
>>821
ありがとうございます。
年は関係ありません。
VBAありきでもぜんぜん構いません。

こういった経験を過去されていれば、お知恵を借りたかったもので。
0833名無しさん@そうだ選挙にいこう
垢版 |
2019/08/25(日) 21:47:03.84
>>827
予算ならExcelで運用する方がいいと思うよ
一通り入力してからあれこれ操作するだろうから、DBよりも表計算の方が向いてるよ
0835名無しさん@そうだ選挙にいこう
垢版 |
2019/08/25(日) 21:50:50.34
>>833
エクセルでずっとやってきてて、データテーブル=入力フォームみたいな形にしていました。

でもしょっちゅう壊されるので、フォームとテーブル切り分けてフォームを作るか、と。

→エクセルのフォームくそダサいからアクセスのほうがよくね?と。
0836名無しさん@そうだ選挙にいこう
垢版 |
2019/08/25(日) 21:53:20.63
ちなみにデータを全て集めると数万行になるので、エクセルよりもアクセスのほうがデータベース格納がまだマシだろうと。
0837名無しさん@そうだ選挙にいこう
垢版 |
2019/08/25(日) 21:55:15.07
>>835
入力データは何を元にしてるの?
0838名無しさん@そうだ選挙にいこう
垢版 |
2019/08/25(日) 22:01:24.95
>>836
毎年何万行のデータをゼロスタートで入力してるのか、大部分が前年と同じで部分的に手を加えるのかで変わってくる
部分的に手を加えるだけなら、前年度データ(確定)+差分データ(毎年入力)で集計するような形でDBで運用できると思う
0839名無しさん@そうだ選挙にいこう
垢版 |
2019/08/25(日) 22:09:16.95
>>818
一旦、項目、4月、5月...3月というフィールドのテーブル作って入力させて
そのテーブルから目的のテーブルに追記するコードをVBAで
組めば出来なくもない
いきなりは無理

月の並びが縦方向なら
項目名を入力させた後で
それと4月から3月までの12レコードを追加クエリで生成して、それを帳票フォームで開いて数日後を入力させる方法で目的の格納結果は得られる
ヒント
Accessの追加クエリでは値を指定しないフィールドにはnull が入る
0840839
垢版 |
2019/08/25(日) 22:11:31.87
数日後 ×
数字を ○
0841名無しさん@そうだ選挙にいこう
垢版 |
2019/08/25(日) 22:22:14.28
>>837
売上予測とか経費予測とかですね。
手入力してもらってます。

>>838
前年予算はほぼ使わないですかね。どちらかというと実績を参考に作りますが、実績との差分を取ることもデータ粒度の問題があったり政策的な問題も出るので、今年は計画してません。
0842名無しさん@そうだ選挙にいこう
垢版 |
2019/08/25(日) 22:27:37.93
>>841
あちこちの部署に入力フォームをばらまいて、各自で入力してもらうって感じ?
0844名無しさん@そうだ選挙にいこう
垢版 |
2019/08/25(日) 22:29:24.45
>>839
ありがとうございます。
入力サイドには、直感的にというか慣れ親しんだインターフェイスで提供したいんです。

皆様ありがとうございます。
リアクションを拝見して、フォームUIが残念なのは諦めて、エクセルVBAとSQLサーバで対応したほうが現実的な気がしてきました。
0846名無しさん@そうだ選挙にいこう
垢版 |
2019/08/25(日) 22:34:51.60
>>818
追加クエリは素直に12個作って
項目テキストボックスのイベントでマクロのクエリの実行で連続して動かせば良いかと
0847名無しさん@そうだ選挙にいこう
垢版 |
2019/08/25(日) 22:40:15.93
>>845
844で言っちゃってるけど、サーバー建てる方がいいと思うよ
SQLサーバーでもいいし、postgresql+PHPでも実現できるはず
あと、長期的に見ればHTMLのフォームに慣れてもらっておく方がいいと思う
0848名無しさん@そうだ選挙にいこう
垢版 |
2019/08/25(日) 22:44:08.86
>>844
どうしてもいきなり目的のテーブルに追記したいというなら
レコードソースを指定しないで
非連結のテキストボックスを横に並べた単票フォーム
0849848
垢版 |
2019/08/25(日) 22:50:00.48
>>848の続き
を作って各月のテキストボックスのイベントで追加クエリを実行するという方法もある

ただこの方法は入力した数字の修正が面倒になるよ
0850821
垢版 |
2019/08/26(月) 00:59:29.00
>>832 これから分けてベタベタ貼ります。
テーブル設計編
1.「なんたら」のマスターテーブル(テーブル名 M)
なんたらID(UniqueKey),なんたら項目
2.ワークテーブル(W)
自動ID,なんたらID,1月,....12月

3.実際に欲しいテーブル(J)
月,なんたらID,Data
4.ワーク用のダミーテーブル(Dummy)
月,なんたらID,Data
-->作ったら、月にだけ、1月から12月まで書き込む
■ このスレッドは過去ログ倉庫に格納されています

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