Access総合相談所 28
■ このスレッドは過去ログ倉庫に格納されています
ACCESSに関する質問はこちらへ
▼━ 質問のしかた ━━━━━━━━━━━━━━━━━━━━
★ OS、ACCESSのバージョンを明記してください。
★ 質問内容は具体的に書いてください。
・何がしたいのか
・どんな処理を試したか
・動作状況など駄目な理由
テーブル/フォームの構成、クエリ、VBAの内容など差し支えない
範囲で詳しく書くと、早く回答が得られるかもしれません。
図解があれば尚良し。
聞き返さなくても詳細が把握できる質問が望ましいです。
★ 事前にヘルプ・Google等で調べられる範囲は調べてください。
大概の疑問は検索することで解決します。
★ アドバイスを貰ったら、必ず経過・結果の報告をして下さい。
ギブアンドテイクで情報を共有しましょう。
▼━質問テンプレ ━━━━━━━━━━━━━━━━━
【 システム環境 】 Windows**, Access**
【 VBAが使えるか 】 はい・いいえ
【 VBAでの回答 】 可・否
【 検索キーワード 】 Googleやヘルプでの検索キーワード
前スレ
Access総合相談所 27
http://mevius.5ch.net/test/read.cgi/bsoft/1424828244/ >>746
資格は持っていなくても税金の申告は出来ます。
法人ならば会計責任者の申告として社員が申告書を作成するし、
個人事業主なら、本人の申告として納税する。
どっちにしても税務署はいつでも相談に乗ってはくれる。 >>749
公認会計士が税理士業務を行うには、税理士会に入会して税理士登録をしなければならない。
ま、税理士の嫌がらせだな。 2019.8月のWindows UPDATEでVBS,VBSが動かなくなってる 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 リンク先のスレでは、中の人が直すっていってる
ダミーでいいからParamArrayにパラメータ渡せば回避できるし
うちではやらないコーディングなので問題なかった
devsによる半年前からのレビューは今回も役に立ってないんだな しょぼい質問ですいませんが、ウインドウズ上でうごいてるDBMSってなんなのでしょうか?
オラクルとかSQL?
アクセスというのは、単なるアプリケーションでDBMSではないの? >>758
SQLSERVER の mdf も、オラクルの dbf も、ただのファイルですね >>759
それらは管理サービスが動いてますよね?? >>760
Access は JET が動いてますよ Accesは ACEデータベースエンジンに、連結フォームと連結レポートとマクロとVBAが付属しています たとえば商品マスターテーブルに100件以上ある場合
明細フォーム入力時にコンボボックスから商品コードを選んで入力するのに探すのが大変
Excelのフィルタだと検索ボックスが用意されてるけどAccessにはないですよね?
みんなどうやって解決してるんでしょうか? 商品マスタを階層構造にして
コンボボックスにクエリかますの。 階層構造とは大ジャンル−小ジャンルのように分けるということですか? >>764
コンボボックスに、最近使用した順で表示する そんなの創意工夫やで
コンボ2個構成でもいいし、マスターの構造上面倒くさけりゃ
検索ボックスとコンボならべて検索ボックスに入力された文字列と一致するのをコンボに表示するでもよし
運用上面倒くさけりゃもっと考えて(続きを読むには月額購読) そこまでやるならVBAではなくC#で、とも思うのですが
つい最近のアップデートでVBAは動作しなくなりましたし C#がAccess VBAより高等なことが出来るということは全くないぞ
SQL Server使うならライセンス料などコストも余計にかかる Access97あたりから入門したけど(今は使っていない)、
当時の入門書では、割と必須項目だったような。
参照される既存の商品マスタを
別途、Excelで予め階層構造に作り直しておいて、
大・中・小項目から順次クエリで絞り込むコンボボックスって、
VBA使わなくても、クエリのウィザードで作ってた。
商品マスタに新レコードを階層的に追加することも出来た。 >>772
記憶があやふやだけど、コンボボックスのレコードソースを変更するのにVBAが必要じゃなかったけ? 実現するのにVBAを1〜2行書くだけで済むが
それが嫌なら別の手段を取るのも自由だ
好きにしたまえ
この話はそれで終了だろ >>773
大項目のコンボボックスの選択内容が変更されたときに、
中項目のコンボボックス用クエリを更新する
というようなことは、VBAを使わなくてもウィザードで出来たかと。 コンボ2の値ソースに
SELECT 大項目,小項目 FROM 商品マスタ WHERE (((大項目)="コンボ1"));
とすればいけるが、コンボ1を変えたときにリクエリしないといけないんでそこはVBAでやるしかない 再クエリはマクロで出来るんだけど
accessは、かつては超貧弱でマクロも変数も無かったので、それぞれVBAのを使ってた
今は、マクロも変数も有るでよ 分類が作れなくてフリガナの頭文字を別フィールドに入れてそれを項目にしてた事ある Access is NOT dead, (neither is VBA)
Catch my latest podcast on why Access is not dead! https://accessusergroups.org/microsoft-access-podcast/ [...] >>770
C#でデータベースサーバ繋げてバリバリとビルド、コンパイル、パッケージできるなら
それでいいじゃん。
うちら、本業が事務とか、売り物の製造とか、販売営業で
ビルドはサボりと同義で、
コソコソやってるんだから。
ところで私は、コード検索はモーダルウィンドウにして、例えば
商品名をキーにして
google検索ライクにキーワードをスペース区切りで打たせて、
リストを見せ、
okボタンでコードを埋め込むのを
どの管理ツールにも使い回してる。
この形式だと、一般従業員があまり迷わない。 >>764がやりたいのは多段コンボボックスとかじゃなくてこれじゃろ
入力するデータを選択する検索フォームの作成
http://gyoumuka.work/?p=528 教えてください。
エクセルの表をアクセスのテーブルにインストールしたところ、
「すべてのデータをテーブルに追加できませんでした」と出てきますが、その下に
「キー違反のため、0件のレコードが失われ、0件のレコードがが削除されました」とあります。
中をみたら、とくに問題なくインポートできているようです。
これ、気にする必要あるでしょうか? >>782
たぶん欠落は生じてない。
エラーで除外したデータがあるときは別に自動でテーブルを生成する仕様だったと思うので、
それが存在するかチェック。 > これ、気にする必要あるでしょうか?
気になっちゃうだろ
レコード数を比較すれば安心できるだろ 気にする必要があるか?への答えなら、気にするべきだと思うわ
自分の作業中にそんなんでたら、たとえデータ数があっていても、
そのメッセージがなくなるまでデータをチェックして、原因を特定する
100万件のデータでも分割していけば20回で少なくとも1つの
原因データを特定できるんだし 「キー違反…」って主キーにインポートしたとき出るような気がする
気がするってだけ キー違反は主キーに同じ値があるときにでる
主キーはインポートしないで自動作成が基本かと 良く有る話
そもそもExcelで二重データのチェックなんてVBAでチェックルーチン作っておかないと、こういう間違いが発生する
ゆえにExcelをデータベースの代わりに使うって間違いって事 テーブルに通貨型でフィールド作って「単価×数量×1.08」で結果を帳票出力してる
この場合、書式を「通貨」にしとけば四捨五入されてるみたいだけどこれって偶数丸めなのかな?
そもそも消費税の計算で偶数丸めってありなの? >>790
> この場合、書式を「通貨」にしとけば四捨五入されてるみたい
おい! >>790
消費税の1円未満の端数は、
税法で切り上げか切り捨てか選択出来たような?
ほとんどの事業者は切り捨てみたいだけど。 どうでもいいことだけど、四捨五入にJISの規格があるって知った? >>773
レコードソースをイジるのメンテナンス性おちるからやらない
それよりフィルタで絞り込むクエリをソースにする >>787
主キーはオートナンバー一択
そう考えていた時期が俺にもありました 主キー(main key)っていうのは、文字列フィールドでも、複数のフィールドの組み合わせでも構わないと
知ったときの驚き
初心者がやらかすのはテーブル同士の関連を示すリレーションシップを設定し忘れること
これやらないと想定したとおりのデータベース構造が出来なくなって詰まる >>798
用途にもよる。大手ベンダーが作ったERPのsqlserver覗いてみたら
リレーションマップは一つも作ってなかった。
伝票は商品名も含めて、わざと冗長的な記録をするので
参照整合性はむしろ邪魔になるのかもしれない。 >>782
Excelの表は正規化されてたのか?
正規化されてない表をテーブルに入れるとそういうエラーを出すことがあるな。
セル結合してるとか、表の題名をセルに入れているとか、同じフィールド名が複数あるとか いつもマスタに書かれてる商品名通りにはならんからな、伝票って 参照整合性ないとリレーショナルデータベースにならないよ
エクセルみたいなフラットベースの2次元データで良ければ、エクセルで良いじゃん
データの3次元構造を支えるのが参照整合性 >>799
>伝票は商品名も含めて、わざと冗長的な記録をするので
データファイルが無駄に大きくなりそうな気がする。
機能拡張やメンテナンスを含めて考えると、参照整合性を設定しておくべきかと
各テーブルに主キーを設定して、
各主キーに対応するフィールドにもつテーブルを用意してリレーションシップしとけば
後々面倒ないやん。 >>801
商品名がマスターに無いものでも扱うって状況が意味不明 1対多対応のリレーションシップでは
多になる方のが運用でレコードが追加されていくテーブルで、そこには1になる方の主キーだけが記録される。
だからレコード数が増えてもデータファイルの大きさは必要最小限になる。
商品コードと商品名では商品コードの方がデータ量は少ない
それがコード化の意義の一つなんだがなあ。
これ基礎だと思ってたんだが、そこからなのか? >>806
だから用途による、と言ってるでしょう。
商品番号1 商品名A
で、リレーショナルデータベースの基本通りに
明細テーブルに 商品番号1、20個 だけ保管して
あとはマスターから引っ張り
商品番号1、商品マスタ.商品名”A”、20個、
商品マスタ.単価¥100、 金額=商品マスタ.単価×20個
なんて作ってごらんなさい。
単価は永久ですか? 全オペレーターが商品番号1の
内容・商品名をBに変えないと言い切れますか。
税法上も取引履歴の長期保管は義務なのに
参照表示により、記録が変わってしまっては役に立ちません。
伝票系で私が参照整合張るのは、
ヘッダー項目と明細項目で伝票番号をキーに親子関係を
結ぶときくらいですね。 >>807
単価は商品テーブルじゃなくて単価テーブルに置くやろ
んで単価テーブルには単価と有効期限を設定しとく
処理日と有効期限を比較して単価を特定 リレーションシップはテーブルだけじゃなくて
選択クエリとテーブル、選択クエリ同士でも可能 >>808
企業間取引だと得意先別単価、
見積単価は存在するので、そうですね、
別個テーブルが必要です。このテーブルとマスターの参照整合は必要でしょう。
ただ、実績系には売上額の直接埋め込みも必要です。
企業間取引だと、条件値引きが頻繁に発生するので
履歴を見るたびに複雑なクエリーやvbaを回すのは処理のリソースを食うからです。 Accessの主キー項目を文字列で指定出来るのはアレとして
*得意先マスター
*商品マスター
*納入単価は得意先、商品毎に違うので納入価マスター
ぐらいは必要でしょうな
で、売上トランザクションは得意先、商品、納入日、納入伝票番号毎に発生と
こんな感じ 単価テーブルを商品マスターに含める設計は難しいので商品コードと日付をキーに単価保持
条件等で値引きした結果はトランザクションとして売上計上されて実納入価は納入価マスターも作られる
値引き条件等はまた別のマスターとして値引きマスター、とかで保持する 文書管理とか、やってる人いますか?
バイナリファイルをDBに入れるのってどうなの? 文書は文書として別に保存してそのファイルをリンクしてアドレスを管理していくのが基本では >>813 リンクしか使わない。
本物のデータベースサーバーなら
blob格納でもいいけど
Accessファイルに入れると異様にファイルサイズでかくなるので。
Accessってファイルサイズに制限あったっけ? >>815
確か2GB
大きくなったらMySQLとかにデータ移して
access はフロントエンドだけにするのが妥当
複数のaccdbにテーブル分けて保管してリンクでまとめたりunionしたりで当座しのぐのも有りか? 知子の情報っていう最適な文書DBがありましてね
かなり歴史のあるソフトです 2次元配列型の入力フォームを作成しようとしていますが困ってます。
作りたいフォーム
項目 4月 5月 … 3月 ←ヘッダー
あれ 10 8 … 9
それ 15 12 … 7
…
…
テーブルへの格納結果
項目 月 数字
あれ 4月 10
あれ 5月 8
あれ … …
あれ 3月 9
それ 4月 15
それ 5月 12
それ … …
それ 3月 7
わかる方いらっしゃいましたら教えて下さい。よろしくお願いします。。 主キーを2つにしましたが、伝票型やリスト型の入力方式しか出てこなくて…
4月とかの月情報は、入力フォーム上に先に出しといて、項目と数字だけを入力させたいんですが、なかなか… >>818
excel漬けの人が陥りやすい罠なんだよね。
書いてくれた通り、格納するテーブルの形式がデータベースの正しい在り方で
入力フォームを作ろうとしている形式は本来、ピボットとかtransformと言われる結果の「見せ方」なんですね。
テーブルの形式でそのまま打たせるのが正しい。
フォームの見本通り、
どーしてもどーしても作りたいですか?
月には年は関係ないのですか?
それ次第で答えを考えるか決める。たぶんvba使うことになります。 文書管理に向いてるDBあったぞ
モンゴDBだっけ? >>821
ドヤ顔で語ってるけど、
こいつの作るフォームってユーザーから総スカン食らいそう >>818
Excelのピボットテーブル・ウィザードだと変換は簡単なんだけど。
ここにVBAも書いてあるけど、Accessでのヒントになるかな?
https://www.shegolab.jp/entry/excel-macro-flatten-matrix やりたいことはわかったけど、格納結果のまま素直に入力したほうが
入力者にとってラクだと思う 私は経理担当で、予算を人に入力させたいんですが、「あれ」「それ」みたいな項目が100近くあるので、100だと12ヶ月で1200行近くになります。
エクセルの2次元→1次元化は実際運用しているんですが、壊れやすいからアクセスで試すとのことでして。 >>825
ありがとうございます。
これと同じことはEXCELでやってまして。今回はアクセスのフォーム→DB格納で、同様の結果を求めたいのです。 >>821
ありがとうございます。
年は関係ありません。
VBAありきでもぜんぜん構いません。
こういった経験を過去されていれば、お知恵を借りたかったもので。 >>827
予算ならExcelで運用する方がいいと思うよ
一通り入力してからあれこれ操作するだろうから、DBよりも表計算の方が向いてるよ >>830
管理工学研究所というところのソフトですね?アクセスで、という縛りがあるので…。 >>833
エクセルでずっとやってきてて、データテーブル=入力フォームみたいな形にしていました。
でもしょっちゅう壊されるので、フォームとテーブル切り分けてフォームを作るか、と。
→エクセルのフォームくそダサいからアクセスのほうがよくね?と。 ちなみにデータを全て集めると数万行になるので、エクセルよりもアクセスのほうがデータベース格納がまだマシだろうと。 >>836
毎年何万行のデータをゼロスタートで入力してるのか、大部分が前年と同じで部分的に手を加えるのかで変わってくる
部分的に手を加えるだけなら、前年度データ(確定)+差分データ(毎年入力)で集計するような形でDBで運用できると思う >>818
一旦、項目、4月、5月...3月というフィールドのテーブル作って入力させて
そのテーブルから目的のテーブルに追記するコードをVBAで
組めば出来なくもない
いきなりは無理
月の並びが縦方向なら
項目名を入力させた後で
それと4月から3月までの12レコードを追加クエリで生成して、それを帳票フォームで開いて数日後を入力させる方法で目的の格納結果は得られる
ヒント
Accessの追加クエリでは値を指定しないフィールドにはnull が入る >>837
売上予測とか経費予測とかですね。
手入力してもらってます。
>>838
前年予算はほぼ使わないですかね。どちらかというと実績を参考に作りますが、実績との差分を取ることもデータ粒度の問題があったり政策的な問題も出るので、今年は計画してません。 >>841
あちこちの部署に入力フォームをばらまいて、各自で入力してもらうって感じ? >>839
ありがとうございます。
入力サイドには、直感的にというか慣れ親しんだインターフェイスで提供したいんです。
皆様ありがとうございます。
リアクションを拝見して、フォームUIが残念なのは諦めて、エクセルVBAとSQLサーバで対応したほうが現実的な気がしてきました。 >>818
追加クエリは素直に12個作って
項目テキストボックスのイベントでマクロのクエリの実行で連続して動かせば良いかと >>845
844で言っちゃってるけど、サーバー建てる方がいいと思うよ
SQLサーバーでもいいし、postgresql+PHPでも実現できるはず
あと、長期的に見ればHTMLのフォームに慣れてもらっておく方がいいと思う >>844
どうしてもいきなり目的のテーブルに追記したいというなら
レコードソースを指定しないで
非連結のテキストボックスを横に並べた単票フォーム >>848の続き
を作って各月のテキストボックスのイベントで追加クエリを実行するという方法もある
ただこの方法は入力した数字の修正が面倒になるよ >>832 これから分けてベタベタ貼ります。
テーブル設計編
1.「なんたら」のマスターテーブル(テーブル名 M)
なんたらID(UniqueKey),なんたら項目
2.ワークテーブル(W)
自動ID,なんたらID,1月,....12月
3.実際に欲しいテーブル(J)
月,なんたらID,Data
4.ワーク用のダミーテーブル(Dummy)
月,なんたらID,Data
-->作ったら、月にだけ、1月から12月まで書き込む ■ このスレッドは過去ログ倉庫に格納されています