MW211 EXIT

devlog
MSSQL/横棒グラフ
2015年02月14日
┌──────────────────────────────────────┐
│SELECT [キー],                                                              │
│       [値],                                                                │
│       REPLICATE('■', [値]) AS [グラフ]                                    │
│    FROM [表];                                                              │
└──────────────────────────────────────┘
「REPLICATE()」は同じ文字を繰り返す。
分類:MSSQL
MSSQL/sysobjects.xtype
2015年02月10日
「sysobjects.xtype」(「SELECT xtype FROM sysobjects;」)の値は以下の通り。
┌─┬────────────────────────────────────┐
│U │テーブル(ユーザテーブル)                                                │
├─┼────────────────────────────────────┤
│V │ビュー                                                                  │
├─┼────────────────────────────────────┤
│P │ストアドプロシージャ                                                    │
│X │拡張ストアドプロシージャ                                                │
│RF│ストアドプロシージャ/レプリケーションフィルタ                          │
├─┼────────────────────────────────────┤
│FN│ストアドファンクション[スカラー型]                                      │
│TF│ストアドファンクション[テーブル型]                                      │
│IF│ストアドファンクション[インラインテーブル型]                            │
├─┼────────────────────────────────────┤
│TR│トリガ                                                                  │
├─┼────────────────────────────────────┤
│PK│主キー制約                                                              │
│UQ│一意制約                                                                │
│F │外部キー制約                                                            │
│C │チェック制約                                                            │
│D │既定値制約                                                              │
├─┼────────────────────────────────────┤
│S │システムテーブル                                                        │
│IT│内部テーブル                                                            │
│SQ│サービスキュー                                                          │
├─┼────────────────────────────────────┤
│PC│ストアドプロシージャ/アセンブリ(CLR)                                   │
│FS│ストアドファンクション[スカラー型]/アセンブリ(CLR)                     │
│FT│ストアドファンクション[テーブル型]/アセンブリ(CLR)                     │
│TA│トリガ/アセンブリ(CLR)                                                 │
│AF│集計関数(CLR)                                                           │
├─┼────────────────────────────────────┤
│L │ログ                                                                    │
│SN│シノニム                                                                │
│TT│テーブルの種類                                                          │
└─┴────────────────────────────────────┘
分類:MSSQL
MSSQL/日時変換
2015年02月09日
「datetime」型を変換する代表例。
┌──────────────────────────────────────┐
│CONVERT(nvarchar, [日時], 108) → hh:mm:ss                                  │
│CONVERT(nvarchar, [日時],  11) → yy/mm/dd                                  │
│CONVERT(nvarchar, [日時], 111) → yyyy/mm/dd                                │
│CONVERT(nvarchar, [日時],  12) → yymmdd                                    │
│CONVERT(nvarchar, [日時], 112) → yyyymmdd                                  │
└──────────────────────────────────────┘

例えば、日時で絞る場合、現在時刻より前で絞ると以下のようになる。
┌──────────────────────────────────────┐
│WHERE [日時] < getdate()                                                    │
└──────────────────────────────────────┘
当然ながら、現在時刻より前であれば本日分も抽出される。

これを前日以前で比較するには以下のような感じに互いに変換してしまえばよい。
┌──────────────────────────────────────┐
│WHERE CONVERT(nvarchar, [日時], 112) < CONVERT(nvarchar, getdate(), 112)    │
└──────────────────────────────────────┘
分類:MSSQL
Windows/WINSとは?
2015年02月08日
「Windows Internet Naming Service」の略。

Windowsネットワークのコンピュータ名をIPアドレスに変換する。

WINSサーバが必要となる。
#Windows版のDNSサーバみたいなもの

WINSサーバは、Windows NTサーバもしくはSambaとなる。
分類:Windows
ExcelVBA/Continue文
2015年02月07日
ExcelVBAではContinue文がない。

純粋構造化プログラムの原則に従ってIf文で対処となるが、
とはいえ、Continue文は便利だ。

