AccessRuntime

2014年05月19日

Access Runtime 業務利用のワナ・・・

KU です。
先週土曜日に、Access 2000 → Access Runtime に置き換える作業をやっていました。 

結構、ハマります。。。課題が多い。。。

一般的に陥りそうな箇所を 3 点ご紹介!

 フォームフィルタ・検索が一切、使用できない [1/3]

これは困りました。

↓ 検索と置換。これは Access Runtime にもあります。

FR


↓ レコードのナビゲーション。ここの検索(全フィールドから検索)もあります。

filter

↓ これがない! フィルター機能ですね…

ffilter

案件のお客様には、簡単なキーワード検索機能を作って差し上げました。。。

こういう感じのコードです。
Function FilterDate(ByVal V)
    If CDate(V) < CDate("1981/1/1") Then Error 1
    If CDate(V) > CDate("2034/1/1") Then Error 1
    FilterDate = V
End Function

Private Sub bKW検索_Click()
    Dim Keyword, Keywords$
    Keywords = InputBox("部分一致、検索")
    If Len(Keywords) = 0 Then
        Me.FilterOn = False
    Else
        Dim Fil$
        On Error Resume Next
        Fil = "(TRUE)"
        For Each Keyword In Split(Replace(Keywords, " ", " "), " ")
            Keyword = Trim(Keyword)
            If Len(Keyword) > 0 Then
                Fil = Fil & "AND((FALSE)"
                On Error Resume Next
                Fil = Fil & "OR(長整数で検索 = " & CLng(Keyword) & ")"
                Fil = Fil & "OR(部分一致で検索 LIKE '*" & Keyword & "*')"
                Fil = Fil & "OR(完全一致で検索 = '" & Keyword & "')"
                Fil = Fil & "OR(日付で検索 = '" & CDate(FilterDate(Keyword)) & "')"
                On Error GoTo 0
                Fil = Fil & ")"
            End If
        Next
        Me.Filter = Fil
        Me.FilterOn = True
    End If
End Sub

 右クリックでメニューが表示できない [2/3]

これも困りました。基本的に何も表示されません。

しかし、ネットで調べていると、コピペメニューを出す方法が判りました。

↓ こういう感じのコンテキストメニューを表示できます。うーん、有り難い。
RClkMenu






参考コード。Migikuri.bas:

Option Compare Database

Const msoBarPopup = 5
Const msoControlButton = 1

Public Sub 右クリック設定(ByVal F As Form)
    CreateGeneralClipBoardMenu
    
    ' http://infith.com/system/access/access_runtime_syscmd/
    If SysCmd(acSysCmdRuntime) Then
        For Each W In F.Controls
            ' http://www.access-programmers.co.uk/forums/showthread.php?t=260351
            If (TypeOf W Is TextBox) Or (TypeOf W Is ComboBox) Then
                W.ShortcutMenuBar = "GeneralClipboardMenu"
            End If
        Next
    End If

    F. ShortcutMenuBar = "GeneralClipboardMenu"
End Sub

Function CreateGeneralClipBoardMenu()
    On Error Resume Next
    CommandBars("GeneralClipboardMenu").Delete

    Dim cmb
    Set cmb = CommandBars.Add("GeneralClipboardMenu", msoBarPopup, False, False)

        With cmb
            .Controls.Add msoControlButton, 21, , , True  ' Cut
            .Controls.Add msoControlButton, 19, , , True  ' Copy
            .Controls.Add msoControlButton, 22, , , True  ' Paste
        End With

    Set cmb = Nothing
End Function

(5/20) レコードのコピペをなさりたい、とのことで、フォームにも適用するように修正。

使うときのコード。
Private Sub Form_Load()
    右クリック設定 Me
End Sub

 VBAエラーを補足できない [3/3]

accesserror

Access Runtime では、捕捉しないエラーは終了の原因になります。これは製品デザインのようなので、どうしようもありませんが…

エラー対策する必要があります。例:
- On Error GoTo や On Error Resume Next 参考
- OnError マクロ 参考



digitaldolphins at 13:24コメント(1) 
記事検索
5S活動と3S活動の手引き

livedoor プロフィール

digitaldolphins

Archives
QRコード
QRコード
  • ライブドアブログ