X



Access総合相談所 29

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@そうだ選挙にいこう
垢版 |
2019/09/23(月) 20:02:25.84
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/
0195165
垢版 |
2019/11/25(月) 08:24:02.84
>>188
インスタントに答え求めるんじゃないよ。
だいたい皆さん、余裕があるときに書いてるんだから。
まずさ、その配属テーブルだけじーっと見てみ。
一行で「いつから」『いつまで』の配属か分かればもっと楽だよね。こっちも考えるけどおまいも
真剣に考えろ。
0196195
垢版 |
2019/11/25(月) 10:29:41.11
>>188
===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.社員番号);
0197196
垢版 |
2019/11/25(月) 10:39:39.19
続き
===売り上げとの紐付け
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
0198名無しさん@そうだ選挙にいこう
垢版 |
2019/11/25(月) 18:32:36.20
>>184
上手くいきませんでしたか、それは失礼しました。
既に他の方が回答されているようですが、これが私の回答になります。改めて以下の手順でやってみてください。

選択クエリを作成
T_売上とT_配属を表示させ
社員と社員名で結合
フィールドは以下の3つ
T_売上.*,配属日、配属先
配属日の抽出条件に
<=[契約日]
を入れます。
これをQ_売上+配属という名前で保存

これでそれぞれの契約日以前の配属日と配属先がT_売上に付加されます。
ただ、これには過去の複数の配属日が含まれます。

次に、別のクエリを作成
Q_売上+配属だけを表示させ
フィールドは以下の2つ
Q_売上+配属.*,配属日

配属日の表示のチェックを消して、抽出条件に
DMAX("配属日","Q_売上+配属","[社員]=" & [社員] & "AND [契約日]=#" & [契約日] &"#")
を入れます。
これにより、[社員]毎に[契約日]直前の配属日と配属先が特定されます。

このクエリとT_売上のレコード数は一致するはずです。
どうですかね?
0199名無しさん@そうだ選挙にいこう
垢版 |
2019/11/26(火) 10:12:50.86
レスが遅くなってしまい申し訳ございません
>>196さん、>>198さんお二人ともありがとうございます!
昨日は体調不良で何も出来てないので今日頑張ってみます!!

また催促するような真似をしてしまい申し訳ございません
以後気を付けます
0200198
垢版 |
2019/11/26(火) 12:55:46.92
>>199
一部訂正です
二つ目の抽出条件のANDの前後には半角スペース入れて下さい

ちなみにDMAXのような定義域集計関数は処理に時間が掛かる事があります
その場合はサブクエリに置き換える方法もあるのですが、エラーになることもあり
こちらをオススメします
0201名無しさん@そうだ選挙にいこう
垢版 |
2019/11/26(火) 19:56:35.44
>>188です
>>196さん、>>198さんのおかげで求めたいものが出せました!
ただご指摘にもあった通り、DMAXで計算時、重たいものとなってしまいました。
調べてみた限りだとVBAのほうが軽くなるみたいなので
やっぱりそっちも勉強していかないとダメですね

難しいと思って今まで逃げてきた道だけど、やっぱり難しい…
0202名無しさん@そうだ選挙にいこう
垢版 |
2019/11/30(土) 15:51:56.92
【 システム環境  】 Windows10, Access2010
【 VBAでの回答  】 可 SQLでも可

教えてください。

[日付] [店舗名] [購入品] [購入金額]

というフィールド構成のテーブルがあります。
このテーブルから、それぞれの店舗ごと、一番最初に買物をした日付と
その時の購入品、購入金額を抽出したいのですが、どうやればいいのでしょうか?
店舗ごとの一番最初の日付というだけならクエリを作れるのですが、
その最初の日付のときの購入品や購入金額も同時に取得することができません。

よろしくお願いいたします。
0203165
垢版 |
2019/11/30(土) 19:42:07.98
>>202
あえて一つのqueryに詰め込まないよ。
日付と商店だけ選択して
集計クエリーに変更
日付を最小値
これで一旦保存 q1
q1と元のテーブルを並べて日付と商店を線で結ぶ。

