2010/05/04

access2010 ナビゲーションフォーム その2

サブフォームのOpen/Unload時のCancelに注意
トグルを読んでCancel=TrueになりOpenがキャンセルされサブフォームは開きません。
トグルをFalseにしてサブフォームを開く
トグルをTrueにして別のサブフォームに遷移
Unload時Cancelが聞かず画面遷移します。
バグなのか仕様なのか不明だ


Private Sub Form_Unload(Cancel As Integer)
    If MsgBox("Close form?", vbYesNo) = vbYes Then
        Me.Parent.EventAction = Me.Name & ":Form_Unload"
        Exit Sub
    Else
        Cancel = Me.Parent.toggle01
        Me.Parent.EventAction = Me.Name & ":Form_Unload:Cancel"
    End If
End Sub

Unload時のCancelができない状態

access2010 ナビゲーションフォーム

ナビゲーションフォームでのフォームイベントはどうなるのかなと。
通常のフォームでは、
(Open時)Open→Load→Resize→Activate→GotFocus→Current
(Close時)Unload→LostFocus→Deactivate→Close
で、ナビゲーションフォームの子フォームでは、
Open→Load→Resize→Current
Unload→Close
スルーされてるのがある

2010/05/03

access2010 Webブラウザーコントロール

ActiveXではなく、標準コントロールになったWebブラウザコントロール。配置すると、参照が追加されます。
できあがり










  
Const BaseUrl = "http://maps.google.co.jp/maps?hl=ja&dirflg=d&q="

Private Sub cmdGoogleMap_Click()
 Dim str As String
 str = Chr(61) & Chr(34) & BaseUrl & UrlEncodeUtf8(Nz(Me.txtQuery, "")) & Chr(34)
 Me.Webブラウザー0.ControlSource = str
End Sub

2010/05/02

access2010 データマクロ ユーザ定義関数

データマクロのとき
ユーザ定義の組み込み関数が選択できない
といってもビルダで選択できないだけの状態なだけで関数としては使用できた
なぜかというか確認した感じでは、ユーザ定義した関数を使用したデータアクションを持つテーブルにリンクテーブルを使用した場合、エラーが発生する。リンクの場合、クライアント側でアクションが発生するということですな。
C/S環境っぽくADO接続してみたが、クライアント側で実行時エラーです。
同一名の関数をクライアントでも持つと、 エラーは発生せず進行します。
Function GetNewGUID() As String
    GetNewGUID = "クライアントから実行"
End Function

ですが、
access以外もしくは2010以外からの接続については別の問題が発生しそうなので、データマクロ上でユーザ定義関数の使用はなしの方向でよいかと。
サーバ側で解決できない処理になるので、SQLサーバなどのTrigger同等ではなく似た機能ということ。

2010/05/01

access2010 データマクロで累計 見直し -AfterUpdate-

これも見直し
キーワードOldを使用して、フィールドの差をローカル変数に記憶し、更新したレコード以降の累計を更新