Page 311 ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 通常モードに戻る ┃ INDEX ┃ ≪前へ │ 次へ≫ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ▼値の更新 アガペー 03/6/18(水) 12:04 ┣Re:値の更新 こうちゃん 03/6/18(水) 16:14 ┃ ┗やはりダメです アガペー 03/6/20(金) 17:55 ┃ ┗Re:やはりダメです こうちゃん 03/6/23(月) 12:57 ┃ ┗解決しました アガペー 03/6/23(月) 13:29 ┗Re:値の更新 JAZZ兵衛 03/6/21(土) 17:44 ─────────────────────────────────────── ■題名 : 値の更新 ■名前 : アガペー ■日付 : 03/6/18(水) 12:04 -------------------------------------------------------------------------
いつもお世話になります。 次のようなコードを書いてたのですが、 フォームのカレントレコードの値がすぐに更新しません。 一度レコードを移動して再び戻ってクリックすれば 反映するのですが。 Updateを使うのかなと思うのですが、何分初心者で よくわかりません。 みなさんの知恵をお貸しくださいませ。 Private Sub 繰越計算_Click() Dim mydb As New ADODB.Connection Dim rs1 As New ADODB.Recordset Dim rs2 As New ADODB.Recordset Dim hassei As Long Dim nyukin As Long Set mydb = CurrentProject.Connection Set rs1 = New ADODB.Recordset rs1.CursorLocation = adUseClient rs1.Open "T_入金1", mydb rs1.Filter = "お客様No.= '" & Me!お客様No. & " ' " Set rs2 = New ADODB.Recordset rs2.CursorLocation = adUseClient rs2.Open "T_入金2", mydb rs2.Filter = "お客様No.= '" & Me!お客様No. & " ' " hassei = Nz(DSum("保険請求額", "T_入金1", "お客様No. = '" & Me!お客様No. & " ' AND 対象年月 <= # " & Me!対象年月 & " # ")) nyukin = Nz(DSum("入・保", "T_入金2", "お客様No. = '" & Me!お客様No. & " ' AND 対象年月 <= # " & Me!対象年月 & " # ")) Me!残・保 = hassei - nyukin Me!繰・保 = Me!残・保 + Me!入・保 - Me!発・保 rs1.Requery rs1.Close Set rs1 = Nothing rs2.Requery rs2.Close Set rs2 = Nothing Set mydb = Nothing End Sub |
アガペーさん、こんにちは Repaintメソッドでフォームの表示を更新してみてください。 詳細はHELPで確認してください。 >Private Sub 繰越計算_Click() >Dim mydb As New ADODB.Connection >Dim rs1 As New ADODB.Recordset >Dim rs2 As New ADODB.Recordset >Dim hassei As Long >Dim nyukin As Long > >Set mydb = CurrentProject.Connection > >Set rs1 = New ADODB.Recordset >rs1.CursorLocation = adUseClient >rs1.Open "T_入金1", mydb >rs1.Filter = "お客様No.= '" & Me!お客様No. & " ' " > >Set rs2 = New ADODB.Recordset >rs2.CursorLocation = adUseClient >rs2.Open "T_入金2", mydb >rs2.Filter = "お客様No.= '" & Me!お客様No. & " ' " > >hassei = Nz(DSum("保険請求額", "T_入金1", "お客様No. = '" & Me!お客様No. & " ' AND 対象年月 <= # " & Me!対象年月 & " # ")) >nyukin = Nz(DSum("入・保", "T_入金2", "お客様No. = '" & Me!お客様No. & " ' AND 対象年月 <= # " & Me!対象年月 & " # ")) >Me!残・保 = hassei - nyukin > >Me!繰・保 = Me!残・保 + Me!入・保 - Me!発・保 > >rs1.Requery >rs1.Close >Set rs1 = Nothing > >rs2.Requery >rs2.Close >Set rs2 = Nothing > >Set mydb = Nothing > Me.Repaint >End Sub |
こうちゃんさん 早速のレスありがとうございます。 Repaintでやってみましたがダメで、Refresh にしたら今度はレコードを移動させず、カレントレコードで ボタンを2回押せば更新するようになりました。 いずれにしても正しく動いてはいません。 何か改善策はないものでしょうか? |
アガペーさん、こんにちは あまりよく見ずに答えてしまいました。条件を確認させてください。 ご提示いただいたコードは抜粋というか、「例」ですよね? フォームは連結フォームですか? Me!残・保、Me!繰・保 はこのモジュールで計算していますので、非連結? Me!入・保、Me!発・保 はどうですか? このコードだけでは rs1、rs2を何に使用しているかがよくわかりません。 rs1.Requery 等も意味がわかりません。 もし連結フォームで、元のテーブルを一部書き換えたあと、その値をフォームに反映させたいってことなら Me.Requery を使って、フォームのレコードソースを更新してみてください。 |
こうちゃんさん、JAZZ兵衛さん ご指導有難うございました。 filterの後にこうちゃんさんがおっしゃられた Me.Requeryを書くと正しく動くようになりました。 ただどうしてかというのがよくわからないので もう一度コードを調べてみようと思います。 今回は有難うございました。 |
Refreshは? ソースをよく見てないから、何ともいえませんが、 Requeryの前でRefreshしてみてはいかがでしょうか。 |