なお、同じ日に2アイテム買ったら
2アイテム出てくるのは、そういうもんだと思ってくれ。
0205名無しさん@そうだ選挙にいこう
垢版 |
2019/12/01(日) 09:21:16.30
>>204
先頭や最後は使わないです
https://www.feedsoft.net/access/sql/sql54.html
にもあるように望みのレコードを得られないことがあるのです
これはデータベースというのがハッシュテーブルというレコードの順序をあえてランダムに記録するテーブルだからでしょう
0206名無しさん@そうだ選挙にいこう
垢版 |
2019/12/01(日) 10:56:55.24
>>202
そのテーブルをT_購入履歴とするなら
そのテーブルの選択クエリ作って
日付フィールドの抽出条件に
=DMin(“日付”,”T_購入履歴”,”[店舗名]=“&[店舗名])
を入れる

当然だけど、一番最初の日付で複数の商品を購入してたら、クエリの結果もそれが反映されて
1店舗で複数のレコードが表示されるけどね

それから更に絞り込むかどうかは別の問題
0207名無しさん@そうだ選挙にいこう
垢版 |
2019/12/01(日) 11:37:47.12
>>206
自己レス訂正
抽出条件は
=DMin(“日付”,”T_購入履歴”,”[店舗名]=‘“&[店舗名]&”’”)
だった。
Criteriaでフィールド値を指定する場合
数値はそのまま
文字列はアポストロフィ'で挟む
日付は#で挟むんだったわ

これは定義域集計関数だけじゃなくて
フィルターでも同じ
0208名無しさん@そうだ選挙にいこう
垢版 |
2019/12/02(月) 21:34:29.00
【 システム環境  】 Windows10, Access2010

VBAのイミディエイトウィンドウにて

?30.76666666666667-29
 ↓
1.76666666666667

でOK、しかし

?30.76666666666667-30
 ↓
0.766666666666669

と結果がおかしい
どうしてでしょうか?
0209名無しさん@そうだ選挙にいこう
垢版 |
2019/12/02(月) 23:06:48.64
ヒント:有効数字、2進数の丸め
0210名無しさん@そうだ選挙にいこう
垢版 |
2019/12/02(月) 23:07:23.34
通貨型でやってみ
0211名無しさん@そうだ選挙にいこう
垢版 |
2019/12/03(火) 07:09:04.56
>>208
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
となります。
0212名無しさん@そうだ選挙にいこう
垢版 |
2019/12/03(火) 13:41:16.83
すげ。2ヶ月くらい前にも
この話題、出てたよね。
小数点4桁以下を扱う仕事を
したことないから、型の仕様の違いに気づくことなかったわ。
0213名無しさん@そうだ選挙にいこう
垢版 |
2019/12/03(火) 14:29:16.92
現在、毎日社員が件数を打ち込む日報なようなものを作成しています
EXCELでVBAを触っていたのでVBAの知識はそれなりにあると思います


課毎で項目が変わるのでフォームで課を入力すると、テーブルに保存してある
「課に適した項目・表示する箇所」をもとに抽出して、それをテキストボックスに項目を表示させます
また件数用のテキストボックスを作成して、そこに打ち込んだあと
登録ボタンを押すとテーブルに保存させるようにしました(ここまでは完成済み)


更に件数を打ち込んだ時点で自動的にテーブルに保存させれないかなと考えてハマりました

・テキストボックスの合計を保持するテキストボックスを使用してその値が更新されたらテーブルに保存
 →テキストボックスが60個あるので、似たような処理を全てに入れるのは大変
   →classを作成して、読み込もうとしてもエラーになって上手くいかない
     (classの冒頭で行うテキストボックスの宣言でエラーになる)

・サブフォームでフィールドを読み込んで出来ないか?更新を自動的に行えないか?
 →調べても出来ない状態

