2011/03/25

access2010 Webデータベース その9 日付書式と関数をどうするか

Webデータベースの場合、日付書式や関数に制限がある。SharePoint上で動作するのだから、これはやむを得ない。だけど何とかしたいことがある。
クライアントデータベースの場合、Format(Date,"yyyy/mm/dd (ddd)")やFormat(Date,"ww") とかできるのだけど、これができない。これらを実現しようとする場合、集計フィールド/データマクロ/クエリでやりくりしよう。


Format(date,"ww")の代替案
Format(date,"yyyy/mm/dd (ddd)")の代替案
クエリでもよし
データマクロを関数のように使う
呼び出し例

<?xml version="1.0" encoding="UTF-16" standalone="no"?>
<DataMacros xmlns="http://schemas.microsoft.com/office/accessservices/2009/11/application">
  <DataMacro Name="GetFormatDate">
    <Parameters>
      <Parameter Name="paramDate" Description="日付" />
    </Parameters>
    <Statements>
      <Action Name="SetReturnVar">
        <Argument Name="Name">rtnGetFormatDate</Argument>
        <Argument Name="Value">FormatDateTime(Int([paramDate])) &amp; " (" &amp; Choose(Weekday([paramDate],1),"Sun","Mon","Tue","Wed","Thu","Fri","Sat") &amp; ")"</Argument>
      </Action>
    </Statements>
  </DataMacro>
</DataMacros>
<?xml version="1.0" encoding="UTF-16" standalone="no"?>
<DataMacros xmlns="http://schemas.microsoft.com/office/accessservices/2009/11/application">
  <DataMacro Name="GetWeekNum">
    <Parameters>
      <Parameter Name="paramDate" Description="日付" />
    </Parameters>
    <Statements>
      <Action Name="SetReturnVar">
        <Argument Name="Name">rtnGetWeekNum</Argument>
        <Argument Name="Value">Int(([paramDate]-DateSerial(Year([paramDate]),1,1)+(Weekday(DateSerial(Year([paramDate]),1,1))-1))/7)+1</Argument>
      </Action>
    </Statements>
  </DataMacro>
</DataMacros>

0 件のコメント: