Access VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


2176 / 2272 ツリー ←次へ | 前へ→

【3581】連結フォームでの追加レコード ぷー 04/9/27(月) 13:22 質問[未読]
【3582】Re:連結フォームでの追加レコード クロ 04/9/27(月) 13:33 回答[未読]
【3583】Re:連結フォームでの追加レコード ぷー 04/9/27(月) 15:05 質問[未読]
【3585】Re:連結フォームでの追加レコード クロ 04/9/27(月) 15:23 回答[未読]
【3586】Re:連結フォームでの追加レコード ぷー 04/9/27(月) 16:07 質問[未読]
【3587】Re:連結フォームでの追加レコード クロ 04/9/27(月) 16:22 回答[未読]
【3588】Re:連結フォームでの追加レコード ぷー 04/9/27(月) 16:53 発言[未読]
【3591】Re:連結フォームでの追加レコード クロ 04/9/28(火) 8:17 回答[未読]
【3597】Re:連結フォームでの追加レコード ぷー 04/9/28(火) 16:29 お礼[未読]
【3598】Re:連結フォームでの追加レコード クロ 04/9/28(火) 17:08 回答[未読]
【3599】Re:連結フォームでの追加レコード ぷー 04/9/28(火) 17:59 お礼[未読]

【3581】連結フォームでの追加レコード
質問  ぷー  - 04/9/27(月) 13:22 -

引用なし
パスワード
   お世話になります。どなたか教えてください。

連結フォームでレコードを追加すると、そのレコードはフォーム上一番最後のレコードとなるようですが、連結しているテーブルのキー順に並べ替えたいのですが可能でしょうか。
可能であれば方法を教えてください。
よろしくお願いいたします。

【3582】Re:連結フォームでの追加レコード
回答  クロ  - 04/9/27(月) 13:33 -

引用なし
パスワード
   フォームプロパティの「並べ替え」にキーとなるフィールド書き込めば
よろしいので?

タイミングはフォームを開く時とかイベント辺りで
Me.OrderBy = "フィールド名"
Me.OrderByOn = True

【3583】Re:連結フォームでの追加レコード
質問  ぷー  - 04/9/27(月) 15:05 -

引用なし
パスワード
   クロさんありがとうございます。

試してみましたら、既存レコードの並べ替えはうまくいきますが、追加分のレコードはやはり一番最後にきてしまします。
(1度フォームを閉じて、また開けばOKですが・・・)
フォームをOpen中の連結テーブルの並べ替えは無理なのでしょうか?
何か良い方法がありましたら教えてください。

【3585】Re:連結フォームでの追加レコード
回答  クロ  - 04/9/27(月) 15:23 -

引用なし
パスワード
   入力している時は最後で仕方ないとして...
フォームの挿入後処理とかどうですか?

※この場合ソート後のレコードにフォーカスが行きます。
 Me.フィールド名.SetFocus
 DoCmd.GoToRecord , , acNewRec
 を追加すれば再び最後の入力レコードに移ります。

【3586】Re:連結フォームでの追加レコード
質問  ぷー  - 04/9/27(月) 16:07 -

引用なし
パスワード
   何度もありがとうございます。質問の仕方が中途半端でした。ごめんなさい。
並べ替えをしたい目的のひとつは、キー項目で並び替わった時の(追加処理後にテーブルを開いた時の並びと同じ)RecordCount が知りたいのです。
又、NEXTボタン等でレコードを移動していった時に、追加分もキー順に並べてほしいのです。(今は追加分が最後です)
よろしくお願いいたします。

【3587】Re:連結フォームでの追加レコード
回答  クロ  - 04/9/27(月) 16:22 -

引用なし
パスワード
   > 試してみましたら、既存レコードの並べ替えはうまくいきますが、
> 追加分のレコードはやはり一番最後にきてしまします。