何か良い案あるでしょうか?
0214名無しさん@そうだ選挙にいこう
垢版 |
2019/12/03(火) 21:15:24.87
>>213
Access特有の仕様で、フォームにテーブルなとをレコードソースにしている限りは
入力後にそのコントロールを外れた瞬間に値の仮確定、
レコード移動ボタンやフォームを閉じるだけでレコードの保存が完了します。
レコードを移動しないで保存を完了するには、me.requeryや
>96さんご教示のme.dirty=falseなど。
課ごとの入力項目は、そういったテーブルを用意してテーブルのフィールド名を1レコード1フィールド名で保存、
フォームのコントロール名はテーブルのフィールド名と一致させておきます。
課選択後に入力項目テーブルを読みにいかせて、ぶん回して
me.controls(value).visible=true
enabled(入力可 不可選択)でもいい。
じゃあ、入力項目以外をどうロックするかだけど
入力項目のテーブルからいわゆる60項目を並べたものをクエリーにして
レコード移動時イベントプロシージャに入ったときに
このクエリーを読みにいかせ、
dbo方式なら
rst.fields.countでループ回数を取得、
ループに入ってから
rst.fields(変数).nameで名前を拾って
上記のような手法で全部、非表示にしてはどうでしょうか。
0216名無しさん@そうだ選挙にいこう
垢版 |
2019/12/04(水) 21:41:14.67
フォームあれこれ1

レコードソースにレコードが無いとフォームビューでコントロールすら表示されない。
レコードソースがテーブルで、レコードセットがDynasetなら新規レコードが常にありますからそんなことにならないのですが
選択クエリだと、選択の結果が0レコードってこともあるので、その場合はコントロールすら表示されず、背景がただ表示されるだけになります。

解決方法
選択クエリで対象となるテーブルどうしのリレーションシップを設定します。
リレーションシップで選択クエリと同じ結合をします。
主キー側が1、そうでない側が∞の表示になります。
フィールドの連鎖更新等のチェックは全部いれてかまいません。
これを1:多の結合といいます。
フォームビューを見る前に、選択クエリのテーブルビューで*が最後のレコードの次に表示されているか確認しましょう。
0217名無しさん@そうだ選挙にいこう
垢版 |
2019/12/04(水) 21:43:17.13
フォームあれこれ2

サブフォームとの連携はどうする?

メインフォームで選んでいるコントロールの値を選択条件の設定には
1 サブフォームのプロパティでリンク親フィールド(メインフォームのコントロール名)と
対応するリンク子フィールド(サブフォームのコントロール名)をそれぞれ指定する方法
2 サブフォームのレコードソースをメインフォームのコントロールの値で選択する設定をした選択クエリにする方法
があります。やりやすい方で良いかと
0218名無しさん@そうだ選挙にいこう
垢版 |
2019/12/04(水) 21:44:54.04
フォームあれこれ3

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

絞り込みということであれば、メインフォームのフォームヘッダに選択条件を設定するコントロールを置いて
その値で絞り込むことも可能です。
なお、絞り込みは、フィルターで設定するのが確実です。
0219名無しさん@そうだ選挙にいこう
垢版 |
2019/12/05(木) 18:59:41.03
今日は設計の失敗発覚。
サブフォームのフッターに合計式入れて、親フォーム(親テーブル)の同項目フィールドに代入するやり方、
あんましやらないほうがいいね。
あちこちのイベントにrecalc仕込んで置かないと、合計ゼロになったりサブの最後の入力レコードが
算入されなかったりする。
たぶん、親フォームのボタンアクションで、サブフォームのクローン取ってきてネストで合計作ったほうが確実なような気がする。
0220名無しさん@そうだ選挙にいこう
垢版 |
2019/12/06(金) 18:03:01.05
>>219
自分はフォームのコントロール同士で計算させるってのが考えるに面倒なので
レコードソースのクエリで計算させて
フォームはただそれを表示するだけにしてる

まあ合計や平均とかの集計値をフッタで表示させても良いんだけど、表示させるだけで
それを別のコントロールで参照してとか面倒に感じるのです

コントロールの表示って泡沫のようなもので
実態はテーブルにのみあるわけですからね
0221名無しさん@そうだ選挙にいこう
垢版 |
2019/12/07(土) 19:09:02.22
PCリカバリしたいんだけど
サポート終了したOffice再インストールすると
サポート期間中にリリースされたアップデートも
OfficeUpdateで取得できなくなっちゃうんろうか?
0223221
垢版 |
2019/12/07(土) 22:23:44.54
ごめん見つけた

