2011/04/30

access2010 Webデータベース その35 レコードの保存 -1-

Webフォーム(ダイアログ)でRunMenuCommand/メニューコマンドの実行 レコードの保存をするとき、他ユーザによりレコードの編集や削除がされているかもしれない。システムのアラートでもよいのだけどエラー制御とかちょっと検討。
クライアントフォームとは違ってForm.Errorイベントがないから、レコード(SharePointアイテム)の操作はダイアログフォームで実行したほうがよいのだろうな。

2011/04/29

access2010 Webデータベース その34 SharePointグループ -2-

** Office365beta(プランP1) 環境 **
前回に引き続き、SharePointグループでアクセス権限を調整してみる。AccessServicesサイトの権限を親サイトの権限を継承せず独自に設定した内容であったが、もう少し細かくできるのでその感じを整理しておく。
Webテーブル(SharePointリスト)の権限をAccessServicesサイトから継承しないで個別に設定してみる。AccessServicesサイト固有の機能ではなくSharePointリストの機能だ。但し、access2010を用いて設定できるものではないから、推奨されない使用方法なのかもしれない。
 始まりはいつもここから。サイトの権限をに移動。

2011/04/28

access2010 Webデータベース その33 SharePointグループ -1-

** Office365beta(プランP1) 環境 **
その28の続き、Access Servicesサイトにサイト独自のSharePointグループを設定しアクセス許可レベルによって大まかに投稿、閲覧でユーザ権限を制御してみる。SharePointの設定の内容が殆ど。

始まりはここから。サイトの権限に移動。

2011/04/27

access2010 Webデータベース その32 RefreshRecord/レコードの更新

** Office365beta(プランP1) 環境 **
RefreshRecord/レコードの更新とRequery/再クエリマクロアクションの使いどころみたいな話
ブラウザ上のWebフォームが保持しているレコードセットは自動的に同期されることはないから必要に応じてRefreshRecordかRequeryしてやらないとならないということだろう。
RefreshRecordは、form.Refreshメソッドとほぼ同じなのだろうけど。

2011/04/23

Office2010 コンパイラ定数 ついつい確かめてしまうからメモ

Option Compare Database
Option Explicit

#If VBA7 Then
    Const V = "VBA7"
#Else
    Const V = "VBA6"
#End If

#If Win64 Then
    Const W = "Win64"
#ElseIf Win32 Then
    Const W = "Win32"
#End If

Sub test()
    Debug.Print V, W
End Sub

Win7(32)+Office2010(32)   VBA7          Win32
Win7(64)+Office2010(64)   VBA7          Win64
Win7(64)+Office2010(32)   VBA7          Win32

2011/04/22

access2010 Webデータベース その31 Office365 Access Servicesサイトのタイムゾーン

Office365でAccess Servicesサイトのタイムゾーンがおかしい
自動的に作成される重要なテーブル

いろいろ試してみたものの、常にUTC-7になる。多分その影響だと思っているんだけど、データマクロなのでNowを取得するとサイトのタイムゾーンはUTC+9であるのだがUTC-7が取得できる。時間日付は正確に取れないというのはだめだと思う。フォーラムに投げてはいるけどまだ明確な回答はない。
まぁベータですからよいのだけれども、早いとこ解決してほしいな。

access2010 Webデータベース その30 リボンを制御

** Office365beta(プランP1) 環境 **  
Webデータベースとして運用はaccdbの形式だから、リボンのコントロールをしておきたい。ユーザは原則的にSharePointユーザで限定や特定できるから、きっちりかっちり固める必要がないのかもしれないが、不用意なことが起きないようにということぐらいの意味合いで用意しておこうと思う。
基本的には通常のリボン制御と何ら変わりはない。USysRibbonsテーブルもしくはRibbonXMLが格納されているテーブルがWebテーブルになるということだけ。
強いて言えば、SharePointグループ/ユーザ情報を参照してグループもしくはユーザごとに使用するリボンを切り替えることができるから、この特徴的な機能は使用していくことを検討しておく。

【サンプル】
アクセス許可レベルがデザインのグループとそれ以外のグループでリボンを制御する。
単純な制御として、前者は既定のリボンを表示し使用できるようにする。後者はリボンを非表示にする。

access2010 accdeのアプリケーションパーツ

accdeで配布する場合、アプリケーションパーツは少なくとも使用不可の状態にしておいたほうがいい。

