Microsoft Access 掲示板

views
4 フォロー
6,283 件中 4,361 から 4,400 までを表示しています。
1

フォームのプロパティを下記のように設定すれば下図のようにはなります。

プロパティ設定値
レコードセレクタいいえ
移動ボタンいいえ
区切り線いいえ

画像1

角丸は画像を使えば可能ですが、そこまで労力をかけるまでもないとは思います。

4

「本日の目標」は営業日のみです

日付     名前 目標ID 
2020/11/12 田中 1
2020/11/12 鈴木 1
2020/11/12 高橋 1
2020/11/13 田中 2
2020/11/13 鈴木 2


2020/12/13 田中 40
2020/12/14 田中 1

と、日付が変わるごとに目標IDをずらしていき
最後まで来ると、また1から、というループにしたいです

3
シソンヌ 2020/11/12 (木) 15:58:02 0029a@1c915 >> 2

プロパティを適当にいじってたら治ったようです。一時的なもので、また動かなくなる気もしますが。。
とりあえずリフレッシュの件を勉強できてよかったです。
hiroton様ありがとうございました!

2
シソンヌ 2020/11/12 (木) 15:53:01 0029a@1c915 >> 1

ありがとうございます!時間が取れるタイミングでリフレッシュしてみたいと思います。
1つ気づいたことがあったので報告させていただきます。

該当のフォームをダブルクリックした時波打つと書いていましたが、
正確にはデスクトップに並んでいるアイコンが一瞬チカチカする感じでした。。

3

名刺上では無理でしょう。
ローマ字表記にするしかないのでは。

というか名刺には社員名が印字されていますよね。
わさわざQRコードにする意味はなんですか。

メールアドレスとかをQRコードにするなら分かりますが。

1
hiroton 2020/11/12 (木) 15:28:42 7f785@f966d

謎の現象が起きる場合はとりあえずリフレッシュ
AccessのDBファイルを長期的に安定して使用するには(hatena chips さん)
該当箇所は記事の下のほうです

もしかすると
Windows 10 バージョン 2004 (20H1) / 20H2 上で 半角カナのフォームを含んだ Access ファイルでエラーが発生する

1
hiroton 2020/11/12 (木) 15:12:35 修正 7f785@f966d

たぶんそう(12行に)なると思います
が、条件が複雑になるときは、「条件式でフィールドを作る」とすっきりできる場合があります

たとえばクエリデザインで

式1: Not [条件1] Or Not [条件2] Or Not [条件3] Or Not [条件4]

というフィールドを追加します。このクエリを表示すると式1フィールドに「条件1~4のいずれかがfalse」なら「-1」、それ以外なら「0」と表示されます。このフィールドに対して抽出条件を設定すれば「①のために抽出条件を4行作っています。」が1行で済むようになります


ちなみに上記の「-1」「0」はそれぞれ「True」「False」に対応しています。フィールドには内部的な値(数値)が表示されるということですね。なので、抽出条件の部分には「True」と指定してあげれば望みの条件になります

③「条件6が"済"か"途中"か"開始"」

も、抽出にHITさせたいときには「True」となるような条件式のフィールド

フィールド->式2: [条件6]="済" Or [条件6]="途中" Or [条件6]="開始"
抽出条件->True

を作ってあげれば1行で済み、「① AND ② AND ③」の形で抽出条件は1行にできます

2

hiroton 様
ご回答ありがとうございます。
おっしゃるとおり社員名フィールドは日本語です。

社員名フィールドを社員番号フィールドにするとしたらどうやって社員名と紐づけしたらよろしいのでしょうか・・?

1
hiroton 2020/11/12 (木) 11:51:04 7f785@f966d

社員名に日本語を使っていませんか?Microsoft Barcode Controlは全角文字に対応していないのでそういう文字が含まれていると表示されないようです

2
りんご 2020/11/12 (木) 10:06:03 48103@0e907

再現確認、ありがとうございます。
とりあえず、ListCount<2で対応中です。

1
hiroton 2020/11/12 (木) 09:11:35 7f785@f966d

試してみました(ACCESS2013)たしかに謎の挙動をしますね
フォームを開いた後何もせずに(ACCESSも触らずに)ほかの作業をしてしばらくしてからテキストボックスをクリックすると「1」になることもある。
Me.RecalcMe.リスト2.Requeryを入れると必ず「0」になる。
等の挙動を追加で確認できました

とりあえず、データがないときのListCountの値が重要になるとも思えないのでListCount<2の判定で処理を組んだらどうでしょうか

10
ポンタ 2020/11/11 (水) 22:21:38 0029a@1c915 >> 5

すみません。解決しました。
具体的には、2個のクエリを使い、ご指摘の部分のみ1個目のクエリで変更。
2個目のクエリでそれ以外を変更し、うまくいきました。
ありがとうございました。

9
りんご 2020/11/11 (水) 19:59:12 48103@0e907 >> 6

更新ボタンを押したら、
以下、VBA
新データの先頭レコードに移動
旧データの非連結テキストボックス(事前準備)に新データのIDを代入
旧データを非連結テキストボックスとクエリ(事前準備)で絞り込み
旧データの利益率フィールドに新しい利益率を代入
新データの次行に移動
の繰り返しが出来れば、どうだろうという感じです。

3

休業日とか決まってないのですか。普通の営業形態は、休業日か決まっていて(当然営業日も決まる)。休日出勤があるとしても「本日の目標」は営業日のみにあるのが普通かなと思いましたが。

とくに休業日が決まっていないなら、全ての日付のマスターテーブルを作成してそれに連番を持たせるようにすればいいでしょう。
社員が出社したときだけ本日の目標を発行するということなら、その都度、営業日マスターにその日付を追加するようにすればいいでしょう。

2

営業日をマスタ化するのですか?
営業日が前もって決まっているわけではなく、出勤簿をつけるときにはじめて確定します
紙ベースでいうと出勤簿用紙があり、日付などを書いたあとに、出勤順にリスト状に記入していく感じです

8
ポンタ 2020/11/11 (水) 18:02:20 0029a@1c915 >> 6

ありがとうございます。
一旦該当のテキストボックスから数値を変数化して、クエリの部分をVBAにして、繰り返しさせるようなイメージでしょうか…

7
ポンタ 2020/11/11 (水) 17:59:20 0029a@1c915 >> 5

 ご確認ありがとうございます。ご指摘の部分が、非連結のテキストボックスになっており、クエリ内に反映できない状況です。この部分はメインフォームで、その他はサブフォームになっています。
ヒントをいただいているのに、質問ばかりで申し訳ありません。

[Forms]![F_見積作成]![txt利益率反映]
6
りんご 2020/11/11 (水) 17:30:13 48103@0e907

YESのデータが50件エクセル行みたいなイメージであるとします。1件目の先頭データ行に移動すると、フォーカスがあたり編集出来るっぽい状態になるかもしれない。そこで、更新クエリをすると、1件目の結果が反映。次の行に移動して、2件目の結果を反映。…1件ずつの結果を50回更新クエリする感じでしょうか?

5

Q_見積明細.利益率 = [Forms]![F_見積作成]![txt利益率反映],というようにフォームを参照するのではなく、クエリ内のフィールドの値を利用して利益率を計算するようにしてください。

4
ポンタ 2020/11/11 (水) 16:37:48 0029a@1c915

パーセンテージ表示はうまくいきました。ありがとうございました。
>クエリ内で利益率を計算

下記に修正してみましたが、結果は変わらず1件の結果が他のものに反映されます…
勘違いしていますか?解決法はありますでしょうか。

UPDATE Q_見積明細 SET Q_見積明細.利益率 = [Forms]![F_見積作成]![txt利益率反映], Q_見積明細.提供単価 = Int([仕入価格]/(1-[利益率])/[数量]+0.5)
WHERE (((Q_見積明細.[チェック])=Yes));

10

おかげ様で解決いたしました!!
ラベル(テキストボックス)の方の設定が不十分でした・・・
本当にありがとうございました。

1
hatena 2020/11/11 (水) 12:52:51 修正

ダイアログモード(acDialog)で開いたときでも、フォームのサイズをマウスで変更できるようにしたいということでしょうか。

ダイアログモードはサイズ変更できないという仕様なので、ダイアログモードで開くのはやめて、フォームの「ポップアップ」を「はい」、「作業ウィンドウ固定」を「はい」にすればほぼダイアログモードと同じ状態でサイズ変更可能になります。ちょっとVBAでの動作が異なるので注意が必要ですが。

ダイアログモードで開く場合の意味は、他のウィンドウの操作ができないので、そのフォームでの処理に集中することができるということです。他のウィンドウを操作されて関連するデータを変更されたりすると困りますので。

「作業ウィンドウ固定」を「はい」も同様の意味になります。
「ポップアップ」を「はい」は常に前面に表示されるという効果になります。
ダイアログモードはポップアップ効果もあります。

3

クエリでフォームを参照すると、表示されているレコードの値あるいは計算値を参照します。

クエリ内で利益率を計算するようにしてください。

9
ポンタ 2020/11/11 (水) 12:01:19 0029a@1c915

原因不明のままでしたが、レポートで空の行を詰めるのがうまくいかなかった経験があります。
その際は一旦テキストボックスを消して、作り直してみたらうまくいきました。
(もちろんプロパティ設定は忘れずに)

2
ポンタ 2020/11/11 (水) 11:58:13 0029a@1c915

ありがとうございます。現在「パーセント」としていました。変更して実験してみます!

同じく、パーセンテージに関わるのですが
チェックした全てのレコードに利益率を反映させたいです。

下記更新クエリを試すと、チェックした全てのレコードではなく1つのレコードの計算結果が、すべてに反映されます。
どのように修正すれば1件ずつ計算結果がでるようになりますでしょうか。