Windows XP/Office 2003サポート終了後の「世界」:「XPサポート終了」の具体的影響 - @IT
https://www.atmarkit.co.jp/ait/articles/1402/19/news116.html
> ●サポート終了日以前にリリースされたパッチは引き続き適用できる
> ●アクティベーション(ライセンス認証)も引き続き実行できる
0224名無しさん@そうだ選挙にいこう
垢版 |
2019/12/10(火) 08:14:02.92
>>221
アップデートファイルのダウンロードページが消える事もあるので
それらもバックアップしてるよ
>>223
はダウンロードページの閉鎖はしないとは言ってない
0225名無しさん@そうだ選挙にいこう
垢版 |
2019/12/12(木) 08:56:52.28
リンクテーブルで
「テーブルのみデータファイル:accdb、プログラファイル:accdb」
の組み合わせより
「テーブルのみデータファイル:mdb、プログラファイル:accdb」
の組み合わせのほうが処理速度が断然早いね
少量規模(数百件)のデータでもすごい体感できるくらいに早い
テーブルのみだったらmdbでも十分ですね
0226名無しさん@そうだ選挙にいこう
垢版 |
2019/12/12(木) 09:25:32.22
Win10Pro 64bit Access2016 32bit

リンク元のファイル形式で処理時間を比較

◆10個のテーブルをADOXでリンクする時間
・accdb: 0.644秒
・mdb: 0.031秒