使用不可にした
 そうしないと、消せないフォームが追加されることになるから。

access2010 Webデータベース その29 ヘッダというかツールバーというか

** Office365beta(プランP1) 環境 ** 
The Access Show - Making Beautiful Access Web Applications を見てて、
アプリケーション名とかオプションのあるトップバー
こうならないだろうかと
思っただけ。

2011/04/20

access2010 SharePointグループ/ユーザ名をチラ見

** Office365beta(プランP1) 環境 **
SharePointグループ/ユーザのIDとか名前をちら見する
SharePointリスト:UserInfoをリンクテーブルにするなりインポートすればよいのだけど。

Sub LookUpSharePointGroupsUsers()
    Dim cn As Object, rs As Object, cnStr As String
    Set cn = CreateObject("ADODB.Connection")
    Set rs = CreateObject("ADODB.Recordset")
    
    cnStr = "Provider=Microsoft.ACE.OLEDB.12.0;WSS;" & _
        "IMEX=1;" & _
        "DATABASE=http://SharePointSiteURL;" & _
        "LIST=UserInfo;"
    
    cn.Open cnStr
    rs.Open "Select ID,名前 From UserInfo " & _
            "where [コンテンツ タイプ]='SharePointGroup' " & _
                   "and 削除済み=0;", cn
'   rs.Open "Select ID,名前 From UserInfo " & _
'            "where [コンテンツ タイプ]='Person' " & _
'                   "and 削除済み=0;", cn
    Debug.Print rs.GetString

    rs.Close: Set rs = Nothing
    cn.Close: Set cn = Nothing
End Sub

access2010 Webデータベース その28 Office365 Access Services使用環境作成メモ

** Office365beta(プランP1) 環境 **
Office365beta SharePoint Online上のAccess Servicesを試す環境準備メモ

Office365サインアップ済みでSharePoint Onlineが利用できる状態にあること。
開始直後だと、地域の設定→タイムゾーンがUTC+9になってないかも。
ちょっと変えているけど、ほぼ既定の状態
既定で http://hogehoge.sharepoint.com/teamsite が作成されているが、いろいろお試しすることと訳が分からなくなったときワイプしてしまってもいいように、既定のチームサイトを使用せずWebデータベース用のサイト http://hogehoge.sharepoint.com/webdbsite を作成する。
実運用では、TeamSiteのサブサイトとしてAccess Servicesサイトを発行のこと。なぜなら匿名でアクセスできるはずだから。

access2010 Recent Sharepoint Sites

SharePointサイトURL履歴の格納先
Backstage

ウィザード

HKEY_CURRENT_USER\Software\Microsoft\Office\14.0\Common\Recent Sharepoint Sites

2011/04/19

access2010 Webデータベース その27 Access Servicesサイト/Webテーブルの削除

** Office365beta(プランP1) 環境 ** 
サイトの削除ができないことについて。
5000レコード以上のWebテーブルがある場合、テーブル単体の削除含め、Access Servicesサイトの削除ができない。

リストビューの仕様によるものでしょうね。詳しくは、
大容量リストの設計とリスト パフォーマンスの最大化に書いてあったと思う。

2011/04/18

access2010 Webデータベース その26 もうひとつのフィールド数制限

** Office365beta(プランP1) 環境 **
Webテーブルには、もうひとつのフィールド数制限がある。
メッセージ内容だとよくわからない
accessテーブルに使用できるフィールドの最大値は255。これに加え、Webテーブルには別の制限がある。これはSharePoint Serverの仕様によるもの。レコードが多くなった場合、パフォーマンスに影響することらしいから、認識したうえで設計をしておいたほうがよいのだろう。

access2010 Webデータベース その25 Office365 Access Services Settings -2-

前回に続いて他の項目も。
** Office365beta(プランP1) 環境 **


クエリ 1 つあたりの ORDER BY 句の最大数:4


2011/04/17

access2010 SharePointリスト ADO接続

Sub ADOTest()
    Dim cn As New ADODB.Connection
    Dim rs As New ADODB.Recordset
    Dim cnStr As String
    
    cnStr = "Provider=Microsoft.ACE.OLEDB.12.0;WSS;" & _
            "IMEX=2;" & _
            "DATABASE=http://SharePointServerURL;" & _
            "LIST=ListName or ListGUID;" & _
            "VIEW=ViewGUID;"
            'IMEX=1 ReadOnly
    cn.Open cnStr
    rs.Open "Select * From XXX where ID=1;", cn, adOpenKeyset, adLockOptimistic
    rs.Update rs(1).Name, 1
    rs.Close: Set rs = Nothing
    cn.Close: Set cn = Nothing