で、これは禁断のGoTo文で代替するのが最善のようだ。
┌──────────────────────────────────────┐
│For文                                                                       │
│    If 条件 Then                                                            │
│        GoTo Continue                                                       │
│    End If                                                                  │
│    処理                                                                    │
│Continue:                                                                   │
│Next                                                                        │
└──────────────────────────────────────┘

純粋に処理の流れ通りなら、「Continue:」ラベルは前の方がよいかもしれない。
┌──────────────────────────────────────┐
│For文                                                                       │
│Continue:                                                                   │
│    If 条件 Then                                                            │
│        GoTo Continue                                                       │
│    End If                                                                  │
│    処理                                                                    │
│Next                                                                        │
└──────────────────────────────────────┘
しかし、前方へのGoTo文を許すのは、Continue文代替に限ってとしても、
それこそ禁断中の禁断ともいえる(後方ならまだスパゲティコードは避けられる)

よって、前出の対応の方がよいのではないだろうか。
分類:ExcelVBA
MSSQL/エラーログにSQL発行状況を出力
2015年02月04日
SQLの発行状況をリアルタイムでエラーログに出力する方法。

まず、稼働中のインスタンス名を調べる。
「サービス」の「プロパティ」を参照すると
「サービス名」にインスタンス名が表示されている
→例えば「MSSQL$■」

次に、エラーログの位置を調べる。
例えば以下の辺り。
┌──────────────────────────────────────┐
│C:\Program Files\Microsoft SQL Server\MSSQL12.■\MSSQL\Log\ERRORLOG         │
└──────────────────────────────────────┘

準備が出来たら、調査開始。

MSSQLの以下のフラグをONに設定する。
・T3605=トレース結果をエラーログ出力
・T4032=コマンド(SQL文)をトレースする
「T3605」は設定済みなので「T4032」だけ設定し直す

コマンドプロンプト(管理者権限)で、以下の様に停止し再起動する。
┌──────────────────────────────────────┐
│>net stop MSSQL$■                                                          │
│SQL Server (■) サービスを停止中です.                                       │
│SQL Server (■) サービスは正常に停止されました。                            │
│                                                                            │
│>net start MSSQL$■ /T4032                                                  │
│SQL Server (■) サービスを開始します..                                      │
│SQL Server (■) サービスは正常に開始されました。                            │
└──────────────────────────────────────┘

次に「SQL Server Management Studio」以下のコマンドを実行する。
┌──────────────────────────────────────┐
│dbcc traceon(3605, -1)                                                      │
└──────────────────────────────────────┘

これで、ログにコマンド(SQL文)がエラーログにリアルタイムで出力される。

終了するには以下のコマンドを実行する。
┌──────────────────────────────────────┐
│dbcc traceoff(3605, -1)                                                     │
└──────────────────────────────────────┘
フラグも元に戻したい場合には、MSSQL再起動(サーバ再起動)など
分類:MSSQL
MSSQL/FROM句によるUPDATE文
2015年02月03日
  まず、「UPDATE」文による更新先(出力表)と、「FROM」句による更新元(入力表)は
  以下の様に条件式で結合してあげないと、何を何で更新するのか
  訳が分からなくなり正しく動作しない。
┌──────────────────────────────────────┐
│UPDATE [出力表]                                                             │
│    SET [列] = [入力表].[列]                                                │
│    FROM [入力表]                                                           │
│    WHERE [入力表].[キー] = [出力表].[キー];                                │
└──────────────────────────────────────┘
    以下だと更新されたが意図した更新はできない。
  ┌────────────────────────────────────┐
  │UPDATE [出力表]                                                         │
  │    SET [列] = [入力表].[列]                                            │
  │    FROM [入力表]                                                       │
  └────────────────────────────────────┘
    どうも[入力表]の一件目ですべてを更新したりしているようだが(たまたまか)。
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  但し、更新先と更新元が同じ場合は、同じ表を操作することになるので結合条件不要。
┌──────────────────────────────────────┐
│UPDATE [出力表]                                                             │
│    SET [列] = [出力表].[列]                                                │
│    FROM [出力表]                                                           │
│    WHERE [出力表].[キー] = [出力表].[キー];                                │
├──────────────────────────────────────┤
│UPDATE [出力表]                                                             │
│    SET [列] = [出力表].[列]                                                │
│    FROM [出力表];                                                          │
└──────────────────────────────────────┘
  (これだと更新により値が変わらないので意味がないが、原則として覚えておく)

  なお、「FROM」句の表が一つであれば、別名をつけることもできる。
┌──────────────────────────────────────┐
│UPDATE [出力表]                                                             │
│    SET [列] = [別名].[列]                                                  │
│    FROM [出力表] AS [別名];                                                │
└──────────────────────────────────────┘
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  自己結合で「FROM」句に複数の更新先(出力表)が出現する場合は
  そのうちどれが「UPDATE」文の更新先(出力表)と一致するのか明示する必要があり
  「UPDATE」文は「AS」で別名をつけられない経緯からして
  「FROM」句側もどれか一つ別名をつけないものを用意する必要がある。
┌──────────────────────────────────────┐
│UPDATE [出力表]                                                             │
│    SET [列] = [別名].[列]                                                  │
│    FROM [出力表],                                                          │
│         [出力表] AS [別名]                                                 │
│    WHERE [別名].[キー] = [出力表].[キー];                                  │
└──────────────────────────────────────┘

  上記はOKだが、以下はお互いに譲り合ってる(別名を名乗ってる)のでNG。
┌──────────────────────────────────────┐
│UPDATE [出力表]                                                             │
│    SET [列] = [別名2].[列]                                                 │
│    FROM [出力表] AS [別名1],                                               │
│         [出力表] AS [別名2]                                                │
│    WHERE [別名2].[キー] = [別名1].[キー];                                  │
├──────────────────────────────────────┤
│UPDATE [出力表]                                                             │
│    SET [列] = [別名2].[列]                                                 │
│    FROM [出力表] AS [別名1]                                                │
│        INNER JOIN [出力表] AS [別名2]                                      │
│          ON [別名2].[キー] = [別名1].[キー];                               │
└──────────────────────────────────────┘
  「INNER JOIN」なら回避できるかと思ったが、やっぱりそれもNG。

  但し、「UPDATE」文で別名を(定義するのではなく)使用するという荒業もある。
┌──────────────────────────────────────┐
│UPDATE [別名1]                                                              │
│    SET [列] = [別名2].[列]                                                 │
│    FROM [出力表] AS [別名1],                                               │
│         [出力表] AS [別名2]                                                │
│    WHERE [別名2].[キー] = [別名1].[キー];                                  │
└──────────────────────────────────────┘
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
  従ってまとめると、一件以下の「WHERE」句が必要な気がしないでもないが
  [別名]と[出力表]は(実体として)同じ表なので、必要ないということになる。
┌──────────────────────────────────────┐
│UPDATE [出力表]                                                             │
│    SET [列] = [入力表].[列]                                                │
│    FROM [出力表] AS [別名]                                                 │
│        INNER JOIN [入力表]                                                 │
│          ON [入力表].[キー] = [別名].[キー]                                │
│    WHERE [別名].[キー] = [出力表].[キー];                                  │
├──────────────────────────────────────┤
│UPDATE [出力表]                                                             │
│    SET [列] = [入力表].[列]                                                │
│    FROM [出力表] AS [別名]                                                 │
│        INNER JOIN [入力表]                                                 │
│          ON [入力表].[キー] = [別名].[キー];                               │
└──────────────────────────────────────┘
分類:MSSQL
ソフトウェアフレームワーク
2015年02月02日
┌─────┬─────────┬──────────────────────┐
│Perl      │□Amon2           │                                            │
│          │□Ark             │                                            │
│          │□Catalyst        │                                            │
│          │□Dancer          │                                            │
│          │□Mojolicious     │                                            │
├─────┼─────────┼──────────────────────┤
│PHP       │□Bullet          │                                            │
│          │■CakePHP         │                                            │
│          │■CodeIgniter     │                                            │
│          │□eZ Publish      │                                            │
│          │□Flight          │                                            │
│          │■FuelPHP         │                                            │
│          │□KohanaPHP       │                                            │
│          │□Limonade        │                                            │
│          │□Nette Framework │                                            │
│          │□Phalcon         │                                            │
│          │□PHPixie         │                                            │
│          │□PRADO           │                                            │
│          │□Silex           │                                            │
│          │□Slim            │                                            │
│          │■Symfony         │                                            │
│          │□Yaf             │                                            │
│          │□Yii             │                                            │
│          │■Zend Framework  │                                            │
│          │□Laravel         │                                            │
├─────┼─────────┼──────────────────────┤
│Python    │□Bottle          │                                            │
│          │■Django          │                                            │
│          │□Flask           │                                            │
│          │□Karrigell       │                                            │
│          │□Pylons          │                                            │
│          │□Pyramid         │                                            │
│          │□Quixote         │                                            │
│          │□Tornado         │                                            │
│          │□TurboGears      │                                            │
│          │□Twisted         │                                            │
│          │□web2py          │                                            │
├─────┼─────────┼──────────────────────┤
│Ruby      │□Merb            │                                            │
│          │□Padrino         │                                            │
│          │■Ruby on Rails   │                                            │
│          │□Sinatra         │                                            │
├─────┼─────────┼──────────────────────┤
│JavaScript│□AngularJS       │                                            │
│          │□Backbone.js     │                                            │
│          │□Knockout.js     │                                            │
├─────┼─────────┼──────────────────────┤
│Java      │■Apache Struts   │                                            │
│          │□Apache Wicket   │                                            │
│          │□Dropwizard      │                                            │
│          │□JSF             │                                            │
│          │□Ninja Framework │                                            │
│          │□Play Framework  │                                            │
│          │■Spring Framework│                                            │
│          │□ZK              │                                            │
└─────┴─────────┴──────────────────────┘
分類:IT全般
設計/長音符の省略
2015年02月01日
「コンピューター」「プリンター」「サーバー」「ユーザー」は、
「コンピュータ」「サーバ」「ユーザ」なのかという話。

「JIS Z8301:2005」より前までは以下のルールで末尾の長音符を省略としていた。
┌──────────────────────────────────────┐
│・(末尾の長音符号なしで)3音以上の場合には末尾に長音符号を付けない           │
│  →「プリンタ」                                                            │
│・(末尾の長音符号なしで)2音以下の場合には末尾に長音符号を付ける             │
│  →「カバー」                                                              │
│・複合語はそれぞれの成分語について適用する                                  │
│  →「モータカー」                                                          │
│・(文中の)長音符号・撥音(ん)・促音(っ)は1音扱いとして上記を適用する         │
│  →「サーバ」「ダンパ」「ニッパ」                                          │
│・拗音(ゃ・ゅ・ょ)は1音扱いとしないで上記を適用する                         │
│  →「シャワー」                                                            │
└──────────────────────────────────────┘
但し、「JIS Z8301:2005」において、省略してもしなくても
どちらでもよいことになった。

なお、1991年6月28日の内閣告示第二号「外来語の表記」にて
「長音は、原則として長音符号「ー」を用いて書く」とされた。
マイクロソフトは2008年、これに従って表記法を変更した。

いずれにしろ各社の対応はまちまちのようである。
分類:設計
Excel/下線の影響範囲
2015年01月24日
「Ctrl+End」で全範囲の末端まで移動する場合、
通常は文字が入力されているところまで移動する。

下線の場合も、下線のセル、つまり下線の上の行まで移動する。

ところが、下線の中でも以下の下線については、
その下線の下まで移動してしまう。
  ・二重線
  ・太線(一番太い線)

恐らく、下のセルまで(跨いで)影響のある線ということなのだろう。

微妙な盲点だ。
分類:Excel
前へ 1 … 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 … 156 次へ