◆数百件のデータをADOでテーブルに追加しレコードソース付きのフォームを開くまで
・accdb: 0.625秒
・mdb: 0.109秒
0228名無しさん@そうだ選挙にいこう
垢版 |
2019/12/12(木) 16:48:26.36
Win10 Access2013
ためしにリンク後、以下のコードでやってみた
====================================
vTime = Timer
For i = 1 To 1000
Set rst = CurrentDb.OpenRecordset("SELECT * FROM テーブル)
rst.Close
Next i
Set rst = Nothing
Debug.Print Timer - vTime
====================================

mdb: 0.9843秒
accdb: 63.738秒

えらい違うな、2013でも体感できるわw
0229名無しさん@そうだ選挙にいこう
垢版 |
2019/12/12(木) 19:54:08.57
accdbになってからDAO推薦だろ
0231名無しさん@そうだ選挙にいこう
垢版 |
2019/12/13(金) 19:28:08.48
すみません、初歩的なことで申し訳ないです

連結しているフォームで呼び出されているデータをVBAで処理するコードってどうするんですか?
非連結ならSQL設定してレコードセットして、というのは理解してますが
そもそもそこにデータがあるのにわざわざ一から読み込む必要あるの?と悩んでます

「連結フォーム VBA」で検索しても「非連結フォーム VBA」の結果ばかりでて困ってます…
0235名無しさん@そうだ選挙にいこう
垢版 |
2019/12/15(日) 21:07:15.21
たしかにテーブルのみとのリンクのファイル形式はmdbのほうが処理速度がはるかに速い
リンクする処理だけでも差が出るが、何故だ?
0236名無しさん@そうだ選挙にいこう
垢版 |
2019/12/16(月) 09:39:49.82
【 システム環境  】 Windows10, Access2019

コントロールソースに=Format(Now(),"yyyy/mm/dd")のあるテキストボックスのフォームを
2019でaccde化したファイルを2013で開くと#NAMEと表示され正常に表示されません。
2013でaccde化すると問題なく表示されます。
2019は前バージョンとの互換性がないのでしょうか?
0237名無しさん@そうだ選挙にいこう
垢版 |
2019/12/16(月) 10:05:17.35
vba画面開いて、どっかに1文字足して、また1文字引いて元に戻して、再コンパイルすると、直る予感
0238名無しさん@そうだ選挙にいこう
垢版 |
2019/12/16(月) 15:35:52.69
<<237
再コンパイルもダメで、mdbに変換しmde化もしてみましたがダメでした
0240226
垢版 |
2019/12/16(月) 23:48:08.63
リンクテーブルのファイル形式で処理速度に差が出る件、
パスワードの有無で差が出るこが判明!

>>228
のコードをFor i = 1 To 100で実行

accdb(パス無) :0.289
accdb(パス有):9.343 *
mdb(パス無):0.258
mdb(パス有):0.234

OS、Accessの以下の組み合わせ
Win10 acc2010〜2019
Win7 acc2010〜2019
すべてでほぼ同様の結果でOS、Accessの組み合わせは関係なし。

結論:
パスワードありaccdbにあるテーブルとのリンクは極端に処理が遅くなる。
0241名無しさん@そうだ選挙にいこう
垢版 |
2019/12/17(火) 10:00:49.25
>>239
はい、以前Access95や97の時代にDate()で
#Nameエラーが多発したのでそれ以来Now()を使い続けています。
ちなみに今回のソースをDate()に変えてもダメでした。
0242名無しさん@そうだ選挙にいこう
垢版 |
2019/12/17(火) 14:28:09.45
>>241
試し方が、結構access使いなれてる感じですね。
軽くググったら
これは釈迦に説法だけど、フィールド名、ユーザー定義関数に
まんまdate nowと名付けたらエラー、
あとvb6ランタイムの
mscomctr.dll msctrctr2.dllというワードが出てきた。
0243名無しさん@そうだ選挙にいこう
垢版 |
2019/12/17(火) 18:46:52.22
>>240
それ、どっかに書いてあったで、hatenaなんとかかな
0244名無しさん@そうだ選挙にいこう
垢版 |
2019/12/17(火) 22:24:14.74
hatenaのはパスワードかけるとそのファイル内の削除クエリが遅くなるやつじゃね?
それならMicrosoft Security Essentialsが原因とか書いてたが...
>>240
はMicrosoft Security Essentials関係なく遅くなる。
どちらにせよaccdbの暗号化(パスワード化)は色々と問題ありそうだ
0245名無しさん@そうだ選挙にいこう
垢版 |
2019/12/18(水) 07:49:56.27
>>242
ありがとうございます。
それは、参照設定で参照不可が発生している問題ですね
その辺も全部チェックしましたが問題ありません。
結局2010でaccde化して配布することにしました。
0246名無しさん@そうだ選挙にいこう
垢版 |
2019/12/21(土) 16:47:47.98
Office2010で使ってましてQRコード使いたくてAccessだけ2016にしてたのですが
20日のアップデートでQRコード使えなくなりました
2016だけ再インスコで回避できたのですが
参照設定のBarCode Controlが14.0のままで
レポートのActiveXコントロールが16.0になってる辺りを疑ってるのですが
解決策ご存じの方おられませんでしょうか
0249名無しさん@そうだ選挙にいこう
垢版 |
2020/01/11(土) 16:57:13.83
>>248
可能
ただしExcelの参照設定をいじる必要あるかも
0250名無しさん@そうだ選挙にいこう
垢版 |
2020/01/12(日) 17:20:29.55
>>248
確か、office2013が入ってるところに、access2016runtime入れるな
って注意書きがあったけど、
特に問題は起きていない。
ただ、VBAコード書いてruntimeに配布するときは、
on errorなんちゃらの処理をちゃんと書かないと、バッサリ落ちるので
ユーザーである社内の人間から白い目で見られるから、
面倒くさいんだよね。
製品版だと問題行で一時停止するんだけど。
わかってるつもりだが、いまだに忘れがち。
0251名無しさん@そうだ選挙にいこう
垢版 |
2020/01/16(木) 15:50:02.36
ナビゲーション ウィンドウをF11キーで表示した後、
再度F11キーで最小化されますが、
最小化ではなく非表示にする方法はないでしょうか?
VBA・マクロ以外の方法が見つかりません。
0252名無しさん@そうだ選挙にいこう
垢版 |
2020/01/16(木) 21:38:58.40
ACCESS2013だけど、クエリで選択した複数のレコードを1件のデータで管理したい場合どうすればいいですか?

例えば、在庫表の[ミカン、リンゴ、ブドウ]の3レコードを選択クエリで抽出して、これを1月16日にA宅に出荷したとします。
普通は1レコード単位でフォームに表示したりして管理すると思いますが、選択クエリの時点で3レコードに分かれているので、後で見ると単票フォームで表示できないので管理しにくくなってしまいます。

何か良いアイデアありますか?
0254名無しさん@そうだ選挙にいこう
垢版 |
2020/01/17(金) 07:55:44.79
>>253
有難うございます。
メインフォームに出荷日や出荷先を入力して、サブフォームに帳票フォームを入れようと思ったのですが、メインフォームとサブフォームのレコードに同じ番号(連番)を振ることって可能ですか?

例えば
[メインフォーム]1月17日 A宅に出荷 ID1
[サブフォーム]リンゴ ID1 ミカン ID1

メインフォーム]1月18日 B宅に出荷 ID2
[サブフォーム]リンゴ ID2 ミカン ID2