End Sub

access2010 SharePointリストをリンクする

Option Compare Database
Option Explicit

Sub SharePointList_Link()
    Dim tdf As TableDef
    Set tdf = CurrentDb.CreateTableDef("ListXX")
    tdf.Connect = "ACEWSS;HDR=NO;IMEX=2;" & _
                  "ACCDB=YES;" & _
                  "DATABASE=http://SharePointSiteURL;" & _
                  "LIST=ListName or ListGUID;" & _
                  "VIEW=ViewGUID;" & _
                  "RetrieveIds=Yes"
                  'IMEX=1 ReadOnly
    tdf.SourceTableName = "ListName"
    CurrentDb.TableDefs.Append tdf
    Application.RefreshDatabaseWindow
End Sub

access2010 DoCmd.TransferSharePointList

SharePoint Server からリストをインポートもしくはリンクしてみる。
ついでに判らなかったことも整理。
** Office365beta(プランP1) 環境 ** 

GUIDってどこ見りゃいいのよって感じだったわけだが、、、

2011/04/16

access2010 Webデータベース その24 Webテーブル インデックス

** Office365beta(プランP1) 環境 **
Webテーブルのインデックスを追加しようとした場合、失敗することがある。

access2010 Webデータベース その23 Office365 Access Services Settings -1-

思いのほかOffice365 SharePoint Onlineの使い勝手がよい。ベータ期間中なのだけどしばらくはこの環境であんなことこんなことやってみる。

** Office365beta(プランP1) 環境 **
基本的には、Access Services を設定および構成する (SharePoint Server 2010)と同様なのだろう。ただMSDNの情報とは値が違っている点もあるので警告が出ない場合もある。
取り急ぎ、クエリ 1 つあたりの最大列数とクエリ 1 つあたりの最大行数

access2010 Webデータベース その22 Webテーブルのコピー

Webテーブルをコピーして作成することは、クライアントテーブル同様可能なのだけど、
こんなことになる。
SharePoint独自のフィールドが4個ずつ増えていく寸法。無駄なフィールドが増えていくことになるのでやめておこう。未発行のWebデータベース上でコピーしてインポートしたほうがよさげ。

2011/04/15

access2010 SP1だってさ KB2533794

Acc2010: You receive error "The database cannot be opened because the VBA project contained in it cannot be read" when running a compiled Microsoft Access MDE, ACCDE or ADE file in Office Access 2010 (64-bit only)

SP1ってことらしいが、、、
Microsoft Office Access 2010 SP1 uses a newer version of VBE7.DLL (7.00.1619)
だと。

access2010/64bit/SP1で発行したaccde/mde/ade、要はソースコードがないファイルは、現行のaccess2010/64bitでは開くことができないという。access2010/32bitではこの現象は発生しない。
そして、これといった対策はない。
展開先に合わせたバージョンで発行しなさいということ。


つらっと斜め読み。ん、リンク先消えた?

access2010 Webデータベース その21 Office365 SharePoint Online -2-

なぜだろか、レポートが使えないのである。
仕様ならがっかりだな。SQLAzureだったっけか

2011/04/14

access2010 Webデータベース その20 Office365 SharePoint Online -1-

SharePoint Onlineが有効になったので、Office365でWebデータベースを試してみる。まずは取っ掛かり。
利用できるようになった
で、さっそく発行してみた。

access2010 Webデータベース その19 CurrentWebUser/CurrentWebUserGroups/IsCurrentWebUserInGroup

ログインしているSharePoint上のユーザ情報を取得するメソッド CurrentWebUser/CurrentWebUserGroups
オフライン時でも取得できる

2011/04/13

Office365ベータ来た

やっときたって感じさっそく。偶然早起きしてたので。
サインアップした後。英語だけどプロファイルで表示言語を切り替えた


2011/04/12

access2010 Webデータベース その18 クエリの仕様

Access Services - Queries which are updateable on the client cannot be updated on the server.
Access Services上のクエリ仕様について。
1対多のリレーションが2段以上になるとき
この状態にあるとき、クライアント/ブラウザ上での挙動が違い、更新できるテーブルは異なる。
これは仕様であるという内容。

