2011/05/06

access2010 access2007 フォームがフォーカスを失っちゃう

MS Answersに投稿したのだけど、ADODB.RecordSetをフォームのレコードセットとした場合、フォームがアクティブにならない件。

access2010でSetFocusが使えない

こんな感じになる。フォームをクリックするなど操作しないとならなくなる。


コーディングが悪いのかどうかは突き詰めてはいない。ちょっとコードを加えれば解決するようだから。
Option Compare Database
Option Explicit

Private Sub Form_Load()
    Set Me.Recordset = GettmpRs
End Sub

Private Sub cmdBind_Click()
    Set Me.Recordset = GettmpRs
    Me.Visible = False
    Me.Visible = True
End Sub

Private Function GettmpRs() As ADODB.Recordset
    Dim tmpRs As New ADODB.Recordset
    Dim SourceRs As New ADODB.Recordset
    Dim strm As New ADODB.Stream

    SourceRs.Open "table01", _
                  CurrentProject.AccessConnection, _
                  adOpenKeyset, _
                  adLockOptimistic
    
    strm.Open
    SourceRs.Save strm
    tmpRs.Open strm

    Set GettmpRs = tmpRs.Clone
    
    strm.Close: Set strm = Nothing
    tmpRs.Close: Set tmpRs = Nothing
    SourceRs.Close: Set SourceRs = Nothing
End Function
Open/Loadイベントでは問題ないのだけど、任意で実行するとどうにも調子がわるい。

AccessClub覗いてたら、オンメモリのRecordSetを作ってフォームのレコードソースにするコードを以前にやりかけていたのを思い出して、これもついでにメモ。なんかの拍子で強制終了してしまうのであまり使おうとはしていなかった。レコードソースにしなければ別に問題はないかな。

0 件のコメント: