Access総合相談所 30
■ このスレッドは過去ログ倉庫に格納されています
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総合相談所 29
https://mevius.5ch.net/test/read.cg/bsoft/1569236545/ フォームに
フィールドA
フィールドB
があって
Aに入った値をキーにあるマスタテーブルを参照抽出したレコードの別のカラムの値だけフィールドBに入力できるように制約かけたいんだが、どうすればいい?
制約外のデータがはいれば、その値は入力できませんのメッセージを出すとかする予定。 iifとか使わず単純に
(IsNull(forms![フォーム]![種類]) or [種類]=forms![フォーム]![種類]))
じゃだめなの?
条件が複数ならコレをandでつなげてくだけ >>367
>>365
複数の条件をORで結ぶかANDで結ぶかは状況次第 >>366
その参照抽出の選択クエリの作り方はさすがに分るだろうから省略
フィールドBの値集合ソースにそのクエリ名を入れる
(クエリ名の代わりにそのクエリのSQL文でもええよ。)
ただし、そのままだとフィールドAを入れたあとにフォームを開きなおさないと
そのクエリが実行されないので、
フィールドAの更処後処理のイベントで
マクロなら再クエリ
あるいは
イベントプロシージャならDoCmd.Requery
を入れる
そうすると、フィールドAの値が確定したあと抽出クエリが実行され
フィールドBのレコードソースが更新されるわけやね
詳しくは>>358か>>360のリンク先でも読めば良いかと >>369
まちがえた
× レコードソース
○ 値集合ソース >>367
(true or false)=true
なのでアリなんじゃないでしょうか。
プログラミング関連のブログで
if (A=B)=true
がムカつく、と書いてた人もいるので
単純にbooleanを出力することが自明なら、余計な記述はしないことも大事ですね。 >>370
値集合で設定すれば
入力制約できるの?
選択肢をコンボボックスとかでリスト表示したいわけではない >>371
値が入力されているなら…みたいな前提条件を式に書く場合、IMP(論理包含)というそれ用の演算子があるのでそれ使う手もあるよ
IIFよりスッキリするけど、知名度低い上に多言語にはなかったりするのが難点 >>372
>値集合で設定すれば入力制約できるの?
できるよ。リストボックスならリスト以外は入らないし
コンボボックスでも入力チェックを「はい」にすれば
リスト以外は入れられない。この場合、リストにある文字列をキー入力しても
リストから選んでも同じ
ちなみに、リストボックス・コンボボックスは、そのコントロールに
フォーカスがあるときにALT+↓でもリストを選べる(Windows版では)
慣れるとマウスでいちいち▲や▼をクリックするの面倒になるしね。
>選択肢をコンボボックスとかでリスト表示したいわけではない
テキストボックスで、リストにある選択肢をわざわざ再入力するん?
無駄なことかと マスタテーブルを対象に
タブ区切りファイルで洗い替えしたい。
特定のカラムが合致するレコードをキーに洗い替えたい。
フォームにあるボタンを押せば実行されるようにしたい。
どうすればいい? >>376
ボタンで云々は機能の集合体とフローづくりなので、その前段階の各作業はできますか?
手動で
csvでエスクポートはできますか。
クエリーでしぼり込みはできますか。
できたら、後はスクリプトで組み合わせるだけです。
ファイルダイアログだけ標準機能じゃないのでちょっと面倒だけど、
25年前のaccess95登場からネットで紹介しつくされてる技術なので、自力で探せると思います。 >>376
洗い替えってテーブルのフィールド構成だけ残して全データ削除、オートナンバーリセットって事で
特定のレコードの値だけ変更したいなら更新になるよ
その更新クエリ作ってをボタンクリックで起動させたいという事ですね?
タブ区切りファイルってtsvの事っすね?
そのリンクをテーブルとしてインポート出来るっすか? 検索したけど見つからず
フォームの値をクエリの抽出条件にしてるんだが、
フォーム項目A以下とB以上
抽出条件
A orBにすれば空白じゃないときはうまくいくが
どちらかフォームの項目が空白のときは、全件抽出されてしまう。
上手い書き方がわからない 日付フィールドをレポートで表示させるとバラバラの並びになります
グループか追加から昇順降順どちらでもよくわからない並びになります
8/20
8/28
9/15
6/20
などです
原因わかりますか?
グループフッターもうまく機能しません 並び替えとグループは別なのか
一緒に書いてあったからわからなかった ACCESSにはExcelにあるXlookupみたいな関数はないのでしょうか?バージョンは365です。 dlookupというのはある
検索系統はSQLを使えば大体の事は出来るぞ SELECT *
FROM テーブルX as T
WHERE ... and T.カラムA=テーブルX.カラムA;
パラメータ入力が求められます、なぜでしょうか
T.カラムA=テーブルX.カラムA
TはテーブルXなので T.カラムA=テーブルX.カラムA という記載の意味が
わからないです
どなたかご教示お願いします >>386
>パラメータ入力が求められ
不明な変数があるからその値を入れてくれって意味なのは分るかな?
そのダイヤログに表示されている変数は何?
>TはテーブルXなので T.カラムA=テーブルX.カラムA という記載の意味が
想像するにカラムAはフィールド名だろうね。
テーブルXあるカラムAフィールドを指し示してるのだろう
そのフィールドがほんとうにあるか確認してみては
それ以上は情報が無いのでなんともいえない >>386
> TはテーブルXなので T.カラムA=テーブルX.カラムA
これは同じテーブルの異なるレコードの値を比較するのに使う手だよ
その式の前にレコード移動を伴うアクションがあるはず >>385
SQL文のサブクエリ使うの常套句だよね >>391
>>388はダイヤログに表示されるパラメータが何かが分らんから聞いてるが
それを何も言ってないに等しいとか意味不明
このスレには君のような無能だけど批判ばかりするのが居るな
はっきりいって気色悪い >>391
あなたにそう見えるだけなので
そういう時は、言っている意味がわからないと
言った方がいいよ
あなたのレベルが低すぎる場合があるかも UIはみんな90年代みたいなままやってるの?
テキストボックスの角すら丸められないからなあ UIだけ別につくるのないの?
ファイルメーカーは高すぎて買う気がしない >>397
VisualStudio
個人なら無料版がある >>400
それだとACCESSのでよくない?
>>399
コーディングでUIつくるのはハードルたかいよね >>401
>>UIだけ別
って書いてるじゃん
VisualStudioでUI作ってたら手間もっとかかるだろ
それとも何かPythonやJavaでUI作るんか? >>402
ACCESSの貧弱なのじゃなくて、ってことだろ
Excelならほぼ同じじゃん
ファイルメーカーしかない >>403
FileMaker高いって書き込みしてるぞ
LibreOffice Baseしか無いなw そもそもなんでACCESSのUIはあんななんだろうな
win98くらいの設計にみえる windowsの基本UIコントロールだからであって、accessが作っているわけではない
UIコントロールまで作るとコストが上がるくせに、デザインの可否で揉める
スキン変更機能まで入れろやゴルァとなる UIの改善ニーズわかるわー。
古くさい、レスポシンブじゃない。
AndroidStudioでオブジェクトが上位要素や前後の相対でゴム紐のように繋がってるのもまた、かなり難解ではあったが。
デスクトップpcでAccessアプリ作ると、ノートpcの人から
「一画面に収まらないからスクロールめんどい」とか言われるねん。 Accessさんは、
オブジェクト数の上限を緩和するか、
参照設定をフルパスでなくてもできるようにしてくれたら
二十二世紀まで使う。
あ、テキストボックスのIMEコントロールが時々言うことを聞かなくなる。ATOKなんだけど。
タッチパネルUIが視野に入っているために文句を垂れている人は
Android環境で何かいい物を作ったらと思う。 >>410
自分は参照先ライブラリをaccdbファイルに同梱できるようにして欲しい
>IMEコントロールが..,
ATOKプロパティで、[入力・変換]タブ-[入力補助]-[特殊]シートの[入力欄の属性を参照する]のチェックを外すとどう? テキストボックス透明にできるんだから
まずは背景画像を1枚用意するところから始めよう チェックボックスやラジオボタンのサイズを変更できたら良い 表編集機能などを強化した「桐s」は、「桐スマートライセンス」でお使いいただける最新の「桐」です。
「桐s」をお使いになるには、「桐スマートライセンス」のいずれかの商品をお買い求めください。
リボンに対応
タブによる編集表の切り替え
Webビューによるインターネット連携機能
ズーム機能
コピー&ペースト機能の強化 >>417
Excelシート加工してデザイン
その上にボタンやラジオボタン配置する >>420
?
Excelシートにボタン貼り付けるんだよ
VBA Formじゃないよ >>421
Excelのシートの内容をAccessのフォームやレポートに移す方法を詳しく教えてください。 >>422
UIだけの話
レポートはAccess固有でしょ
Excelのシートを帳票に出来てもAccessのレポートと同じ事は出来ない
Excelシートは単票に向く
Accessレポートは連続帳票に向く
目的が違う 410です。
>>412
>ATOKプロパティで、[入力・変換]タブ-[入力補助]-[特殊]シートの[入力欄の属性を参照する]のチェックを外すとどう?
この設定初めて知りました。ありがとーございます。
チェックは元からOffになっていました。
OnとOff両方試したけど、発生条件が複雑らしく、出来たり出来なかったりでした。 >>423
Accessでは単票と帳票の2種類のレポートとフォームが作れる
Excelにはレポート無いんだよなあ
印刷用フォームは作れるけどね >>425
IME入力モードはオンではなくてひらがな
にしてる?
テーブルでIME入力モード設定したら
フォームでは設定不要
テーブルで設定してないならフォームで設定
昔のバージョンだとテーブルで設定出来んかったんよ
なのでこうなってる 410です。
IMEの切り替え、いつの間にか不具合が再現できなくなった。なぜだ。
2日ぐらい前にJUSTオンラインアップデートで再起動を促すメッセージが出たから何か更新したかな。 添付ファイルを使うと2GB行っちゃうな
参照で対応すればいいけど >>436
レコードサイズじゃなくて
accdbファイルの大きさ
凄く狭く感じるな 1対多のデータベースにExcelデータをインポートするときどうやってる?
Excelデータはその1対多のフィールドを1行ですべてもってて日付とその他の項目で1対多の関係のテーブルにそれぞれ入れるとき 入れたいんなら入れればいいじゃん
入れたくないならその理由も詳しく説明してくんなまし >>440
場合による
日付(主キー)、氏名1、氏名2、…
とかだったら別フィールドじゃなくて同じフィールドの別レコードに入れるし
日付(主キー)、氏名、住所…
とかだったらそれぞれ別フィールドで入れても
別テーブルに入れても良いし >>442
前者だと日付は主キーには出来ないな
いつも通りにオートナンバーのIDが主キーでええやと >>442
後者です
各テーブルに2回インポートしてどちらにも日付は持たせる、ということですか? 日付などを主キーにするのはタブーだからオートナンバー使え、といいませんっけ?
この場合はいいんでしょうか? 一のテーブルには日付以外入れないの?
ならそんなテーブル、不要ら!
毎回Group byしろ
多のテーブルの日付は主キーじゃないだろ?
なんでもいいから主キーはあったほうがいいのですアウトナンバーを推奨 >>446
日付テーブルには建前上、その日の目標とか伝達事項みたいなのをいれます >>444
そうする事も可能
とりあえずExcelの表をそのままインポートして
日付フィールドを主キーに設定出来ればそれで良し
主キーに出来ないならオートナンバーのIDフィールドを追加して主キーにする >>445
主キーはそのフィールドに同じデータが2つ以上あってはダメなだけで文字列型フィールドでもOkなんすよ
ただしオートナンバー型のフィールドは2つ以上があり得ないのでそれが無難 複数のテーブルに分ける場合はテーブル同士の関係をリレーションシップで定義します
その時に主キーを使う訳です
リレーションシップを定義しなくても選択クエリとか作れてしまうのですが、そういうクエリは更新が出来なかったとか不具合起こるのでリレーションシップは忘れずに >>444
詳細テーブルは日付テーブルと日付でリレーションするだけで
それぞれのテーブルに主キーとしてIDをもたせるんだと思うが違うの?
伝票テーブル 伝票IDが主キー
明細テーブル 明細IDが主キー
でレコード作成時に明細テーブルにも伝票IDを付与させてそれでリレーションするように >>451
単純にそのテーブルの主キーに対し複数ありえるフィールド項目なら別テーブルに入れるっていう
理解をしてる。
住所録でも家族の名前も入れるとなったらテーブルは分けるし、そうでないなら分けない
いや、とある年賀状アプリのように連名として同じテーブルに入れる方法もあるけどね。 >>452
基礎を学ぶときどこにもそのように書いてあるけど
なんのためにそうするんですか?
昔の名残でPCがはやくなったいまはやらなくてもいいんですかね? 日付が変更できるようなものだったり、日付が人的ミスで想定外のものが入力されたり
生成条件にバグがあったりするとリレーションが死ぬし回復作業も死ねる
オペレーション的に人的介入されない一連番号のキーが最適解
という話ではなく? >>453
リレーショナルデータベースの入門書を読んでいるからだよ
他の仕組みのデータベースも勉強してみよう! >>453
早くなったのもあるけど、容量制限が緩くなって、冗長なデータでも問題が無いことが増えたんじゃないかな
>>452
正規化が必要な意味を考えると良いと思う
>>455
入門書レベルも重要だと思う
Excelみたいな感覚でAccessを使う人がいるから、処理の遅いAccessはよく見かける
> 他の仕組みのデータベースも勉強してみよう!
俺も知りたいです。どういうこと? Excelをデータベース代わりに使うのは全ての間違い
そんなだからキントーンが売れる >>457
やっぱ所詮文字列や数字程度のものを正規化しまくる意味はほぼなくて
多少重複しててもシンプルなほうがメンテナンスもやりやすいですよね エンドユーザー側はかなり自由な入力好むからなぁ
例えば納品書作るのに得意先コード打って得意先名出したあとその得意先名を自由に書き換えたいとか >>453
これは私見だけど
パフォーマンスよりも機能拡張に備えるため
住所録に連名で家族名を入れる構造だと
生年月日フィールドを追加する時に
連名フィールドの数だけ追加することになるけど
テーブルを分けて入れば追加は1回だけで済む
どっちが楽にできるかは明白 >>460
得意先の社名変更もできるようにすべきだよね
この場合に問題になるのは単純に得意先テーブルの社名フィールドを書き換えると過去の取り引き記録も新社名になってしまう事
これを避けるには社名変更履歴のテーブルを作り
歴代の社名とその変更日前日を有効期限として記録するしかない
その有効期限と取り引き日を比較して社名を特定 >>463
料金表などもそうすべきですよね?
ただ日付だけでやるのもなんかこわいきもする
最適な方法はどんなのですかね? 得意先テーブルにレコード追加した方がスマートじゃないの ■ このスレッドは過去ログ倉庫に格納されています