のように、同じIDでリレーションシップの1対多で管理するような感じにしたいです。
メインフォームのIDはオートナンバーで、サブフォームのIDは=メインフォーム!IDのような感じに出来ますか?

よろしくお願いします。
0255名無しさん@そうだ選挙にいこう
垢版 |
2020/01/18(土) 16:18:03.73
SetFocus使うとOpenイベントの途中でLoadイベントが発生する

Private Sub Form_Open(Cancel As Integer)
  Debug.Print "Form_Open Start"
  Me.SetFocus
  Debug.Print "Form_Open End"
End Sub
Private Sub Form_Load()
  Debug.Print "Form_Load"
End Sub
Private Sub Form_Activate()
  Debug.Print "Form_Activate"
End Sub

誰にも言うなよ
0256名無しさん@そうだ選挙にいこう
垢版 |
2020/01/18(土) 16:40:54.31
知ってた、次期Accessでは無くなるし
0257名無しさん@そうだ選挙にいこう
垢版 |
2020/01/18(土) 16:51:54.24
>>254
連鎖更新で同期は可能だけどリレーションシップまで理解してるなら分かるよね。
0259名無しさん@そうだ選挙にいこう
垢版 |
2020/01/18(土) 17:41:49.57
ヘルプに記載無い挙動は、しょっちゅう変わるし
0260名無しさん@そうだ選挙にいこう
垢版 |
2020/01/18(土) 18:02:52.64
>>258
マクロなら動くけどVBAで組んだイベントプロシージャが動かなくなったことは良くある

あと参照設定のバージョン違いで同じコマンドやメソッドの動きが変わるとかもあったな
いずれも迷惑なこっちゃで

>>259
ヘルプに無い挙動っていうと、単項式の評価は0以外はTRUEなんだけど、
たぶんそれ明示されていないんだよね。それを使った処理は危険だな
きちんと比較演算子で評価させよう
0261名無しさん@そうだ選挙にいこう
垢版 |
2020/01/18(土) 19:33:32.37
普通に開いたフォームと
New Form_フォーム名で開いたフォーム
識別方法ってある?
Openイベントで処理変えたいんだわ
Visibleが使えるかと思ったがダメだった
0263名無しさん@そうだ選挙にいこう
垢版 |
2020/01/18(土) 21:35:03.82
「白いネコでも黒いネコでもネズミを取ってくるのがいいネコだ」@ケ小平
よって、共産党としてはフォームを開いた後に区別する方法は用意していない
0264名無しさん@そうだ選挙にいこう
垢版 |
2020/01/19(日) 16:10:38.96
本社と支社間のように離れた場所と共有する場合に、簡単で無料でする方法ってある?
テーブルデータ(バックエンド)がwebやクラウドにあるイメージ。
最大でも3〜4人しか同時に使わない。
0265名無しさん@そうだ選挙にいこう
垢版 |
2020/01/19(日) 22:44:28.30
Azure でドウゾ
0267名無しさん@そうだ選挙にいこう
垢版 |
2020/01/21(火) 08:25:15.41
VPNルーターで拠点間通信
0268名無しさん@そうだ選挙にいこう
垢版 |
2020/01/23(木) 20:03:56.96
この前Win10にアップグレードしたんだけど
VBエディターで縦スクロールすると
分割ウィンドウにした時のような横線が入って
画面が乱れるときあるの俺だけ?
スクロールバーを上に向かって動かすとなりやすい
0269名無しさん@そうだ選挙にいこう
垢版 |
2020/01/24(金) 06:50:18.35
>>268
別にそういうふうにならないが
グラフィックドライバからみの問題な気がする
GPUとドライバのバージョンは?
0270名無しさん@そうだ選挙にいこう
垢版 |
2020/01/24(金) 13:07:06.06
>>269
Intel HD Graphics 2000
15.28.24.64.4229 (9.17.10.4229)

分割ウィンドウというより
スクロールバーを上に向かって動かすと
ツールバー下の
オブジェクトのプロパティ選択コンボが
分身となって現れ下へ向かって動く。
スクロールバーを何度か大きく動かすと消える。

あと1つのIfにEnd Ifが2行続いてるので
あれっ?と思ってその行クリックすると1行になる
0271名無しさん@そうだ選挙にいこう
垢版 |
2020/01/24(金) 17:48:59.74
質問よろしいでしょうか

フォームでマイクロソフトアカウントの情報(表示名やメールアドレス)を取得することは可能ですか?
0272名無しさん@そうだ選挙にいこう
垢版 |
2020/01/25(土) 04:08:48.26
>>271
環境変数 USERDOMAIN かUSERNAMEをEnviron関数で取得でいけるかと
0273名無しさん@そうだ選挙にいこう
垢版 |
2020/01/25(土) 06:57:24.62
>>271
メールアドレスって環境変数には無いなあ。
そもそもメーラーは何使ってるの?
0275名無しさん@そうだ選挙にいこう
垢版 |
2020/01/25(土) 14:18:27.81
>>271です
皆様ありがとうございます

Environ関数についてですが、ユーザーネームを取得は行ったのですが
PC名の取得になってしまいます

不特定多数の人が開くACCESSでいちいち名前を選択してもらうより
マイクロソフトアカウントで判別して名前を設定しようとしたんですが
なかなか難しいですね…

>>273
メーラーはoutlookを使用しています

>>274
レジストリの情報を読み出せるんですね
探してみます
0276名無しさん@そうだ選挙にいこう
垢版 |
2020/01/26(日) 00:04:31.30
accessでテーブル設計の参考になるような本やサイトを教えていただけませんか?
仕事でaccessを使わなければならなそうで、勉強がてら自分で趣味のデータベース作ったのですが、テーブル設計がエクセル的でダメと言われました。
0278名無しさん@そうだ選挙にいこう
垢版 |
2020/01/26(日) 17:05:27.39
>>275
そういうことなら、例えば
https://hamachan.info/win8/access/user.html
が参考になるかと
必要なライブラリとその参照設定もググってみて
0279名無しさん@そうだ選挙にいこう
垢版 |
2020/01/26(日) 17:21:47.76
>>276
エクセル的ってのは曖昧な表現だけど、おそらくは正規化してないってことだと思うよ。
端的な言い方すると、Excelでテーブルらしきものを作って、それをコピペして
Accessがエラーなくテーブルとして取り込めるかどうかで判断しても良い。
エラーになったら、その原因を調べて直すでも、学習になるかも
とはいえ、エラーでなければ十分かというと違うんだけどね。
正規化という作業が待っているのです。

正規化というのは、単純化です。
複雑にしたければ、単純なテーブルどうしをまとめるクエリを作るのですね。
そうすることで、新たな機能と追加したりするもの、元が単純だから別のフィールドを追加したり
別のテーブルを追加したりして、既存の仕組みに影響を与えない形で拡張ができるのです。

学習に向くのは
https://www.accessdbstudy.net/entry/20140930/p1
ですかね。
魔法使いの開発工房さんも参考になりますよ。
0280名無しさん@そうだ選挙にいこう
垢版 |
2020/01/27(月) 01:37:37.65
>>279
ありがとうございます。
まさにご指摘の通りです。リンク先の商品1、商品2・・・と全く同じことをやってしまいました。
正規化の勉強してみます。また分からなかったら質問させて頂きます。
仕事の方は前任者が作ったデータベースがあるためクエリで簡単な抽出はできたのですが、前任者がこの世にいないのでいずれ1から作らないとならないと思い趣味の方で作成した次第です。
0281名無しさん@そうだ選挙にいこう
垢版 |
2020/01/27(月) 07:53:08.64
これ見てふと思ったけど、顧客や取引先情報で住所・電話番号なんか
ごく普通に登録するけど、相手によっては住所や電話番号が空欄になる
こともあるのなら、これもやっぱり正規化すべき?
電話番号なんか特に空欄だけじゃなく複数あったりするけど
0282名無しさん@そうだ選挙にいこう
垢版 |
2020/01/27(月) 08:17:15.31
顧客マスタで住所や電話番号のフィールドが複数あるのはDB設計では一般的だぞ
問題は際限なく住所や電話番号が増えていくようなシナリオが想定される場合で、大体の場合、顧客の支社や工場の情報とか担当者個人の情報とかが追加されていくパターン
そういうのはChildでまとめるなりしてエンティティの階層を整理しないと駄目
0283名無しさん@そうだ選挙にいこう
垢版 |
2020/01/27(月) 13:01:20.79
>>282
サンクス
過去のDBを引き継いで使っているけど、顧客店舗テーブル眺めてると
電話番号の項目が3つあって、そのうち2、3は大体空欄なのが気になってたのです
0284名無しさん@そうだ選挙にいこう
垢版 |
2020/01/28(火) 22:51:21.91
たとえば、顧客名簿テーブルが
顧客名簿ID(主キー)氏名 住所1 住所2 住所3
1 あああ 東京 千葉 埼玉
2 いいい 群馬
3 ううう 山梨 栃木

