ざっくりだけどなんとか形になったので、オフライン時であっても使用できるようにしてみる。
オフラインで使用できるようにするためには、データマクロ以外を使用する。フォーム上の表示ロジックはそのまま使うとして、テーブル/クエリで必要な情報を拾ってくるでもよいのだけど、クライアントマクロで情報を生成してみる。
Webフォームのイベントでクライアントマクロの実行は可能。
今回使用しなかったけれどもWebフォームでVBAコード実行させることも可能。これについては、Use the IsClient() expression to conditionally run VBA from Web forms
クライアントフォームを開くことができるということは、開いたフォームを介して任意のプロシージャを実行できる。onOpenかonLoadでプロシージャ実行しフォームを閉じてしまえばいい。
<?xml version="1.0" encoding="UTF-16" standalone="no"?> <UserInterfaceMacros xmlns="http://schemas.microsoft.com/office/accessservices/2009/11/application"> <UserInterfaceMacro MinimumClientDesignVersion="14.0.0000.0000"> <Statements /> <Sub Name="GetData"> <Statements> <Action Collapsed="true" Name="SetLocalVar"> <Argument Name="Name">lclDate</Argument> <Argument Name="Expression">[TempVars]![DialogDatePickerForClient]</Argument> </Action> <Action Collapsed="true" Name="RemoveTempVar"> <Argument Name="Name">DialogDatePickerForClient</Argument> </Action> <Action Collapsed="true" Name="SetLocalVar"> <Argument Name="Name">lclYear2</Argument> <Argument Name="Expression">Year([LocalVars]![lclDate])</Argument> </Action> <Action Collapsed="true" Name="SetLocalVar"> <Argument Name="Name">lclMonth2</Argument> <Argument Name="Expression">Month([LocalVars]![lclDate])</Argument> </Action> <Action Collapsed="true" Name="SetLocalVar"> <Argument Name="Name">EndDateOfMonth1</Argument> <Argument Name="Expression">DateSerial([LocalVars]![lclYear2],[LocalVars]![lclMonth2],0)</Argument> </Action> <Action Collapsed="true" Name="SetLocalVar"> <Argument Name="Name">EndDateOfMonth2</Argument> <Argument Name="Expression">DateSerial([LocalVars]![lclYear2],[LocalVars]![lclMonth2]+1,0)</Argument> </Action> <Action Collapsed="true" Name="SetLocalVar"> <Argument Name="Name">EndDateOfMonth3</Argument> <Argument Name="Expression">DateSerial([LocalVars]![lclYear2],[LocalVars]![lclMonth2]+2,0)</Argument> </Action> <Action Collapsed="true" Name="SetLocalVar"> <Argument Name="Name">lclYear1</Argument> <Argument Name="Expression">Year([LocalVars]![EndDateOfMonth1])</Argument> </Action> <Action Collapsed="true" Name="SetLocalVar"> <Argument Name="Name">lclMonth1</Argument> <Argument Name="Expression">Month([LocalVars]![EndDateOfMonth1])</Argument> </Action> <Action Collapsed="true" Name="SetLocalVar"> <Argument Name="Name">lclYear3</Argument> <Argument Name="Expression">Year([LocalVars]![EndDateOfMonth3])</Argument> </Action> <Action Collapsed="true" Name="SetLocalVar"> <Argument Name="Name">lclMonth3</Argument> <Argument Name="Expression">Month([LocalVars]![EndDateOfMonth3])</Argument> </Action> <Action Collapsed="true" Name="SetLocalVar"> <Argument Name="Name">EndDateOfLastMonth1</Argument> <Argument Name="Expression">DateSerial([LocalVars]![lclYear1],[LocalVars]![lclMonth1],0)</Argument> </Action> <Action Collapsed="true" Name="SetLocalVar"> <Argument Name="Name">EndDayOfMonth1</Argument> <Argument Name="Expression">Right("0" & FormatNumber(Day([LocalVars]![EndDateOfMonth1]),0,0,0,0),2)</Argument> </Action> <Action Collapsed="true" Name="SetLocalVar"> <Argument Name="Name">EndDayOfMonth2</Argument> <Argument Name="Expression">Right("0" & FormatNumber(Day([LocalVars]![EndDateOfMonth2]),0,0,0,0),2)</Argument> </Action> <Action Collapsed="true" Name="SetLocalVar"> <Argument Name="Name">EndDayOfMonth3</Argument> <Argument Name="Expression">Right("0" & FormatNumber(Day([LocalVars]![EndDateOfMonth3]),0,0,0,0),2)</Argument> </Action> <Action Collapsed="true" Name="SetLocalVar"> <Argument Name="Name">EndDayOfLastMonth1</Argument> <Argument Name="Expression">Right("0" & FormatNumber(Day([LocalVars]![EndDateOfLastMonth1]),0,0,0,0),2)</Argument> </Action> <Action Collapsed="true" Name="SetLocalVar"> <Argument Name="Name">EndDayOfLastMonth2</Argument> <Argument Name="Expression">[LocalVars]![EndDayOfMonth1]</Argument> </Action> <Action Collapsed="true" Name="SetLocalVar"> <Argument Name="Name">EndDayOfLastMonth3</Argument> <Argument Name="Expression">[LocalVars]![EndDayOfMonth2]</Argument> </Action> <Action Collapsed="true" Name="SetLocalVar"> <Argument Name="Name">FirstDayOfCalendar1</Argument> <Argument Name="Expression">Right("0" & FormatNumber(Day([LocalVars]![EndDateOfLastMonth1]-Weekday([LocalVars]![EndDateOfLastMonth1]+1)+2),0,0,0,0),2)</Argument> </Action> <Action Collapsed="true" Name="SetLocalVar"> <Argument Name="Name">FirstDayOfCalendar2</Argument> <Argument Name="Expression">Right("0" & FormatNumber(Day([LocalVars]![EndDateOfMonth1]-Weekday([LocalVars]![EndDateOfMonth1]+1)+2),0,0,0,0),2)</Argument> </Action> <Action Collapsed="true" Name="SetLocalVar"> <Argument Name="Name">FirstDayOfCalendar3</Argument> <Argument Name="Expression">Right("0" & FormatNumber(Day([LocalVars]![EndDateOfMonth2]-Weekday([LocalVars]![EndDateOfMonth2]+1)+2),0,0,0,0),2)</Argument> </Action> <Action Collapsed="true" Name="SetLocalVar"> <Argument Name="Name">lclVar01</Argument> <Argument Name="Expression">FormatNumber([LocalVars]![lclYear1],0,0,0,0) & Right("0" & FormatNumber([LocalVars]![lclMonth1],0,0,0,0),2) & [LocalVars]![FirstDayOfCalendar1] & [LocalVars]![EndDayOfLastMonth1] & [LocalVars]![EndDayOfMonth1]</Argument> </Action> <Action Collapsed="true" Name="SetLocalVar"> <Argument Name="Name">lclVar02</Argument> <Argument Name="Expression">FormatNumber([LocalVars]![lclYear2],0,0,0,0) & Right("0" & FormatNumber([LocalVars]![lclMonth2],0,0,0,0),2) & [LocalVars]![FirstDayOfCalendar2] & [LocalVars]![EndDayOfLastMonth2] & [LocalVars]![EndDayOfMonth2]</Argument> </Action> <Action Collapsed="true" Name="SetLocalVar"> <Argument Name="Name">lclVar03</Argument> <Argument Name="Expression">FormatNumber([LocalVars]![lclYear3],0,0,0,0) & Right("0" & FormatNumber([LocalVars]![lclMonth3],0,0,0,0),2) & [LocalVars]![FirstDayOfCalendar3] & [LocalVars]![EndDayOfLastMonth3] & [LocalVars]![EndDayOfMonth3]</Argument> </Action> <Action Collapsed="true" Name="SetTempVar"> <Argument Name="Name">DialogDatePickerForClient</Argument> <Argument Name="Expression">[LocalVars]![lclVar01] & [LocalVars]![lclVar02] & [LocalVars]![lclVar03]</Argument> </Action> </Statements> </Sub> </UserInterfaceMacro> </UserInterfaceMacros>
0 件のコメント:
コメントを投稿