2011/04/11

access2010 Webデータベース その17 Webブラウザコントロール

主な操作は、Sharepoint2010 および SharePoint Designerなのだけど、Access servicesサイトフォーム上のWebブラウザコントロールで、サイト上の共有ドキュメントもしくはサイトページを表示させたかった。
こんな感じにしたかった

2011/04/09

access2010 Webデータベース その16 URL Query Parameter

URLのクエリパラメータについて

http://ServerURL/AppName/default.aspx#Name=FormName&Type=Form&Where==ID=1
という感じ。 Name/Type/Where/Path/Page/DataModeがあるところまで確認したのだけど、要は参照先/BrowseToの引数だということ。

2011/04/08

access2010 Webデータベース その15 セルフレポーティング

access servicesサイトといえどもSharePoint2010サイトの一部なので、PowerPivot for Excelを使ってユーザ各自がデータ整理を行うことができる。Atom形式フィードとか小難しいことは専門の人にお任せして、サイトに発行されたWebテーブルのデータを参照しピボットテーブルを作成するまでの流れ。当然だが、ユーザがデータにアクセスする権限を持っていることは必要なはず。

サービスのURLは、
http://ServerName/SiteName/_vti_bin/listdata.svc

2011/04/07

access2010 アプリケーションパーツ その9 パーツを作る、再び

アプリケーションパーツを自分用のツールとして作る手順、再び。
自分用といっても、生成されたaccdtを配布することは別にかまわないけど。コピーするだけでよいし。


2011/04/06

access2010 Webデータベース その14 ユーザ/グループ管理

SharePoint上のAccess Services Siteのユーザ/グループの管理を設定してみる。
サイトの権限とユーザ管理はSharePointに任せて、ApplicationメソッドのCurrentWebUserGroupsとCurrentWebUserを用いてユーザ情報を確認し、フォームなどの詳細な制御に使えばいい。
ユーザ情報を都度確認する必要はないだろうから、起動時に取得してTempVarsコレクションに格納してしまえばよいだろう。
Access Services サイトの権限

2011/04/05

access2010 TempVars/LocalVars/ReturnVarsコレクション

TempVarsコレクションは、access2007でも使える。Access共有のコレクションだからマクロとVBAの間でデータ交換に使用することができる。TempVarオブジェクトはVariantなのだけどObjectは格納できない。要は数値か文字列であるということ。また、TempVarsオブジェクトを一旦作成すると、データベースを閉じるかTempVarオブジェクトを削除するまでデータは保持される。Publicな変数みたいなのだけど、実行時エラーが発生しても失われることがない変数という感じ。使いどころとしては、ユーザログイン情報など持ちまわりたい情報を格納するのに向いていると思う。以前のバージョンだとデータの一時保存用にフォーム上のテキストボックスを使っていたものの代わりになるでしょ。
TempVars!var_name
TempVars(index)
TempVars("var_name")

2011/04/03

access2010 パッケージソリューションウィザード その14 レジストリ設定番外

accecc2010/64+Win7/64でパッケージソリューションウィザードを使って配布ファイルを作った時のメモ
システムドライブを選択しすべてのユーザで使いたい

HKLMを選択したい
としても、インストールを実行するとレジストリは、
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Office\14.0\Access\Security\Trusted Locationsに書き込まれる。だが、access2010/64は、信頼できる場所の情報としてそれを参照しない。access2010/64が参照するのは、HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\14.0\Access\Security\Trusted Locationsなので配布したaccessファイルは信頼できる場所にないということになる。

2011/04/02

access2010 Webデータベース その13 クライアントで動作させないためには

特に制限をしない限り、以下のオプションを実行することでローカル上にダウンロードされクライアント上で実行されることになる。

既定のアクセス許可によって、各オブジェクトの更新や追加はできないようにすることはできる。しかし、ローカル上での実行/更新/追加はできるから望ましくないとすることはありうる。accdeでの運用はできないからソース丸出しだしになるし。
オンプレミスSharePoint Serverなら中をごにょごにょして、access servicesのサイトでオプションを非表示にするなどダウンロードできないようにしてしまうのも技術的に可能なのだろうかと。とはいえ、Office365とか流行のクラウドでの運用のほうが多いのかもしれない。となれば、ごにょごにょする手段は取らないだろうし、SharePointのアクセス許可管理で制御するのが本来なのだろう。

2011/04/01