2015/03/17

Access 2016 Preview

プレビューが来ました。が、Access に変更はないはず。
目玉は、Excel の機能強化と DLP とかじゃないかな。
Office Blogs : Announcing the Office 2016 IT Pro and Developer Preview
Flexible update management. We’ve created a way for admins to manage the pace at which they receive feature updates and bug fixes while continuing to receive regular security updates.
というのもポイント。機能の更新とセキュリティの更新の管理が個別にできるということかな。
IT プロフェッショナルおよび開発者向けの Office 2016 プレビュー を発表
柔軟な更新プログラム管理: セキュリティ更新プログラムを定期受信するように設定したまま、機能の更新や不具合の修正の受信ペースを管理者が管理できるようになります。

2014/12/10

Office 2013 クイック実行 Office 展開 - 8

Office 365 Advent Calendar 2014 に参加しています。10日目のポストです。

やっておかないとと思いつつ放置していた内容なのですが、いい機会なのでまとめ的にポストしています。クイック実行 / Click-to-Run の Office をできるだけ負担を少なく展開し更新の運用をしてみようという内容です。早速ですが 2014年分のデータ です。


Office 2013 は 2014/2 にSP1がリリースされていますので、相当するリリース(15.0.4569.1507)をインストールした状態から順次更新をしていった場合のダウンロード量を測ってみました。集計にはIISのログを使用しています。新規にインストールしようとするとき、更新を適用しようとするときにそれぞれダウンロードが必要になり、相応の流量を見積もっておく必要があるという傾向みたいなものです。この程度まったく平気だという環境ならばよいのですが。。。

2014/12/04

Office 365 Access アプリ -52- Download in Excel

Access アプリ の新機能
データシート ビュー から Excel ファイル(xlsx) のダウンロードができるようになった。
すでに配置された Access アプリ も順次アップグレードされていくはず。
Introducing a new feature in Access 2013 web apps—Download in Excel
しばらく前に情報は公開されていたのだけど、手元の環境で使用できるなったのでさらっと確認。小難しい内容は全くなく、コマンドボタンが自動的に配備されるから特段の手順などなく使えるようになる。特徴は 生成された Excel ファイルをダウンロードするということと、ダウンロードするとき最新のレコードを出力するから ビュー に表示されている レコード と異なる場合があること。


2014/08/24

Access 2013 ODBC リンク テーブル と SQL Server - 12

RecordsetOptionEnum 列挙 (DAO) dbSeeChanges
編集中のデータを別のユーザーが変更している場合、実行時エラーを生成します (ダイナセット タイプのみ)。
レコードが更新されていないことを確認して更新をする仕組み(オプティミスティック同時実行制御)になっている。この時発生する可能性がある実行時エラー は、
3197 :
The Microsoft Access database engine stopped the process because you and another user are attempting to change the same data at the same time.
他のユーザーが同じデータに対して同時に変更を試みているので、プロセスが停止しました。
なのだけど、
You must use the dbSeeChanges option with OpenRecordset when accessing a SQL Server table that has an IDENTITY column.
 IDENTITY 列を持つ SQL Server テーブルにアクセスする場合は、OpenRecordset で dbSeeChanges オプションを使用する必要があります。
なので、 dbSeeChanges を使用する必要がある。
そして、更新可能な レコードセットはその都度レコードを取得するので、何も考えずに使用すると遅い!とか言われることになる。そんな話。

2014/08/12

Access 2013 ODBC リンク テーブル と SQL Server - 11

さて、Recordset オブジェクト (DAO) です。Database.OpenRecordset メソッド (DAO)で Recordset を取得する。まずは、テーブル定義。都合がよいときもあるので rowversion (Transact-SQL)を持たせている。
CREATE TABLE Table_0(
  ID     int IDENTITY(1,1)
 ,F_Num  int
 ,F_Date date
 ,F_TS   rowversion
 CONSTRAINT PK_Table_0 PRIMARY KEY CLUSTERED (ID ASC)
)
この時、こんな感じでRecordsetを取り扱う。
Sub DAORecordset_Dynaset()
    Dim rs As DAO.Recordset
    Set rs = CurrentDb.OpenRecordset( _
                "SELECT ID, F_Num FROM Table_0" _
              , DAO.RecordsetTypeEnum.dbOpenDynaset _
              , DAO.RecordsetOptionEnum.dbSeeChanges _
              )
End Sub
レコードの更新/削除が可能。また、フィールドに主キーが含まれているから、レコードの追加が可能。なければ追加できない。OpenRecordset メソッドが実行された時、
SQLExecDirect: SELECT "dbo"."Table_0"."ID" FROM "dbo"."Table_0" 
SQLPrepare: SELECT "ID","F_Num","F_TS"  FROM "dbo"."Table_0"  WHERE "ID" = ?
SQLExecute: (GOTO BOOKMARK)
SQLExecute: (GOTO BOOKMARK)
最初に主キーのみ取得する。条件があれば条件に該当する主キーのみ取得。その主キーを利用してレコードを取得する。該当するレコードがあれば先頭のレコードのみ取得まで。該当する他のレコードをすぐさま取得しないことと rowversion のフィールドを自動的に取得することがポイント。