SELECT LTrim([Q21_71Y72Y結合]![担当者ID]) AS 担当者ID, Q21_71Y72Y結合.出向先CD, Count(Q21_71Y72Y結合.契約NO) AS 件数
FROM Q21_71Y72Y結合
GROUP BY LTrim([Q21_71Y72Y結合]![担当者ID]), Q21_71Y72Y結合.出向先CD
ORDER BY Q21_71Y72Y結合.出向先CD;
Public Sub cmdbutton1_Click()()
DoCmd.OpenForm "フォーム1"
Forms!フォーム1.タブ0.Value = 0
End Sub
Public Sub cmdbutton2_Click()()
DoCmd.OpenForm "フォーム1"
Forms!フォーム1.タブ0.Value = 1
End Sub
Public Sub cmdbutton3_Click()()
DoCmd.OpenForm "フォーム1"
Forms!フォーム1.タブ0.Value = 2
End Sub
まず、現在のSQLを提示する事は可能でしょうか?
次に、テーブルを説明して下さい。組織1と組織2の違いは?連番1組織1と連番2組織1の違いは?旧組織テーブルに新しい連番を追加する場合と新組織テーブルに新しい連番を追加する場合がありそうだけど、使い分けのルールは?
返事が遅くなり申し訳ありません。
意図していることが出来ました、ありがとうございました。
今後もよろしくお願いいたします
新年早々お騒がせしました。
選択していたデータベースが間違っていました。
無事接続できました。
クロス集計クエリを元にするのではなく、テーブルを元に作成してみてください。
画像から推測すると「モダン グラフの挿入」でグラフを挿入したのだと思いますので、下記が参考になるかと思います。
ACCESSでグラフを作る方法 - たすけてACCESS
とりあえずこちらで下記のような感じでサンプルを作成してみました。
ソースのテーブルは下記のような感じで。
フォームに「モダン グラフの挿入」でグラフを挿入して下記のように設定しました。
追記
画像が小さくみにくいのですが、右側がExcelで1~12月それぞれ3年分のグラフになっています
左側がACCESSで、それぞれの年に12か月間のデータが入ってしまいます。
ACCESSの表はクロス集合でExcelの表と同じです。(ただしクロス集計なので1月の左に合計欄が出来ています。)
早速ありがとうございます。サンプル作成(画像貼り付け)に手間取っています。
とりあえずアップロ-ドで上のような表示が出ました。
print screenでExcelに張り付けたファイルです
DateDiff 関数
たぶんこれ(上の式)だと思うけど本当に単に同月であればいいなら
で
先ほどもう一度入力し直してみたらできました!
入力間違えないようにしたつもりだったのですが、間違えていたようです。
ご教示いただきありがとうございました。
回答するには情報不足ですね。
とりありず下記の情報を提示してください。
グラフの元になるデータ例
希望とするグラフの画像(エクセルではできるということなのでその画像)
現状のAccessでのグラフの画像
実際に記述したSQL文を提示してもらえますか。
あと、下記のクエリを開いて、削除されない空白の先頭文字コードが何になっているか教えてください。
ノーブレークスペースという単語を始めて聞きました。
ご提示いただいた関数で試してみましたが、うまくいきませんでした。
別の方法を考えてみます。
ご教示ありがとうございました。
ありがとうございます。Dir関数を使えばよかったのですね!
助かりました!
リンク先は下記のスペースのことですね。
ノーブレークスペース - Wikipedia
だとしたら、下記でどうでしょう。
おっしゃる通り、こちらの通りです。
会社のOffice365でも、自分で所持しているAccess2016でもほぼほぼは再現できています。
なるほどです。テキストボックスにするという方法も試してみます。
http://yamav102.cocolog-nifty.com/blog/2016/11/trim-735b.html
この記事に書かれているWEB上のデータ、というのが悪さをしている可能性もあるかもしれません。
その場合、記事内ではエクセルでの関数紹介でしたが、アクセスに転用する方法があればご教示いただきたいです。
ご提示いただいた方法で試しましたが、フィールド値がそのまま表示されました。
SQL文は以下の通りです。
外部エクセルデータリンク71Y、72Yのデータをユニオンクエリで結合し、
結合したQ21のクエリデータから担当者IDをTRIMしたい、という意図で組んだものです。
SELECT LTrim([Q21_71Y72Y結合]![担当者ID]) AS 担当者ID, Q21_71Y72Y結合.出向先CD, Count(Q21_71Y72Y結合.契約NO) AS 件数
FROM Q21_71Y72Y結合
GROUP BY LTrim([Q21_71Y72Y結合]![担当者ID]), Q21_71Y72Y結合.出向先CD
ORDER BY Q21_71Y72Y結合.出向先CD;
Trimを入れずに、
担当者ID: [担当者]![担当者ID]
としたときはフィールド値がそのまま表示されますか。
あと、そのクエリのSQL文を提示してもらえますか。
hatena様
遅くなり申し訳ございません。
できました。
ありがとうございました。
「F_2」フォームは開いた状態て実行してますか。
テキストボックス名は「テキスト0」で間違いないですか。
Debug.Print でイミディエイトウィンドウには正しく出力されてますか。
コードとしては、
Forms![F_2]![テキスト0] = Rs![部署]
だと上書きしますので、最後の1件のみの表示になります。下記のようにすれば、改行されて追加されます。
ソースオブジェクトにテーブル・クエリを設定したということですね。
そのフィールドのデータ型はYes/No型でしょうか。
ルックアップの表示コントロールは「チェックボックス」でしょうか。
上記設定で、当方のバージョン(Microsoft365)のAccessでは現象を再現できませんでした
テーブルのデザインビューでYes/No型のフィールドを下記のような設定にするとそれらしくはなります。
ルックアップの表示コントロールを「テキストボックス」にして、書式を下記のように設定する
;□;☑
前者の通りのご認識通りです。
テーブル・クエリ等をレコードソースにした普通のサブフォームコントロールです。
実際に大きさが変更できます。
画像はこちらです。
hatena様
ありがとうございます!ダイナセットでなく、スナップショットに設定という方法がありましたか!
新規入力フォームのご説明もありがとうございました。
再度、チャレンジしてみます。
チェックボックスコントロールそのものが何なのかを調べましょう。標準のチェックボックスはフォントは弄れませんよ
フォントで弄れるというのであれば、なにか外部の機能を組み込んで使っているのでしょう
Web検索すると、たとえば次のようなものがあるようです
エクセルのチェックボックスの大きさや文字サイズを変更する方法(Office Hackさん)
「サブフォームコントロール中のチェックボックス」とは何のことでしょうか。
サブフォームコントロール自体にはチェックボックスは配置できないので、
サブフォームコントロール内に埋め込んでいるフォーム内の詳細セクションに配置したチェックボックスのことだとして回答しましたが、そうではないのかな。
状況がよく分からないので、
現状のフォームのスクリーンショットを貼り付けてもらえますか。
チェックボックスの大きさが異なるものを2つ貼り付けてください。
hatena様
タイトルには入れましたが、対象としているのはサブフォームコントロール中のチェックボックスです。
こちらは、レイアウトビューの書式メニューのフォントに直接数値を設定すれば、大きさが変更可能と思います。
ただ、サブフォームコントロールによって?は、チェックボックスの大きさだけが変わらないものもあり、
ご相談させていただいた次第です。
履歴確認用の一覧フォーム
帳票フォーム
レコードセットプロパティを「スナップショット」に設定(これで更新不可になります)
新規入力フォーム
単票フォーム
データ入力用プロパティを「はい」に設定(新規レコードのみ表示させる)
このフォームに履歴確認用フォームを呼び出すボタンを配置するか、サブフォームとして履歴確認用フォームを埋め込む。
履歴確認用フォームの詳細セクションにコマンドボタンを配置しておいて、これをクリックしたら、カレントレコードのデータを新規入力フォームに転記するようにする。
以上で、いいのでは。
りんご様
>送り状業務支援システムを探して購入するべきです。難しければ、外注が最低限。
素直に市販の送り状作成ソフトで補うことにしました。
諸々アドバイス頂き、誠にありがとうございました。
送り状業務支援システムを探して購入するべきです。難しければ、外注が最低限。
うーん、正直、白い目で見られると思います。下手をすれば裁判沙汰になってもおかしくないでしょう。老後の趣味ならば微笑ましいですが。
それはそれとして、遅かれ早かれサービス終了も忘れてはいけません。
取り敢えず、各テーブル構造とフォームの概要をきちんと提示するほうが、回答がつきやすいと思います。
Dir 関数
チェックボックスにはフォントプロパティがないので、フォントサイズの指定はできないと思いますが、どのようにしましたか。
当方のAccessではできません。チェックボックスの大きさも固定です。
仕方がないので、下記の方法でテキストボックスを利用してチェックマークを表示するようにしてます。
hatena様
なるほどです。こんなやり方、思いつきませんでした。
ありがとうございます。
ご説明いただきありがとうございます。
Shift + F9 はRerueryと同じ処理なので、そういうことですね。
公式ページの説明にきちんと書いてあるのを見落としていました。申し訳ございません。
ただ仰る通りタイミングによっては重複の可能性がありますね。
こんな方法があるんですね!確かにこの方法であれば重複は回避できるかもしれません。
でも1年に一回あるかないかの話なので(今回も4,5年運用して初めて起こりました)、
あまりにも頻繁に起こるようでしたら、こちらの方法を試してみたいと思います。
「すべて更新」についてのご説明ありがとうございました。おかげさまで腑に落ちました。
また、代替案についても非常に参考になりました。
harePointのリンクテーブルを使ったことがないので、あくまで推測ですが、下記によると、
[ホーム] タブの[レコード]グループで [すべて更新] とマクロの再クエリ 、VBAの Requery は同じ処理のように読めます。
データの更新または再クエリを実行する - Microsoft サポート
ただし、
2人のユーザーがほとんど同時に、
再クエリして最大IDを取得して、それを利用してレコード保存した場合、再クエリとレコード保存のわずかな時間でも重なる場合がありえますので、その時は重複する可能性はあります。
その辺を厳密にするなら、採番用のテーブルを別に用意して、そこに最大ID番号を格納しておきます。
更新処理の最初にその採番用テーブルは排他的に開き(他ユーザーが開けないようにロック)、ID番号に1加算して、それを元にレコード保存して、採番用テーブルを閉じるようにします。
もし、他ユーザーが更新処理に入っていたら、採番用テーブルは開けないので、開けるようになるまでまって更新処理に入るという処理にする、という方法があるようです。
私自身はそこまでしたことはないですが、そういう方法もあるということで状況によってはその必要もあるかもしれません。
説明不足で申し訳ございません、使いたい背景を含め、補足させていただきます。
現在、SharePointのデータをリンクテーブル(T_入力元 とします)として置き、そのAccessファイルを複数人に配布して使用しています。
入力フォームで必要事項を入力後、登録ボタンを押すと「T_入力元」IDフィールドのMAX値+1を取得し、新しいIDで更新されるようにしています。
しかし、たとえばAさんが登録後、タイミングよくBさんが1,2秒後にすぐ登録しようとすると、T_入力元の最新情報がまだBさんのAccessファイル上では反映されておらず、Aさんと同じID番号を取得してしまう現象が起こります。
Aさんが登録直後、Bさんのほうで「すべて更新」をクリックするか、「T_入力元」リンクテーブルを開いて閉じる作業をすれば、すぐに最新の状態になることは確認済みです。
リンクテーブルの情報を最新に更新したいという希望でしたので、Refresh や Requeryではないのかな?という予想でした。
もちろんそれで対応できるなら全く問題ありません。
長くなり申し訳ございません、よろしくお願いいたします。
テーブル構造が正規化されていないので、データベースで処理するには非効率的になります。まずは、正規化してから処理すべきだと思います。
このままでするなら、演算フィールドの式を下記のようにすることになります。
正規化すれば集計クエリで簡単にかつ高速にご希望の結果が得られます。
なるほど、そり記事は見たのですが思いつきませんでした。
ありがとうございました。
そのコマンドは使ったことがないのでよくわかりませんが、
Refresh や Requery だと、どの点がご希望の動作と異なりますか。
タブコントロールのValueプロパティで、アクティブなページのインデックスの取得、設定ができます。