というフィールド構成になってたとします。
これを正規化して次のように2つのテーブルにしても良いかと

顧客名簿ID(主キー) 氏名
1 あああ
2 いいい
3 ううう

住所ID(主キー) 住所 顧客名簿ID
1 東京 1
2 千葉 1
3 埼玉 1
4 群馬 2
5 山梨 3
6 栃木 3
0285名無しさん@そうだ選挙にいこう
垢版 |
2020/02/08(土) 17:07:45.97
1テーブル
A
B
C
D

2テーブル

×


3テーブル
A ○ 100
B × 100

4テーブル
D ○ 200
E △ 200

これを
A ○ 100
B ○
C ○
D ○ 200
A × 100
B ×
E ×
ってクエリで結合させてポンと表示できないですか?
0287名無しさん@そうだ選挙にいこう
垢版 |
2020/02/15(土) 17:23:27.68
フォームやレポートでラベルとかを作ると
ラベル××って連番つくじゃないですか
あの連番こっちで操作できないんですかね

間違えて作成して元に戻すをやっても
連番は進んでるし…
0289名無しさん@そうだ選挙にいこう
垢版 |
2020/02/17(月) 07:34:04.45
>>287
ラベル自体を操作する
例えば.visibleで表示 非表示を制御する
Circleで丸囲みする
といった理由が無いなら放置してええかと
0290名無しさん@そうだ選挙にいこう
垢版 |
2020/02/17(月) 11:47:07.68
ありがとうございます。

レポートで10個の項目が複数あって
それぞれクエリから値を設定していくんですけど
VBAを書くよりなにより、沢山あるテキストボックスの名前を変えてくのが苦痛で苦痛で…

テキストボックスの名前を読み込み時に変えようかなとも思ったんですけど
0291名無しさん@そうだ選挙にいこう
垢版 |
2020/02/17(月) 18:15:41.05
>>290
>10個の項目が複数
???
意味が分かりません。

VBAでtextbox.nameプロパティを一括変更できるでしょ?

単票レポートですか?
帳票レポートですか?
0292名無しさん@そうだ選挙にいこう
垢版 |
2020/02/19(水) 08:36:01.70
>>290
何をしようとしてるのか、そんなケースがあるのか思い浮かばない。
プロが作った売上ソフトの設計見てると、テーブルの時点ではフィールド名を英数字のコードネーム状にして
割り付けテーブルを別に持っているようだけどね。
その場合、accesdならコントロール名はその汎用コードネームにして、開くときにVBAぶん回し、
関連付けたラベルの標題値を変えさせればいいんじゃないのかな。
コードソースはめんどくさいから書かないけど
全てのラベルコントロールを対象としたループ
紐付けテーブルの読み込み準備
紐付けテーブルに格納されてるレコード中のコードネームと、
[コードネーム]&"_ラベル"がマッチするなら紐付け名に変更して

みたいな感じ。
0293名無しさん@そうだ選挙にいこう
垢版 |
2020/02/19(水) 08:51:33.66
追記 最近はグローバル化でウェブサイトとかゲームの字幕が多言語対応してるでしょ。
どうやって実現してるでしょう、とほぼ同じ設計思想でいいと思う。
webサイトなら、たいてい裏でmysqlなどを動かしてて
htmlの要素にはidを振り、割り付け先idと、選択言語でマッチしたvalueを埋め込んでることが多い。
■ このスレッドは過去ログ倉庫に格納されています

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