UPDATE T_見積明細 SET T_見積明細.利益率 = [Forms]![F_見積]![txt利益率反映], T_見積明細.提供単価 = Int([forms]![F_見積].[F_見積明細].[Form].[仕入価格]/(1-[forms]![F_見積].[F_見積明細].[Form].[txt利益率])/[forms]![F_見積].[F_見積明細].[Form].[txt数量]+0.5)
WHERE (((T_見積明細.[チェック])=Yes) AND ((T_見積明細.見積ID)=[Forms]![F_見積]![txt見積ID]));

8

上下のテキスト間の間隔をなるべく詰めてください。この余白部分は縮小しませんので。

簡単なサンプルを作成してテストしてみました。


デザインビュー
デザインビュー


プレビュー
プレビュー

1

少なくとも下記のようなテーブルに分割すべきですね。

生徒マスター(生徒番号 氏名 学年 ・・・)
テストマスター(テストID 科目 テスト日 ・・・)
テスト結果(テストID 生徒番号 点数)

正規化の意味ややり方は、
下記が分かり安くまとめられていると思いますので参考にしてください。

正規化とは - もう一度学ぶMS-Access
正規化の実例 - もう一度学ぶMS-Access

7

>あと、=IIf(Nz([フィールド名])="","","項目名")これをいれると、テキストボックスに文字が入っても消えたままになってしまいます。

すみません。こちらは解決しました。
あとは空のテキストボックスが詰めてくれれば完璧なのですが・・・

6

罫線などはひいていないです。
あるのはラベルとテキストボックスだけです・・・
あと、=IIf(Nz([フィールド名])="","","項目名")これをいれると、テキストボックスに文字が入っても消えたままになってしまいます。

1

まずは営業日マスターテーブルを作成しましょう。
営業日IDは連番になるようにします。(オートナンバー型は削除したりすると抜けがでるので自前で採番するようにします。)
日付は主キーにしておきます。

営業日マスター

営業日ID日付
12020/11/02
22020/11/04
32020/11/05
42020/11/06
52020/11/09
 
本日の目標マスタ
本日の目標ID目標
1ああああ
2いいいい
3うううう

40まで

フォームやレポートのレコードソースのクエリは出勤簿と営業日マスターを日付で結合しておきます。

フォームやレポートの本日の目標を表示したいテキストボックスのコントロールソースを下記のように設定します。

=DLookup("目標","本日の目標マスター","営業日ID=" & (([営業日ID]-1) Mod 40)+1)
5

他にコントロールは配置してませんか。直線コントロールで罫線を引いているとか。

4

回答ありがとうございます。
ラベルの文字は消えましたが空いたところを詰めてはくれませんでした・・・

2
オリガミ 2020/11/10 (火) 14:37:14 0029a@1c915 >> 1

コントロール名も間違っていました。。スミマセン。
自分自身を選択するのは一工夫必要だったんですね…
よくわかりました。ありがとうございました。

1
hiroton 2020/11/10 (火) 13:51:56 6da9b@f966d

テキストが選択状態じゃないとそのエラーが発生します。自分自身にSetFocusしてもテキストは選択状態にならないのでそのエラーが発生します

Private Sub txtテスト_DblClick(Cancel As Integer)
    With Me!txtテスト
        If Not IsNull(.Value) Then
        .SelStart = 0
        .SelLength = Len(.Value)
        DoCmd.RunCommand acCmdCopy
        End If
    End With
End Sub

質問文中コントロール名があやしい(txtテスト/txt製品名)ので見直してみてください

1

パーセンテージ表示はどのように実現してますか。
書式プロパティに 0% というような感じで設定してますか。

3

出来ればラベルも一緒に詰めるようにしたいです。

デザインビューでラベルを右クリック[コントロールの種類の変更]→[テキストボックス]でテキストボックスに変換して、
コントロールソースを下記のように設定します。

=IIf(Nz([フィールド名])="","","項目名")

で、印刷時縮小を「はい」にします。

以上でどうでしょう。

11
ポンタ 2020/11/10 (火) 12:46:40 0029a@1c915 >> 10

VBA、クエリともバッチリうまくいきました。うれしいです!ありがとうございました。

10

あー!すみません。コード間違ってました。
DMax は SELECT文の方にいれないとだめでした。

INSERT INTO  サブ( フィールド1,フィールド2,… リンクフィールド, , フィールド11)
SELECT サブ.[フィールド1], サブ.[フィールド2],…, DMax("主キーフィールド", "メイン"), フィールド11
FROM サブ
WHERE (((サブ.リンクフィールド)=[forms]![メイン]![主キーフィールド]));
2

遅くなり、申し訳ありません。
印刷時の縮小をはいにしましたが特に変化はありませんでした。
ラベルがあるからでしょうか?

出来ればラベルも一緒に詰めるようにしたいです。

9
ポンタ 2020/11/09 (月) 16:38:38 0029a@1c915 >> 8

ちなみにエラーが出るのは「CurrentDb.Execute sSQL, dbFailOnError」の最終行でした。