質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

Q&A

解決済

1回答

1499閲覧

サブフォームのレコードが順番に並んで表示されない

u_zu

総合スコア53

Access

Accessはマイクロソフトによるリレーショナルデータベース管理システムです。オブジェクト指向のアプリケーション作成に対応しており、テーブルや編集をはじめ、クエリ生成、入力フォーム作成、レポート作成など一通りの機能を備えています。

2グッド

1クリップ

投稿2023/04/24 03:16

編集2023/04/24 09:16

実現したいこと

簡単な会計の仕訳伝票入力画面をACCESSで作成しています。
親フォームの仕訳伝票IDでサブフォームと紐づけて、サブフォームにレコードの明細を入力、表示させます。
そのサブフォームのレコードを入力順に表示させたいため、
「並び順」というフィールドを設定し、
「借方科目名」「借方金額」「貸方科目名」「貸方金額」「摘要」のそれぞれのフィールドの更新後処理として

Me!並び順 = Me.CurrentRecord

という一文を設定しています。
これで並び順フィールドに、1.2.3 とレコード番号が設定されるのですが、
保存すると、並び順が変わってしまいます。

サブフォームのレコードソースは「並び順」フィールドの昇順設定をしているので、並び順が変わってしまうはずは
ないのですが。。。

また厄介なことに、並び順が変わってしまう場合や変わらない場合もあって、どういう場合に変わるのか、というような
法則が発見できません。

並び順が変わってしまう場合のスクリーンショットイメージ説明

並び順が変わらない場合のスクリーンショットイメージ説明

※「借方科目名」「借方金額」「貸方科目名」「貸方金額」「摘要」 はどこか一つでも入力されていればレコードしてOK、
という考えで運用を行います。

よろしくお願いします。

---追加---

サブフォームのレコードソースは以下の通りです(ACCESSなのでクエリをそのままSQL文で書きます)

SELECT T_仕訳明細.並び順, T_仕訳明細.ID, T_仕訳明細.仕訳ID, T_仕訳明細.借方科目名, T_仕訳明細.借方金額, T_仕訳明細.貸方科目名, T_仕訳明細.貸方金額, T_仕訳明細.摘要 FROM T_仕訳明細
ORDER BY T_仕訳明細.並び順;

logres_Fan👍を押しています
logres_Fan❤️を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

logres_Fan

2023/04/24 08:18

サブフォームのレコードソースのSQLをコピペして、質問文に追記できますか?
u_zu

2023/04/24 09:16

logres_Fanさん 質問に追記しました。
logres_Fan

2023/04/24 09:39

拝見しましたが、当てが外れました。ちょっとよくわかりませんね。あとは、下記設定があれば削除してみるとか。 フォームでのレコードの並べ替え(プロパティシートで設定) https://hamachan.info/win10-and-office2016/aform/
u_zu

2023/04/24 11:04

logers_Fanさん このサイトのように [Q_仕訳明細].[並び順] と設定したら、思うように昇順に並びました! ありがとうございます。 ただ、クエリで設定しているんですけどね。。。フォームのプロパティが優先されるのかもしれないですが。
logres_Fan

2023/04/24 11:40

うーん、Hatenaさんの回答待ちですね。 新しいフォームに順次トレースしてどのタイミングで再現するか、再現しなければ置き換える、これがベターですかね。
guest

回答1

0

ベストアンサー

Form.CurrentRecord プロパティ (Access)

設定値は、フォームに表示されているカレント レコードの番号を表す長整数型 ( Long Integer ) の値です。

表示する度に変わる値ですから、並び順に使用するのは無理があります。

明細の追加順にしたいのなら、オートナンバーを利用するか、独自に連番を振る事になるかと思います。

投稿2023/04/24 04:04

sazi

総合スコア25426

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

u_zu

2023/04/24 04:45

回答ありがとうございます。ただ、Me!並び順 = Me.CurrentRecord として、レコードを保存しているのですから、その保存された数値を基に昇順に表示されるはず、と思うのですが。。。(一旦保存されたあとに、再び Me!並び順 = Me.CurrentRecord の処理が行われる処理をしていないですし。。。) 私の理解が、何か違いますでしょうか?
sazi

2023/04/24 08:54 編集

リファレンスには、 > このプロパティの値は、フォームの左下のレコード番号ボックスに表示される値に対応します。 とあります。 同じ値が設定されたりしていないか意図通りの順番の値かどうかを、保存された値を確認してみて下さい。 並び順が意図通りでないなら意図通りでない値が保存されているはずです。
u_zu

2023/04/24 09:11

saziさん ありがとうございます。 確認しました。 レコードもやはり「並び順が変わってしまう場合のスクリーンショット」と同じ状態で保存されています。。。 これで昇順にならないなら、別な方法を考えます。
sazi

2023/04/25 00:35

Accessの付けた順序を利用するなら、全件更新するなら値は担保されると思いますが、常に表示分を全件更新すると考えた方が良いでしょう。 再表示された場合も含めて更新するとなると該当するイベントは無かったのではないかと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問