Get-ChildItem z:\ -Recurse -Include *.iso,*.exe |?{!$_.PSIscontainer} #isoとexeを集める
Get-ChildItem z:\ -Recurse -Include *.iso,*.exe| ?{!$_.PSIscontainer}| Group length #ファイルサイズでグループ
Get-ChildItem z:\ -Recurse -Include *.iso,*.exe |?{!$_.PSIscontainer} #isoとexeを集める
Get-ChildItem z:\ -Recurse -Include *.iso,*.exe| ?{!$_.PSIscontainer}| Group length #ファイルサイズでグループ
そうもいかないときもあるのでしょう
x86だとリダイレクトっていうことっすか。とはいえ、mdbに情報を入れていきたいから、なんとかx64で情報収集してmdbに渡していく。
$files = Get-ChildItem|?{!$_.PSIsContainer}| Select-Object Name, DirectoryName, LastWriteTime $files | ConvertTo-Csv -NoTypeInformation > test.csv
できれば、Accessデータベースに直接出力したいなと。
折角なので、PowerShellの勉強しつつ、そのメモ
$MyInvocation.MyCommand.Name $MyInvocation.MyCommand.Path Split-Path $MyInvocation.MyCommand.Path Get-Item Env: $env:SystemRoot $env:ProgramFiles $env:ProgramW6432 "${Env:ProgramFiles(x86)}" $env:ComSpec $env:OS $env:USERPROFILE Get-WmiObject Win32_OperatingSystem| Select-Object Caption,CSDVersion,OSArchitecture (Get-WmiObject Win32_OperatingSystem).OSArchitecture -match "64"
December 2011 Office Update Release
Description of the Office 2010 update: December 13, 2011
無事にUpdateされてるようだし。
ブラウザ上からだとどうにもいかなくて、さぁてどうしたものかと思っていたのだけど、SharePointDesigner2010(SPD2010)から削除することができた。Access ServicesサイトはSPD2010では管理できないと思っていたから最後の手段で試してみたら、さらっと削除できて少々拍子抜け。
SharePoint Designer 2010
SharePointな方とお話しする機会があって、久しぶりに触っておこうと思ったりしたので、サインアップからWebデータベースが使えるようになるまでの手順というかキャプチャしていった記録。試用においてはクレジットカードとか情報は特に必要もなかったので、気楽に試してみてもいいかなと思った。
Office365
各フォーラムでもけっこうあるあるトピックだし、できれば以前のファイル形式をを使わないでおきたいかなと思う次第。ないものは仕方がない、似たものを実装するしかないわけで。
起動時にユーザ名とパスワードを照合するってことは、ユーザ情報テーブルからユーザ名 And パスワードを条件にすればよいからまぁよいかなと思う。あとはフォームであるとかコマンドボタンの制御をどうしていくかなって感じ。
そこで、例としてコマンドボタンの使用可否をユーザ毎に操作してみようと考えた。
できるだけマクロで、定義域集計関数を使わずに、できるだけAccess2010もしくはAccess2007の機能を使いつつ。
なにはともあれ、こんな感じのコマンドボタンを制御していくことにする。名前は判りやすいようにしているけれども、見ての通りビット演算でさらっと処理予定。
いろいろ試していて遅い原因はいくつかありそうな気がしたのだけど、特にクエリがあれだ。Jetあたりに問題があろうかと思えて仕方がない。そこで、Win7SP1(64)上でaccess2003がどんな感じになるのかなと検証。64bitを選択したのに深い意味はない。うっかりしてただけ。Win7のSPも公開されてしばらくしたし、ナントカ電機で安く売ってた夏モデルを買ってきたら64bitだったというシナリオというのもありがちかなと。
過去のシングルコアマシンと最新マルチコアマシンで比べたら、非力なシングルコアの方が速かったということもあるし。
XP+a2003 / Win7+a2003 / Win7+a2007 で比較などしてみた。いずれも、SPはすべてあててある。Hotfixはあてていない。マシンはすべて同じ条件
こんな感じなものをどうしたらいいかと試行錯誤中
dynamicMenuを使ってフォームを列挙したい。getContentで要求されるXMLをLINQでごによごにょしてずばっとできるかなと。
<dynamicMenu id="FormEnum" label="フォーム" getContent="getContent" invalidateContentOnDrop="true" />
レポートグループフッタで改ページを指定すると1ページ多く出力される件。
こんな感じであるとき |
Access2010については、3件。
Description of the Access 2010 hotfix package (Ace-x-none.msp): October 25, 2011
これはなんだろう。Excelとの関係っぽいけど、何か困ったことはない。Description of the Access 2010 hotfix package (Vbe7-x-none.msp): October 25, 2011
SP1にしてからクラッシュする件についての修正Description of the Access 2010 hotfix package (Access-x-none.msp): October 25, 2011
レポートのフィルタが効かない件は解った。レポートをrtf形式でエクスポートするとき用紙方向が保存されない?
とりあえず、クラッシュする件だけどうするかかな。
Description of the 2007 Office suite SP3 and of Office Language Pack 2007 SP3
内容がよくわからない。後で確認してみよう
ざっくり、見てみた。
Images on buttons are not aligned correctly when you open a database in Access 2010
a2010以前のバージョン製造したファイルでボタンコントロールにイメージを埋め込んでいる場合、見た目の調子悪いよということ。
こんな感じになるってことでしょうか。これについては、Accessのオプション→カレントデータベース→Pictureプロパティの保存形式で対応。ビットマップに変換するオプションを選んでいるとこうなる。a2010上でボタンコントロールを配置しなおしたりすると直るような気もする。
a2007以降bmp以外のイメージを表示できるから変換しない方がよいと思うけど。
bmp変換とした場合、都合が悪い場合が別途ある。
access2010のパッケージソリューションウィザードで出力したインストールファイルは、ちょっとダメな子で、信頼できる場所に関するレジストリが2007仕様になっている。そこで、ウィザード中に正確な追加レジストリを設定してあげると問題なくインストールに使用できるのだけど、もともと生成されているレジストリ情報はそのままだからそれを更新してしまおうという魂胆。ウィザード設定ファイルに残るわけではないから、ちゃちゃっとすませたいときにでも使おうかな。
14.0 であるべきなのに 12.0 になってる。これを更新する。
例えば、AllowBypassKeyとか。いちいちコードを書くとかコピペするのをやめてもいいかなと。VBAのコードをそのまま移植する場合、TryしてCOMExceptionをCatchって感じなのだろうけど、へそ曲がりなのとLINQ to Objectがなんだか面白いのでちょっとあれこれ。
Core Tabのうち通常表示されるタブ(TabHomeAccess / TabCreate / TabExternalData / TabDatabaseTools)をまとめてしまう。それだけでもすっきりする。
メニューで折りたたんだだけともいう。
この件の修正がSP1に含まれていないのでしばらくの間はFAQになってしまうんだろうなと。で、対応としてVBAで実行すればいいじゃないとなるのだけど、マクロのままでなんとかならないのかということだった。マクロだけで簡単に対応できるよっていう話。意外と知らない人が多いんだなぁと。
タブの間を行ったり来たりを自分好みに調整という感じで。最終的には組み込みタブの TabHomeAccess / TabCreate / TabExternalData / TabDatabaseTools をまとめたいかなと。ちょっと機能を加えながら。
どうすべきなのだろうか整理しながら考える。あれこれ調べてちょこっと確認中、NativeWindowクラスを使ってWindowsメッセージを監視することになりそうな感じ。
CustomTaskPaneの表示非表示に連動するリボンコントロールにはdynamicMenuを使用。invalidateContentOnDropで更新に手間がかからないから。
コマンドのオーバーライドをアプリケーションレベルで実装。
<commands> <command idMso="FileCompactAndRepairDatabase" onAction="cmdActionOverride"/> </commands>
最適化/修復コマンドをオーバーライド
正式なサポートではないようだけど開発環境のカスタマイズということができそうだしやってみている。なにができそうなのかなと。
- UIカスタマイズ
Office2010でリボンUIをアプリケーションレベルでカスタマイズできるのだけれども、もう少し突っ込んだカスタマイズができそう。アドインの有効無効で切り替えができることがよいかな。
- カスタムコマンド実装/コマンドのオーバーライド
カレントデータベースを閉じてそして開くとか、最適化実行前にバックアップを取るとか、データベースプロパティの編集とか。アプリケーションパーツで実装できることもあるけどたまに不安定なことあるし。
とりあえず必要なものは、Visual StudioとVSTOテンプレート
テンプレートは、
Visual Studio 2010 - VSTO (VB) Access 2010 Template/Joao Livio { MIX ~ UP on USA}
Visual Studio 2008/Access2007用のテンプレートはCodoPlexに。
VSTO/VB.NetでAccessアプリケーションアドインを自分用にいじっているのだけど、VBAでもさっくり使えたらなぁと思ったら使えたのでメモ。サロゲートペアも1カウントする。
正規表現もありか。。。
group要素の属性 autoScale と image
アプリケーションウィンドウを狭くしていったときの挙動みたいなもの。
<group id="ObjectGroup" label="Create Objects" autoScale="true" imageMso="CreateTable">
と、した場合どうなっていくか。
で、どうした。って感じだけど。
ACEに対するHotFix(KB2553116)を試してみた。
Win7(32)+access2010(32)で、5,000,000レコードから約5000レコード選択しソートする作業を100回繰り返した。テーブルやクエリで同様の事を実施してもやたら遅くなるようなことは見当たらなかった。いい感じかな。
ただ、HotFixなので導入は慎重にしないとならない。 SP2ってどう考えても来年だろう。
Access2010については、2件
Description of the Access 2010 hotfix package (access-x-none.msp): August 30, 2011
Description of the Access 2010 hotfix package (Ace-x-none.msp): August 30, 2011
いずれもSP1適用済みが前提。
1件目のAccessに対する修正は、日本で使う限り気にすることはない。2件目ACEに対する修正はクエリに時間がかかることに対する修正。
access2007についてだけど、
Description of the Office Access 2007 hotfix package (Ace-x-none.msp, Access-x-none.msp): August 30, 2011
ACEに対するHotFixがある。
Win7もしくはWin2008R2の環境においてクエリ実行完了までに時間がかかるということだろう。
access2010ではあるが、確かにXP上であれば10000msを頭打ちで実行完了することが経験的に判っていて、Win7上では120s超を要することがある結果は得ていた。きっとaccess2007でも同じなのだろう。access2010用のHotFixが得られたら確認してみよう。
Description of the Access 2010 hotfix package (access-x-none.msp): June 28, 2011
これに含まれる修正は次の通り。
カスタムActiveXコントロールとadpサーバフィルタの件があるけど確認はしない。
- 非連結コントロールに規定値プロパティ(DefaultValue)が設定されているとき、コントロールをNull/""にすることができない。
- インポート/エクスポートの定義を使用したインポートエクスポートマクロアクションが失敗する。
そういえば、トランザクション使うことでパフォーマンスがあがったっけなと使ってみたのだけど、どの程度効果があるのか改めて確認してみた。最近のH/Wのスペックはかなりよいはずから気にすることもないのかなと思っていたけど、思いのほか効果はあるようだ。
要はSP1でコンパイル済みとするとRTMでは動きませんよということ。RTMでコンパイル済みととした場合、64bitSP1では動きません。ということか?
あぁ、確かに表通りになった。 ついでに32bitSP1がクラッシュするようになった。あばばばぁ 。とりあえず様子見て修復インストールしてみるか。
リンクテーブルであれこれしたときトラフィックは発生するのだけど、思ってたほどではないなと思った。きっちりフィルタしておけばよいか。でも、接続情報が平文というのがネック。
楽観的同時実行制御ってこと。ODBCリンクテーブルで使えるなら、まぁなくてもいい話
CREATE TABLE dbo.table01 ( ID int IDENTITY NOT NULL, F01 nvarchar(20) COLLATE Japanese_CI_AS NOT NULL, TS timestamp NOT NULL, CONSTRAINT PK_table01 PRIMARY KEY CLUSTERED ( ID ASC ) ) GO CREATE UNIQUE NONCLUSTERED INDEX idx_F01 ON dbo.table01 ( F01 ) GO
さらっと作ったテーブルのフィールドは一意であることにしてみた
ローカルのtimestamp最大値を引数として渡し、比較することで更新追加されたレコードを取得する目論見。
名前の付け方にいつも悩む。そしていつも後悔。
テーブルの種類用途によってはリンクテーブルではなくてもよいのではないか。多分ローカルテーブルを使ってやりくりは転送料にかかわらずでてくるだろうから、任意のタイミングでSQL Azureとローカルのテーブル同期ができればよいということもあるだろう。
この二つのテーブルを同期させたい。といっても一方通行だけど。
元ネタは、Accessウィンドウをディスクトップの中央に表示する(hatena chips)
マルチモニタ環境で使いたかったので。だけどデュアルモニタまでしか確認してない。
OCBCの再表示の間隔 で設定された時間経過時に、表示されているレコードセットの表示は最新の内容に更新される。これは Requery ではない。
1500秒 = 25分なのだけど、SQL Azureは時間経過しているアイドルな接続を切断してくることがあるはずだからそのあとの表示レコードセットの更新が行われるのだろうか?だけど、これは確かめる予定はない。同時実行制御を考えるべきだと思うから。
まぁ、便利かなと。移行先がSQL Azureである場合、SSMSではGUIが使えないから横着な私には便利。完全に仕上げるにはSSMSでぐりぐりっと手直しは当然必要なのだけど、SQL Azureを理解していくうえでAccessでの設定がSQL Azureではどのようになるのか見比べながらっていうことをちょっとやってみたりできるしなと。
ColumnのCollationを設定できればなぁと思うのだけど、設定するところやその方法は見つからない。SSMAである程度のところまで作っておいてSSMSで最後手直しして、それ以降の調整はいずれにせよSSMSってことでしょうか。
AccessからSQL Azure直接ではなく、Access→オンプレミスSQL Server(en仕様)→SQL Azureっていう段取りもよいのかな。
データ型の変換マッピングがこんな感じで。プロジェクトごとのデフォルト設定ができる。
プロジェクト内でソーステーブルごとに変更もできる。以下、設定項目
最新のSSMAは、Accessから直接SQL Azureにマイグレーションできるようになっているので、必ず更新しておく。何はともあれ作業の開始。
ウィザードでやってしまってもよいのだけど、どう考えてもうまくいくわけがないので、ウィザードを使用しないで進めてみる。
SQL Azureを試してみる環境が整ったのであれこれしてみる。SQL AzureはSQL Server2008ベースというのをどこかで読んだ。クラウド上のSQL Serverっつーことなので、これをバックエンドとすることでインターネットに接続されていればデータの共有が可能ってことになる。SQL Azure+Access+インターネットが揃えばさらっと始められる。
セキュリティについては、SQL Server認証/SQL Azureファイアウォール/暗号化通信(Encrypt=True) 。まずはクライアント側は固定IPが良いかな。 セキュリティとか気にするならそもそも選択しなければいい。割り切っていこう。
SQL Azureを使うのにおいくら必要なのか。料金表を見ると、従量課金プラン容量1GBで1000円程。これに加えてデータ転送量約17円/GB、上り分は課金されない。運用など間接コスト踏まえれば高くはないかな。つか、安い場合もある。
とりあえず必要なツールとかのリンク。基本的には新しいものを使う。
SQL Server Management Studio(SSMS)
SQL Server Migration Assistant(SSMA) for Access
SQL Server Native Client
SQL Server 2008 R2 自習書シリーズ
Windows Azure Platform
SQL Azure(MSDN)
Webデータベースだけということではなくて、SharePointリストリンクテーブルのレプリケーションについて。SharePointリストとの同期はAccessの中の人が組み込みの処理で実行してくれるのからお任せの方向でよいのだけど、処理途中でサーバへの接続が切れてしまったらどうなるのだろうということ。
Accessのオプション→カレントデータベースにこのようなプロパティがある。各々の効果についてはやってみれば明白だからよいとして、SharePointリストのリンクテーブルはキャッシュが肝になっている。これがなかなか高速で、以前のバージョンに比べると使用するのにあまり抵抗感がなくなってきていると思う。まぁこれはいいか。
そこで、クライアントサイド(DAO)とサーバサイド(Named DataMacro)でレコード(SharePointアイテム)を追加していくとき、接続が切れたらどうなるのかを見ておく。
'A Set rs = dbs.OpenRecordset("select * from tbl01 WHERE Code = 1000 Order by FDate DESC;") 'B Set rs = dbs.OpenRecordset("select * from tbl01 WHERE Code = 1000;") rs.Sort = "FDate DESC" Set rs = rs.OpenRecordset
以前の投稿で触れていた内容だろう。Access 2010 SP1 – You receive random crashes in certain database or when opening the VBA window in those databases after installing Office 2010 SP1
VBEがクラッシュしますよという現象。バックアップとってデコンパイルしてねと言っている。Access 2010 SP1 – Reports that are opened programmatically are no longer showing the expected filtered set of records
Openイベントでレコードソースを設定や変更をしているレポートを開く場合、WhereConditionが適用されないってことだった。