フォームの構成が今一分からないのですが、追加分のレコードとはどういうことで
しょうか?そのフォームそのもので入力するのでなく別のフォームからそのフォーム
のレコードソースとなるテーブルにレコードを転送しているとか?
メイン/サブフォームを使っているとか?
そのフォームのプロパティ並び替えに直接並び替えるフィールドを記入して、リクエリ
とかで済みませんか?

RecordCountはキー項目が「並び替え」されなくともカウントできませんか?
もしくはDcountではマズイのでしょうか?

【3588】Re:連結フォームでの追加レコード
発言  ぷー  - 04/9/27(月) 16:53 -

引用なし
パスワード
   >フォームの構成が今一分からないのですが、追加分のレコードとはどういうことで
>しょうか?そのフォームそのもので入力するのでなく別のフォームからそのフォーム
>のレコードソースとなるテーブルにレコードを転送しているとか?
>メイン/サブフォームを使っているとか?

説明が不足ですみません。フォームは単表形式のオートファーマットで作製したフォームと考えてください。そして、そのフォームの中に、メインフォームと同一テーブール内容のリストボックス(非連結)があります。
そこでレコードの追加・更新・削除をし、カレントレコードとリストボックスの値の同期を取っています。
追加処理以外の同期は成功したのですが、追加処理後はRecordcountでコントロールしているために、同期が取れなくなってしまいます。
説明が上手に出来ませんが、よろしくお願いいたします。

【3591】Re:連結フォームでの追加レコード
回答  クロ  - 04/9/28(火) 8:17 -

引用なし
パスワード
   ひょっとしたらフォームプロパティの「並べ替え」をキーコードに固定して
フォームの挿入後処理辺りで

Private Sub Form_AfterInsert()
Dim str As Long
 '現在入力したキーコードを変数格納
 str = Me.キーコード
 'フォーム自身をリクエリ
 Me.Requery
 '格納したキーコードでレコード移動
 DoCmd.FindRecord str
 'リストボックスのリクエリ
 Me.リストボックス名.Requery
End Sub

ではどうですか?

【3597】Re:連結フォームでの追加レコード
お礼  ぷー  - 04/9/28(火) 16:29 -

引用なし
パスワード
   ありがとうございます。
おかげさまで並べ替えと追加レコードをカレントレコードにするまでは、うまく行っているようですが、Private Sub Form_AfterInsert()のイベントを発生させるア
クションが、独自に作ったレコード移動ボタンで行っており、ここでエラーになってしまいます。
いろいろ試してみましたが、自分の知識では無理でした。
なにか、良い方法がないでしょうか?

Private Sub 次へ_Click()
  If Me.CurrentRecord = Me.Recordset.RecordCount Then
    MsgBox "次のレコードはありません"
  Else
    DoCmd.GoToRecord , , acNext  <--- ここからPrivate Sub                                Form_AfterInsertへ
                      戻ってきた時にエラー   
  End If
End Sub

※Err:指定したレコードに移動できません

【3598】Re:連結フォームでの追加レコード
回答  クロ  - 04/9/28(火) 17:08 -

引用なし
パスワード
   Private Sub 次へ_Click()
Dim str As Long
str = Me.キーコード
  If Me.CurrentRecord = Me.Recordset.RecordCount Then
    MsgBox "次のレコードはありません"
  ElseIf Me.NewRecord = True Then
    Me.Requery
    DoCmd.FindRecord str
    Me.リストボックス名.Requery
  Else
    DoCmd.GoToRecord , , acNext
  End If
End Sub

こんな感じでしょうか?

【3599】Re:連結フォームでの追加レコード
お礼  ぷー  - 04/9/28(火) 17:59 -

引用なし
パスワード
   できました〜!!!

クロさん、ありがとうございました。
なんとお礼を申してよいやら・・・
本当に助かりました。
ありがとうございました。

2176 / 2272 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
1078316
(SS)C-BOARD v3.8 is Free